实验数据库综合查询.docx
- 文档编号:6420190
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:16
- 大小:168.37KB
实验数据库综合查询.docx
《实验数据库综合查询.docx》由会员分享,可在线阅读,更多相关《实验数据库综合查询.docx(16页珍藏版)》请在冰豆网上搜索。
实验数据库综合查询
实验:
数据库综合查询
一、实验目的
1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握查询条件种类和表示方法;
3.掌握连接查询的表示及使用;
4.掌握嵌套查询的表示及使用;
5.了解集合查询的表示及使用。
二、实验环境
已安装SQLServer2005企业版的计算机;
具有局域网环境,有固定IP;
三、实验学时
2学时
四、实验要求
1.了解SELECT语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.了解嵌套查询的表示及使用;
4.了解集合查询的表示及使用;
5.完成实验报告;
五、实验内容及步骤
以《实验:
数据库单表查询数据》为基础,请使用T-SQL语句实现进行以下操作:
1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;
usestu
go
select*fromcourse
wherecnamelike'DB%s__'
go
2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;
usestu
go
selectsnameas姓名,student.snoas学号,sdeptas院系,
cnoas课程号,gradeas成绩
fromstudent,sc
wherestudent.sno=sc.snoandstudent.snamelike'_阳%'
go
3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;
usestu
go
selectstudent.snoas学号,snameas姓名,sdeptas院系,
oas课程号,gradeas成绩
fromstudent,sc,course
wherestudent.sno=sc.snoando=oand
amein('数学','大学英语')
go
4.查询缺少成绩的所有学生的详细情况;
usestu
go
selectstudent.snoas学号,snameas姓名,ssexas性别,
sageas年龄,sdeptas院系
fromstudent,sc
wherestudent.sno=sc.snoandsc.gradeisnull
go
5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;
usestu
go
selectstudent.snoas学号,snameas姓名,ssexas性别,
sageas年龄,sdeptas院系
fromstudent
wheresagenotin(selectsagefromstudentwheresname='张力')
go
6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;
usestu
go
selectstudent.snoas学号,snameas姓名,
avg(grade)as平均成绩
fromstudent,sc
groupbystudent.sno,sc.sno,student.sname
havingstudent.sno=sc.snoandavg(grade)>(selectavg(grade)
fromsc,studentwherestudent.sno=sc.snoand
student.sname='张力')
go
7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;
usestu
go
selectstudent.snoas学号,snameas姓名,
sdeptas所在院系,sum(casewhengrade>60thenccredit
else0end)
as已修学分
fromstudent,course,sc
wherestudent.sno=sc.snoando=o
groupbystudent.sno,student.sname,student.sdept
go
8.列出只选修一门课程的学生的学号、姓名、院系及成绩;
usestu
go
selectsc.snoas学号,snameas姓名,
sdeptas院系,gradeas成绩
fromstudent,sc
wherestudent.sno=sc.snoand
sc.snoin(selectsnofromsc
groupbysno
havingCOUNT(sno)=1)
go
9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;
usestu
go
selectsc.snoas学号,snameas姓名,
cnoas课程号
fromstudentinnerjoinsc
onstudent.sno=sc.sno
whereoin(selectofrom
studentinnerjoinsc
onstudent.sno=sc.sno
wheresname='张力')
andsname!
='张力'
go
10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;
usestu
go
selectstudent.snoas学号,
snameas姓名,
sdeptas院系
fromstudent,sc,course
wherestudent.sno=sc.sno
ando=o
andoin
(selecto
fromsc,course
where
o=o
andcname='数据库'
intersect
selecto
fromsc,course
where
o=o
andcname='数据结构')
groupbystudent.sno,sname,sdept
havingcount(student.sno)=2
go
11.至少选修“数据库”或“数据结构”课程的学生的基本信息;
usestu
go
selectstudent.snoas学号,
snameas姓名,
sdeptas院系
fromstudent,sca,scb
wherestudent.sno=a.snoandstudent.sno=b.sno--ando=o
andoin(selectcnofromcoursewherecname='数据库')
andoin(selectcnofromcoursewherecname='数据结构')
go
12.列出所有课程被选修的详细情况,包括课程号、课程名、学号、姓名及成绩;
usestu
go
selectoas课程号,
cnameas课程名,
student.snoas学号,
gradeas成绩
fromstudent,sc,course
wherestudent.sno=sc.sno
ando=o
orderbyo
go
13.查询只被一名学生选修的课程的课程号、课程名;
usestu
go
selectoas课程号,
cnameas课程名
fromsc,course
whereo=o
groupbyo,cname
havingcount(o)=1
go
14.检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;
usestu
go
selectstudent.snoas学号,
snameas姓名
fromstudentinnerjoinsc
onstudent.sno=sc.sno
wherecnoin(selectcno
fromstudentinnerjoinsc
onstudent.sno=sc.sno
wheresname='张向东')
andsname!
='张向东'
go
15.使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;
usestu
go
selectstudent.sno学号,
sname姓名
fromstudent
wherestudent.sno=sc.sno
andcnoin(selectcno
fromcoursewherecname='数据结构')
go
16.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;
usestu
go
selectsname姓名,
sage年龄,
sdept院系
fromstudent
wheresage FROMstudent WHEREsdept='CS') ANDSdept<>'CS' Go 17.使用ANY、ALL查询,列出其他院系中比CS系所有学生年龄小的学生; usestu go selectsname姓名, sage年龄, sdept院系 fromstudent wheresage FROMstudent WHEREsdept='CS') ANDSdept<>'CS' Go usestu go selectsname姓名, sage年龄, sdept院系 fromstudent wheresage FROMstudent WHEREsdept='CS') ANDSdept<>'CS' Go 18.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息; usestu go selectsno学号, sname姓名, sage年龄, sdept院系, ssex性别 fromstudent wheresdeptin(selectsdeptfromstudentwheresname='张力') go usestu go selectb.sno学号, b.sname姓名, b.sage年龄, b.sdept院系, b.ssex性别 fromstudenta,studentb wherea.sname='张力'anda.sdept=b.sdept go 19.使用集合查询列出CS系的学生以及性别为女的学生名单; usestu go SELECT* FROMstudent WHEREsdept='CS' INTERSECT SELECT* FROMstudent WHEREssex='女' Go 20.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集; usestu go SELECT* FROMstudent WHEREsdept='CS' EXCEPT SELECT* FROMstudent WHEREsage<=19 Go usestu go SELECT* FROMstudent WHEREsdept='CS' INTERSECT SELECT* FROMstudent WHEREsage<=19 Go 21.使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集; usestu go selectstudent.snoas学号, snameas姓名, ssexas性别, sdeptas系别 fromstudent,sc wherestudent.sno=sc.snoandcno='1' intersect selectstudent.snoas学号, snameas姓名, ssexas性别, sdeptas系别 fromstudent,sc wherestudent.sno=sc.snoandcno='2' 六、出现问题及解决办法 如: 某些查询操作无法执行,如何解决?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数据库 综合 查询
![提示](https://static.bdocx.com/images/bang_tan.gif)