实验答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

针对stu数据库中的student、course和sc三个表实现以下查询:

(1)求计算机系的学生学号和姓名;

SELECT sno,sname

FROM students.student

WHERE sdept='cs'

说明:只需要在FROM语句中指明表所属架构即可(架构为dbo的可以省略)

(2)求选修了课程的学生学号;

SELECT DISTINCT sno

FROM students.sc

(3)求选修01 课程的学生学号和成绩;

SELECT sno ,grade

FROM students. sc

WHERE cno='01'

(4)查询所有学生的姓名、生日(这一列要有别名birthday);

SELECT sname,2011-sage birthday

FROM students.student

(5)求成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;SELECT sno ,grade*0.75

FROM students.sc

WHERE grade BETWEEN 80 AND 90

(6)求姓张的学生的信息;

SELECT *

FROM students.student

WHERE sname like '张%'

(7)求缺少了成绩的学生的学号和课程号;

SELECT sno ,cno

FROM students.sc

WHERE grade IS NULL

(8)查询学生所在的系,即不重复的系。

SELECT distinct sdept

FROM students.student

针对stu数据库中的student、course和sc三个表实现以下查询:

(1)求选修1号课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;

SELECT sno ,grade

FROM students. sc

WHERE cno='1'

ORDER BY grade DESC ,sno ASC

说明:ASC可以省略

(2)求计算机系和数学系的姓张的学生的信息;

SELECT *

FROM students.student

WHERE sdept in ('cs','ma') and sname like '张%'

(3)求选修课程1号且成绩在80-90 之间的学生学号和成绩;

SELECT sno ,grade

FROM students.sc

WHERE cno ='1' and grade BETWEEN 80 AND 90

(4)求学生的总人数;

SELECT count(*)

FROM students.student

(5)求选修了课程的学生人数;

SELECT count(DISTINCT sno)

FROM students.sc

(6)求课程的课程号和选修该课程的人数;

SELECT cno, count(*) 选修人数

FROM students.sc

GROUP BY cno

(7)求选修课超过2门课的学生学号,并按照课程数降序排列;

SELECT sc.sno

FROM students.sc

GROUP BY sc.sno

HAVING count(*)>=2

Order by count(*) desc

(8)求各个系男学生的人数,并按学生的人数升序排序。

SELECT sdept,count(*)

FROM students.student

Where ssex=’男’

Group by sdept

Order by count(*)

第六次试验连接查询

针对stu数据库中的student、course和sc三个表实现以下查询:

(1)求学生的学号、姓名、选修的课程名及成绩;

SELECT student.sno,sname,cname,grade

FROM students.student,students.sc,students.course

WHERE student.sno=sc.sno and o=o

或者

SELECT student.Sno,sname, cname,grade

FROM students.student INNER JOIN students.sc ON

student.sno=sc.sno INNER JOIN students.course ON o=o

(2)求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩;

SELECT student.sno,sname,grade

FROM students.student INNER JOIN students.sc ON student.sno=sc.sno WHERE cno='1' and grade>90

(3)查询每一门课的先修课,包括课程号、课程名、先修课程号和先修课程名;

SELECT o,ame,o,ame

FROM students.course course1,students.course course2

WHERE course1.cpno=o

(4)查询每个学生的基本信息以及他(她)所选修的课程的课程号(包括没有选课的

学生)。

SELECT student.sno,sname,ssex,sage,sdept,cno,grade

FROM students.student LEFT OUTER JOIN students.sc ON

student.sno=sc.sno

(5)求课程的课程号、课程名和选修该课程的人数;

SELECT o,cname, count(*) 选修人数

FROM students.course INNER JOIN students.sc ON o=o GROUP BY o, cname

(6)求选修课超过2门课的学生学号、姓名。

SELECT sc.sno,sname

FROM students.student INNER JOIN students.sc ON student.sno=sc.sno GROUP BY sc.sno,sname

HAVING count(*)>=2

相关文档
最新文档