实验答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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