数据库实验五
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
selectsname,student.sno,sdept,o,grade
fromsc,student,course
wherecname='数学'orcname='大学英语'andstudent.sno=sc.sno
20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;
select*
fromStudent
whereSdept='CS'
intersectselect*
fromStudent
whereSage!>19
select*
fromStudent
whereSdept='CS'
exceptselect*
fromCourse,SC,Student
o=oandSC.Sno=Student.Sno
13.查询只被一名学生选修的课程的课程号、课程名;
o'课程号',ame'课程名'
fromCourse,SC
o=o
fromStudent
whereSage!>19
21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;
selectdistinctStudent.*
fromCourse,SC,Student
whereStudent.Snoin(o='1')union
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
select学号=student.sno,姓名=sname,所在院系=sdept,已修学分=sum(ccredit)
fromsc,student,course
wheregrade>60andstudent.sno=o=o
fromStudent
whereStudent.Sdept<>'CS'andStudent.Sage<any
(selectStudent.Sage
fromStudent
whereStudent.Sdept='CS')
17..使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
selectStudent.Sname,Student.Sage,Student.Sdept
(selectcnofromstudentscwheresname='张力'andstudent.sno=sc.sno))
10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;
selectStudent.Sno,Student.Sname,Student.Ssex,Student.Sage
fromStudent,SC,Course
in(o
fromStudent,SC
whereStudent.Sno=SC.SnoandStudent.Sname='张向东'
)
15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
selectdistinctStudent.Sno,Student.Sname
fromStudent,Course,SC
whereStudent.Sno=o=oand(ame='数据库'o='数据结构')
11.至少选修“数据库”或“数据结构”课程的学生的基本信息;
selectsc.sno,sname,sdept,sage,ssex
fromsc,student,course
select*
fromcourse
wherecnamelike'数据\_%s__'
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;
selectsname,student.sno,o,cname
fromstudent,course,sc
wheresnamelike'%小_'andstudent.sno=o=o
5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
8.列出只选修一门课程的学生的学号、姓名、院系及成绩;
14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;
15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
16.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
17.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生;
18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;
selectdistinctStudent.*
fromCourse,SC,Student
whereStudent.Snoin(o='2')
22.思考题:按照课程名顺序显示各个学生选修的课程(如200515001数据库数据结构数学);selectsno,
wheresc.sno=student.sno
o=o
andcnamein('数据库','数据结构')
12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
o,ame,Student.Sno,Student.Sname,SC.Grade
存档编号
数学与计算机科学学院
实验编号
5
实验名称
实验五:数据库综合查询
实验课时
主要设备(或软件等)
Sql2008
实验类型
实验日期
一、实验目的
1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握查询条件种类和表示方法;
3.掌握连接查询的表示及使用;
4.掌握嵌套查询的表示及使用;
5.了解集合查询的表示及使用。
casecnamewhen'数据库'thengradeelseNULL
endas数据库,
casecnamewhen'数据结构'thengradeelseNULL
endas数据结构,
casecnamewhen'数学'thengradeelseNULL
endas数学,
casecnamewhen'人工智能'thengradeelseNULL
二、实验环境
已安装SQL Server 2005企业版的计算机(13台);
具有局域网环境,有固定IP;
三、实验学时
2学时
四ቤተ መጻሕፍቲ ባይዱ实验要求
1.了解SELECT语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.了解嵌套查询的表示及使用;
4.了解集合查询的表示及使用;
5.完成实验报告;
五、实验内容及步骤
以数据库原理实验5数据为基础,请使用T-SQL语句实现进行以下操作:
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;
3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
4.查询缺少成绩的所有学生的详细情况;
fromStudent
whereStudent.Sdept=(selectStudent.Sdept
fromStudentwhereStudent.Sname='张力')andStudent.Sname<>'张力'
selects1.*
fromStudents1,Students2
wheres1.Sno=s2.Snoands1.Sdeptin(selectStudent.Sdept
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;selectsname,student.sno,平均成绩=AVG(grade)
fromstudent,sc
wherestudent.sno=sc.sno
groupbystudent.sno,sname
havingAVG(grade)>(selectAVG(grade)fromstudent,scwheresname='张力')
4.查询缺少成绩的所有学生的详细情况;
select*
fromsc,student
wheregradeisnullandsc.sno=student.sno
5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
select*
fromstudent
wheresage<>(selectsagefromstudentwheresname='张力')
groupbystudent.sno,sname,sdept
8.列出只选修一门课程的学生的学号、姓名、院系及成绩;
select学号=student.sno,姓名=sname,院系=sdept,成绩=grade,cno
fromstudent,sc
wherestudent.sno=sc.snoandsc.snoin
whereStudent.Sno=o
in(o
fromSC,Course
o=ame='数据结构'
)
16.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生;
selectStudent.Sname,Student.Sage,Student.Sdept
(selectsnofromscgroupbysc.snohavingcount(distinctcno)=1)
9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
select学号=student.sno,姓名=sname,课程号=cno
fromsc,student
wherestudent.sno=sc.snoandsc.snoin(selectsc.snofromsc,studentwherecnoin
o,o,ame
havingcount(o)=1
14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;
selectdistinctStudent.Sno,Student.Sname
fromStudent,SC
whereStudent.Sno=o
fromStudentwhereStudent.Sname='张力')ands1.Sname<>'张力'
19.使用集合查询列出CS系的学生以及性别为女的学生名单
select*
fromStudentwhereSdept='CS'union
select*
fromStudentwhereSsex='女';
9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;
11.至少选修“数据库”或“数据结构”课程的学生的基本信息;
12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
13.查询只被一名学生选修的课程的课程号、课程名;
fromStudent
whereStudent.Sdept<>'CS'andStudent.Sage<any
(selectStudent.Sage
fromStudent
whereStudent.Sdept='CS')
18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;
select*
19.使用集合查询列出CS系的学生以及性别为女的学生名单;
20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;
21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;
22.思考题:按照课程名顺序显示各个学生选修的课程(如200515001数据库数据结构数学);
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
endas人工智能,
casecnamewhen'大学英语'thengradeelseNULL
endas大学英语,
casecnamewhen'数据处理'thengradeelseNULL
selectsname,student.sno,sdept,o,grade
fromsc,student,course
wherecname='数学'orcname='大学英语'andstudent.sno=sc.sno
20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;
select*
fromStudent
whereSdept='CS'
intersectselect*
fromStudent
whereSage!>19
select*
fromStudent
whereSdept='CS'
exceptselect*
fromCourse,SC,Student
o=oandSC.Sno=Student.Sno
13.查询只被一名学生选修的课程的课程号、课程名;
o'课程号',ame'课程名'
fromCourse,SC
o=o
fromStudent
whereSage!>19
21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;
selectdistinctStudent.*
fromCourse,SC,Student
whereStudent.Snoin(o='1')union
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
select学号=student.sno,姓名=sname,所在院系=sdept,已修学分=sum(ccredit)
fromsc,student,course
wheregrade>60andstudent.sno=o=o
fromStudent
whereStudent.Sdept<>'CS'andStudent.Sage<any
(selectStudent.Sage
fromStudent
whereStudent.Sdept='CS')
17..使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
selectStudent.Sname,Student.Sage,Student.Sdept
(selectcnofromstudentscwheresname='张力'andstudent.sno=sc.sno))
10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;
selectStudent.Sno,Student.Sname,Student.Ssex,Student.Sage
fromStudent,SC,Course
in(o
fromStudent,SC
whereStudent.Sno=SC.SnoandStudent.Sname='张向东'
)
15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
selectdistinctStudent.Sno,Student.Sname
fromStudent,Course,SC
whereStudent.Sno=o=oand(ame='数据库'o='数据结构')
11.至少选修“数据库”或“数据结构”课程的学生的基本信息;
selectsc.sno,sname,sdept,sage,ssex
fromsc,student,course
select*
fromcourse
wherecnamelike'数据\_%s__'
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;
selectsname,student.sno,o,cname
fromstudent,course,sc
wheresnamelike'%小_'andstudent.sno=o=o
5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
8.列出只选修一门课程的学生的学号、姓名、院系及成绩;
14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;
15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
16.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
17.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生;
18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;
selectdistinctStudent.*
fromCourse,SC,Student
whereStudent.Snoin(o='2')
22.思考题:按照课程名顺序显示各个学生选修的课程(如200515001数据库数据结构数学);selectsno,
wheresc.sno=student.sno
o=o
andcnamein('数据库','数据结构')
12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
o,ame,Student.Sno,Student.Sname,SC.Grade
存档编号
数学与计算机科学学院
实验编号
5
实验名称
实验五:数据库综合查询
实验课时
主要设备(或软件等)
Sql2008
实验类型
实验日期
一、实验目的
1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握查询条件种类和表示方法;
3.掌握连接查询的表示及使用;
4.掌握嵌套查询的表示及使用;
5.了解集合查询的表示及使用。
casecnamewhen'数据库'thengradeelseNULL
endas数据库,
casecnamewhen'数据结构'thengradeelseNULL
endas数据结构,
casecnamewhen'数学'thengradeelseNULL
endas数学,
casecnamewhen'人工智能'thengradeelseNULL
二、实验环境
已安装SQL Server 2005企业版的计算机(13台);
具有局域网环境,有固定IP;
三、实验学时
2学时
四ቤተ መጻሕፍቲ ባይዱ实验要求
1.了解SELECT语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.了解嵌套查询的表示及使用;
4.了解集合查询的表示及使用;
5.完成实验报告;
五、实验内容及步骤
以数据库原理实验5数据为基础,请使用T-SQL语句实现进行以下操作:
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;
3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
4.查询缺少成绩的所有学生的详细情况;
fromStudent
whereStudent.Sdept=(selectStudent.Sdept
fromStudentwhereStudent.Sname='张力')andStudent.Sname<>'张力'
selects1.*
fromStudents1,Students2
wheres1.Sno=s2.Snoands1.Sdeptin(selectStudent.Sdept
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;selectsname,student.sno,平均成绩=AVG(grade)
fromstudent,sc
wherestudent.sno=sc.sno
groupbystudent.sno,sname
havingAVG(grade)>(selectAVG(grade)fromstudent,scwheresname='张力')
4.查询缺少成绩的所有学生的详细情况;
select*
fromsc,student
wheregradeisnullandsc.sno=student.sno
5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
select*
fromstudent
wheresage<>(selectsagefromstudentwheresname='张力')
groupbystudent.sno,sname,sdept
8.列出只选修一门课程的学生的学号、姓名、院系及成绩;
select学号=student.sno,姓名=sname,院系=sdept,成绩=grade,cno
fromstudent,sc
wherestudent.sno=sc.snoandsc.snoin
whereStudent.Sno=o
in(o
fromSC,Course
o=ame='数据结构'
)
16.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生;
selectStudent.Sname,Student.Sage,Student.Sdept
(selectsnofromscgroupbysc.snohavingcount(distinctcno)=1)
9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
select学号=student.sno,姓名=sname,课程号=cno
fromsc,student
wherestudent.sno=sc.snoandsc.snoin(selectsc.snofromsc,studentwherecnoin
o,o,ame
havingcount(o)=1
14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;
selectdistinctStudent.Sno,Student.Sname
fromStudent,SC
whereStudent.Sno=o
fromStudentwhereStudent.Sname='张力')ands1.Sname<>'张力'
19.使用集合查询列出CS系的学生以及性别为女的学生名单
select*
fromStudentwhereSdept='CS'union
select*
fromStudentwhereSsex='女';
9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;
11.至少选修“数据库”或“数据结构”课程的学生的基本信息;
12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
13.查询只被一名学生选修的课程的课程号、课程名;
fromStudent
whereStudent.Sdept<>'CS'andStudent.Sage<any
(selectStudent.Sage
fromStudent
whereStudent.Sdept='CS')
18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;
select*
19.使用集合查询列出CS系的学生以及性别为女的学生名单;
20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;
21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;
22.思考题:按照课程名顺序显示各个学生选修的课程(如200515001数据库数据结构数学);
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
endas人工智能,
casecnamewhen'大学英语'thengradeelseNULL
endas大学英语,
casecnamewhen'数据处理'thengradeelseNULL