实验4 SQL语言——SELECT查询操作
不再列出。
[例3] 查以”MIS_”开头,且倒数第二个汉字为“导”字的课程的详细情况。
SELECT * FROM Course
WHERE Cname LIKE ’MIS#_%导_’ ESCAPE ’#’;
[例4] 查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno) /* 加DISTINCT 去掉重复值后计数 */
FROM SC;
[例5] 查询计算机系(CS)选修了2门及以上课程的学生的学号。
SELECT Student.Sno
FROM Student,SC
WHERE Sdept='CS' AND Student.Sno=SC.Sno
GROUP BY Student.Sno HAVING COUNT(*)>=2;
[例6] 查询Student表与SC表的广义笛卡尔积。
Select Student.*,SC.*
From Student,SC;
或 Select Student.*,SC.*
From Student Cross Join SC;
[例7] 查询Student表与SC表基于学号SNO的等值连接。
Select *
From Student,SC
WHERE Student.Sno=SC.Sno;
[例8] 查询Student表与SC表基于学号SNO的自然连接。
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
FROM Student, SC WHERE Student.Sno=SC.Sno;
或 SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
FROM Student INNER JOIN SC ON Student.Sno=SC.Sno;
[例9] 查询课程之先修课的先修课(自身连接例)。
SELECT http://www.77cn.com.cno, SECOND.Pcno
FROM Course FIRST, Course SECOND
WHERE FIRST.Pcno=http://www.77cn.com.cno;
我们为Course表取两个别名FIRST与SECOND,这样就可以在SELECT子句和WHERE子句中的属性名前分别用这两个别名加以区分。
[例10] 查询学生及其课程、成绩等情况(不管是否选课,均需列出学生信息)。 SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
FROM Student Left Outer JOIN SC ON Student.Sno=SC.Sno;
3