数据库的关系代数问题

数据库的关系代数问题,第1张

[例]设教学数据库中有3个关系:

学生关系S(SNO,SNAME,AGE,SEX)

学习关系SC(SNO,CNO,GRADE)

课程关系C(CNO,CNAME,TEACHER)

下面用关系代数表达式表达每个查询语句。

(1) 检索学习课程号为C2的学生学号与成绩。

πSNO,GRADE(σ CNO='C2'(SC))

(2) 检索学习课程号为C2的学生学号与姓名

πSNO,SNAME(σ CNO='C2'(SSC))

由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影 *** 作。

此查询亦可等价地写成:

πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC)))

这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。

(3)检索选修课程名为MATHS的学生学号与姓名。

πSNO,SANME(σ CNAME='MATHS'(SSCC))

(4)检索选修课程号为C2或C4的学生学号。

πSNO(σ CNO='C2'∨CNO='C4'(SC))

(5) 检索至少选修课程号为C2或C4的学生学号。

π1(σ1=4∧2='C2'∧5='C4'(SC×SC))

这里(SC×SC)表示关系SC自身相乘的乘积 *** 作,其中数字1,2,4,5都为它的结果关系中的属性序号。

希望能解决您的问题。

//自己把中文替换成英文字段名 我用的sql server数据库

select 学号、姓名、性别、年龄、所在系 from 学生 order by 年龄 desc, 学号 asc

select 学号,姓名 from 学生 where 姓名 in( select 姓名 from 学生 group by 姓名 having count()>1 )

update 成绩 set 成绩=0 where CNO=1

如果/不是除法的话 只是字符串 (除法暂时有问题)下班了 明天再来写

select C课程号,D课程名,D成绩 from COURSE C,(

select CONVERT(VARCHAR(50),A排名)+'/'+CONVERT(VARCHAR(50),BZS) as '排名/人数',a学号,a课程名,a成绩 FROM (

select ROW_NUMBER() over(partition BY 课程名 order by 成绩 desc) as 排名 , from GRADE where 学号='1') A,

(SELECT COUNT() as zs,课程名

FROM GRADE group by 课程名 ) B where a课程名=b课程名) D WHERE C课程名=D课程名

1:insert into student values('990012','梅立松',20,'女')

2: delete sc where sno=(select sno from student where name='夏春秋')

3: update SC set grade=grade(1+20%) where cno =(select cno from course where cname='英语')

1)SELECT ssno, scgrade

FROM (s INNER JOIN sc ON ssno = scsno) INNER JOIN c ON sccno = ccno

WHERE (((ccno)="c2"));

2)SELECT ssno, ssname

FROM (s INNER JOIN sc ON ssno = scsno) INNER JOIN c ON sccno = ccno

WHERE (((ccno)="c2"));

3)SELECT ssno, ssname

FROM (s INNER JOIN sc ON ssno = scsno) INNER JOIN c ON sccno = ccno

WHERE (((ccname)="maths"));

4)SELECT ssno

FROM (s INNER JOIN sc ON ssno = scsno) INNER JOIN c ON sccno = ccno

WHERE (((ccno)="c2")) OR (((ccno)="c4"));

5)SELECT ssname, ssag

FROM (s INNER JOIN sc ON ssno = scsno) INNER JOIN c ON sccno = ccno

WHERE (((ccno)<>"c2"));

1、CREATE TABLE [学生]

(

[学号] [char](8) NOT NULL,

[姓名] [char](4) NULL,

[性别] [char](1) NULL,

[出生日期] [date] NULL,

[班级] [char](3) NULL,

CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED

(

[学号] ASC

)

WITH

(

PAD_INDEX = OFF, TATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON

)

ON [PRIMARY]

)

ON [PRIMARY]

2、insert into 成绩 values('95031','3-105','90')

3、update 成绩 set 成绩=成绩+5 where 课程号 ='3-105'

4、所有记录指的是每张表的记录吗?如果是单一查询成绩表中的数据使用:

select from 成绩 where 成绩 between '60' and '80'

关联其他表可以用

select from 表名 where 字段 in(select 对应字段 from 成绩 where 成绩 between '60' and '80')

1、第一范式:保证列的原子性

第二范式:当复合主键时,非主键字段必须与主键字段有直接依赖

第三范式:非主键字段不能有直接依赖关系

2、

create dababase 学生信息管理

呵呵

1)

SELECT StudentSName,CourseCname,SCScore

FROM SC

LEFT JOIN Student ON SCSNo = StudentSNo

LEFT JOIN Course ON SCCNo = CourseCNo

WHERE StudentSNo = '20080101'

2)

UPDATE Student SET SAge = SAge + 2

3

INSERT INTO Student(SNo, SName, SAge, SDept) VALUES ('20080102', '李汉', '20', 'soft')

以上就是关于数据库的关系代数问题全部的内容,包括:数据库的关系代数问题、跪求大神帮帮忙!!!有一个【学生选修课】数据库,数据库中包括三个表,学生表,课程表,成绩表、急!关于数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9475336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存