关于SQL(数据库)的题目,求帮忙

假设学生一课程数据库关系模式如下:
学生关系S(S#,SNAME,SEX,,AGE)
学习关系SC(S#,C#,GRADE)
课程关系C(C#,CNAME,TEACHER)
\用SQL语句实现如下查询
(1),查找课程名包含“数据库”的课程信息
(2)检索选修课程名称为“MATHS“的学生学号与姓名
(3)统计各学生选修的课程门数,输出学号和课程门数
用关系代数完成如下查询
(4)查找学号为03240115学生的姓名和年龄
(5)查询学生王芳的”数据库原理“课的成绩。

(1)SELECT * FROM C WHERE CNAME LIKE '%数据库%'
(2)
SELECT a.[S#],a.SNAME FROM S a 
LEFT JOIN SC b ON a.[S#] = b.[S#] 
LEFT JOIN C ON b.[C#] = c.[C#] 
WHERE c.CNAME = 'MATHS'
(3)
SELECT a.[S#],a.SNAME,SUM(CASE WHEN ISNULL(b.C#,'') = '' THEN 0 ELSE 1 END) AS [课程门数] FROM S a 
LEFT JOIN SC b ON a.[S#] = b.[S#]
GROUP BY a.[S#],a.SNAME
(4)SELECT SNAME,AGE FROM S WHERE [S#] = '03240115'
(5)
SELECT b.GRADE FROM S a 
LEFT JOIN SC b ON a.[S#] = b.[S#] 
LEFT JOIN C ON b.[C#] = c.[C#] 
WHERE c.CNAME = '数据库原理' AND a.SNAME = '王芳'

是不是要这样?

追问

一个是要求用数据库语言实现,一个是要求用关系代数实现。
还有你用的a,b,c是什么,我是新手不是很明白,能不能不用a,b,c写一下答案。谢谢

追答

抽了点时间去看了下这个关系代数问题,研究了下,应该是这样的,我怎么感觉我读书时没学过这东西呢,奇怪,难道上课没听。。。

(4)πSNAME,AGE(σS#='03240115'(S))

(5)πGRADE(πS#,GRADE(σCNAME='C语言'(C) ~ SC)  ~ σSNAME='王芳'(S))

自然连接符打不出来,波浪号代替

追问

你学习能力真强,看一下就会了,谢谢了。但那个a.b.c到底是什么啊,我好像不懂

追答

简单说a,b,c的意思就是给表弄个简称,然后在查询语句中用简称代表原来的表名
比方说一个简单的查询语句
SELECT a.* FROM 表 a
这里a就是代表查询的表,a.*代表查表的所有字段

不用啊a,b,c的话,比方
SELECT S.[S#],S.SNAME FROM S
LEFT JOIN SC ON S.[S#] = SC.[S#]
LEFT JOIN C ON SC.[C#] = C.[C#]
WHERE C.CNAME = 'MATHS'

温馨提示:答案为网友推荐,仅供参考
相似回答