数据库原理及应⽤实验⼆【单表多表复杂查询<各项操作及语句图解>】⼀、实验⽬的
1.掌握利⽤SQL Server集成化环境向数据库表插⼊、修改和删除记录的⽅法;
2.掌握利⽤T-SQL语句向数据库表插⼊、修改和删除记录的⽅法;
3.掌握利⽤SELECT语句查询数据的⽅法。
⼆、实验步骤
1.使⽤SSMS对数据进⾏操作
(1)现有针对实验⼀中学⽣表、课程表和选课表这3个表的数据记录,如下表所⽰。请在SSMS环境下完成下表数据记录的录⼊。
(2)完成上述3个表的数据记录的录⼊之后,请在SSMS环境下完成某个表中数据记录的查看、修改和删除操作。
2.使⽤T-SQL语句对数据进⾏操作
(1)针对上述的3个数据记录表,使⽤T-SQL语句完成数据记录的插⼊。
(2)针对上述录⼊的3个数据记录表,使⽤T-SQL语句完成某个表中数据记录的修改和删除。
3.使⽤T-SQL语句对数据进⾏单表查询
(1)查询考试成绩⼤于等于 90 的学⽣的学号。
(2)查询年龄⼤于20岁的男学⽣的学号和姓名。
(3)查询年龄⼤于18 岁,并不是信息学院与数理学院的学⽣的姓名和性别。
(4)查询以“计算_”开头,且倒数第⼆个汉字为“组” 字的课程的详细情况。
(5)查询选修了课程的学⽣⼈数。
(6)根据系统当前时间和学⽣年龄,查询学⽣出⽣⽇期(要求以特定输出:年-⽉-⽇)。
(7)求缺少了成绩的学⽣的学号和课程号。
(8)查询全体学⽣情况,结果按所在院系的号升序排列,同⼀院系中的学⽣按年龄降序。
(9)查询选修1003号课程的学⽣最⾼分数。
(10)求各个课程号及相应的选课⼈数。
4.使⽤T-SQL语句对数据进⾏多表查询
(1)查询学⽣及其课程、 成绩等情况(不管是否选课, 均需列出学⽣信息)。
(2)查询性别为男、课程成绩及格的学⽣信息以及课程号、成绩。
(3)查询学习了操作系统课程的学⽣的学号、姓名和所在院系。
(4)查询选修数据结构课程的学⽣的平均分。
(5)查询课程成绩在90分以上的男学⽣的姓名、课程名和成绩。
(6)查询选修 1002 号课程的学⽣中成绩最⾼的学⽣的学号。
(7)查询信息学院选修了2门及以上课程的学⽣的学号。
(8)查询⾄少选修⼀门课程的⼥学⽣姓名。
(9)查询没有⼀门考试科⽬成绩低于85分的学⽣的姓名。
(10)查询学⽣钱横所选修课程成绩⼤于80分的课程号、成绩 。
5.使⽤T-SQL语句对数据进⾏复杂查询
(1)查询与钱横在同⼀个院系学习的学⽣信息。
(2)出同系、 同年龄、 同性别的学⽣。
(3)查询⾄少不学 1003 号和 1004 号课程的学⽣学号与姓名。
(4)查询钱横同学不学的课程的课程号。
(5)查询其他系中⽐信息学院所有学⽣年龄均⼤的学⽣名单,并排序输出
(6)查询只有⼥⽣选读的课程的课程号。
(7)查询选修了全部课程的学⽣姓名。
(8)查询全部学⽣都选修的课程的课程号与课程名。
(9)求年龄⼤于所有⼥同学年龄的男学⽣的姓名和年龄。
(10)统计每门课程的学⽣选修⼈数,超过 2(包含 2)⼈的课程才统计,要求输出课程号和选修⼈数,查询结果按⼈数降序排列,若⼈数相同,按课程号升序排列。
三、实验内容
1.使⽤SSMS对数据进⾏操作
2.使⽤T-SQL语句对数据进⾏操作
(1)针对上述的3个数据记录表,使⽤T-SQL语句完成数据记录的插⼊。
(2)针对上述录⼊的3个数据记录表,使⽤T-SQL语句完成某个表中数据记录的修改和删除。
3.使⽤T-SQL语句对数据进⾏单表查询
(1)查询考试成绩⼤于等于 90 的学⽣的学号。
select Sno from SC where Grade>=90;
(2)查询年龄⼤于20岁的男学⽣的学号和姓名。
select Sno ,Sname from Student where(Sage>23AND Ssex='男');
(3)查询年龄⼤于18 岁,并不是信息学院与数理学院的学⽣的姓名和性别。
select Sname,Ssex from Student where(Sage>18And Sdept not in('IS','MA'));
(4)查询以“计算_”开头,且倒数第⼆个汉字为“组” 字的课程的详细情况。
select*from Course where Cname like'操作系统_%原_';
(5)查询选修了课程的学⽣⼈数。
select COUNT(distinct Sno)from SC;
(6)根据系统当前时间和学⽣年龄,查询学⽣出⽣⽇期(要求以特定输出:年-⽉-⽇)。
select Student.Sno from Student,SC where Sdept='CS'AND Student.Sno=SC.Sno group by Student.Sno having COUNT(*)>=2;
(7)求缺少了成绩的学⽣的学号和课程号。
select SC.Sno,SC.Cno
from SC
where SC.Grade is null
(8)查询全体学⽣情况,结果按所在院系的号升序排列,同⼀院系中的学⽣按年龄降序。
select*from studentorder by Sdept ASC, sage DESC;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论