实验报告数据库.docx
《实验报告数据库.docx》由会员分享,可在线阅读,更多相关《实验报告数据库.docx(32页珍藏版)》请在冰豆网上搜索。
![实验报告数据库.docx](https://file1.bdocx.com/fileroot1/2023-1/23/cdc7f89a-1a8a-4bf5-b091-728bb9b03ebb/cdc7f89a-1a8a-4bf5-b091-728bb9b03ebb1.gif)
实验报告数据库
实验报告
课程名称:
数据库系统原理及技术
实验名称:
数据查询
《数据库系统原理及技术》实验报告
课程名称:
数据库系统原理及技术
实验项目名称:
数据查询实验类型:
验证型
一、实验目的和要求
1.掌握SELECT语句的基本语法。
2.掌握子查询的表示。
3.掌握连接查询的表示。
4.掌握SELECT语句的统计函数的作用和使用方法。
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。
二、实验内容和原理
启动SQLServer查询分析器,利用SQL语句进行查询。
三、实验环境(软硬件及配置)
Windows2000sqlserver2000
四、实验步骤(含实验结果及分析)
1.简单查询
SELECTsno,sname,sex,birthday
FROMstudent
SELECTsno,sname,CAST(GETDATE()-birthdayASint)/365
ASage
FROMstudent
SELECTsno,sname,sex,birthday
FROMstudent
WHEREdno='6100'
SELECTsno,sname,birthday
FROMstudent
WHEREspno='0805'ANDclassno='0202'
SELECTsno,sname,sex,birthday
FROMstudent
WHEREbirthday>'1989-03-28'
SELECT*
FROMteacher
WHEREpno<>'4'
SELECTsno,sname
FROMstudent
WHEREsnameLIKE'李%'
SELECTsno,sname
FROMstudent
WHEREsnameLIKE'李__'
SELECTsno,sname
FROMstudent
WHEREsnameLIKE'[王黄]%'
SELECTsno,sname,sex,birthday
FROMstudent
WHERE(dno='6100')AND(birthday>'1989-01-01')
SELECT*
FROMstudent
WHEREnativeNOTLIKE'榆林%'
SELECT*
FROMstudent
WHERECAST(GETDATE()-birthdayASint)BETWEEN6500AND7600
SELECTsno,sname,sex,spno
FROMstudent
WHEREspnoIN('0804','0805'')
SELECTsno,sname,sex,birthday
FROMstudent
ORDERBYbirthdayASC
SELECTsno,sname,sex,birthday,dno
FROMstudent
ORDERBYdno,birthdayDESC
SELECTsno,sname,sex,birthday,dno
FROMstudent
ORDERBY5,4DESC
SELECTDISTINCTnative
FROMstudent
WHEREdno='6100'
SELECTsnoAS学号,snameAS姓名,sexAS性别
FROMstudent
go
SELECTTOP3sno,score
FROMstudent_course
WHEREtcid='1'ORDERBYscoreDESC
SELECTCOUNT(*)AS信工学院学生人数
FROMstudent
WHEREdno='6100'
SELECTCOUNT(*)AS信工学院女学生人数FROMstudentWHEREdno='6100'ANDsex='女'
SELECTAVG(score)AS平均分,MAX(score)AS最高分,MIN(score)AS最低分FROMstudent_courseWHEREtcid=1
SELECTtcidAS课程号,AVG(score)AS平均分,MAX(score)AS最高分,MIN(score)AS最低分FROMstudent_courseGROUPBYtcidORDERBYAVG(score)DESC
2.连接查询
SELECTdistinctsnoFROMstudent_courseWHEREid='1'orid='2'
SELECTsnoFROMstudent_courseWHEREtcid='1'
UNIONSELECTsnoFROMstudent_courseWHEREtcid='2'
SELECTsc.snoAS'学号',snameAS'姓名',ameAS'不及格课程'
FROMstudentASst,student_courseASsc,teacher_courseAStc,courseAScr
WHEREsc.score<60ANDsc.sno=st.snoANDsc.tcid=tc.tcidANDo=o
SELECTsc.snoAS'学号',snameAS'姓名',COUNT(*)AS'没有及格的门数'
FROMstudent_courseASsc,studentASst
WHEREscore<60ANDst.sno=sc.snoGROUPBYsc.sno,snameHAVINGCOUNT(*)>1
SELECTst.sno,st.sname,ame,sc.score
FROMstudentASst,courseAScs,student_courseASsc,teacher_courseAStc
WHEREst.sno=sc.snoANDsc.tcid=tc.tcidANDo=o
SELECTst.sno,sname,SUM(credit)AS总学分
FROMstudentASst,student_courseASsc,courseAScs,teacher_courseAStcWHEREscore>60ANDst.sno=sc.snoANDsc.tcid=tc.tcidANDo=o
GROUPBYst.sno,sname
SELECTst.sno,sname,cname,score,credit
FROMstudentASst,student_courseASsc,courseAScs,teacher_courseAStc
WHEREst.sno=sc.snoANDsc.tcid=tc.tcidANDo=oANDst.sname='张海丽'
3.嵌套查询
SELECTsno,sname,birthday
FROMstudent
WHEREdno=(SELECTdnoFROMstudentWHEREsname='李红豆')
SELECTsc.sno,sname,score
FROMstudentASst,student_courseASsc
WHEREsc.tcidIN(SELECTtcidFROMteacher_courseWHEREcno='H61030006')
ANDscore>=(SELECTAVG(score)FROMstudent_course
WHEREtcidIN(SELECTtcidFROMteacher_courseWHEREcno='H61030006'))
ANDst.sno=sc.sno
SELECTtop3withtiessc.snoAS'学号',st.snameAS'姓名',AVG(score)AS'平均分'
FROMstudent_courseASsc,studentASst
WHEREsc.snoIN(SELECTsnoFROMstudentWHEREdno='610000')ANDsc.sno=st.sno
GROUPBYsc.sno,st.snameORDERBY'平均分'DESC
SELECTsno,snameFROMstudentWHEREEXISTS(SELECT*FROM
student_courseASscWHEREsc.sno=student.snoANDtcid='2')AND
EXISTS(SELECT*FROMstudent_courseASscWHEREsc.sno=student.snoANDtcid='2')
SELECTsno,sname
FROMstudent
WHERENOTEXISTS(SELECT*FROMstudent_courseASsc
WHEREstudent.sno=sc.snoANDtcid='1')
SELECTsno,snameFROMstudentWHEREEXISTS
(SELECT*FROMstudent_courseASscWHEREstudent.sno=sc.snoANDtcidIN
(SELECTtcidFROMteacher_courseAStcWHEREo=
(SELECTcnoFROMcourseWHEREcname='数据结构')))
SELECTsno,sname
FROMstudentASst
WHERENOTEXISTS
(SELECT*FROMstudent_courseASsc
WHEREscore<80ANDst.sno=sc.sno)
ANDEXISTS
(SELECT*
FROMstudent_course
WHEREst.sno=sno)
SELECTDISTINCTst.sno,sname
FROMstudentASst,student_courseASsc
WHEREst.sno=sc.snoANDsc.snoNOTIN
(SELECTDISTINCTsno
FROMstudent_courseASsc
WHEREscore<80)
四、实验作业题
1.SELECT语句的基本使用
(1)根据实验2给出的数据表的结构,查询每个职工的职工号、姓名、缺勤天数信息。
(2)查询职工号为001的职工的姓名和缺勤天数。
(3)查询所有姓“李”的职工的职工号、缺勤理由。
(4)找出所有缺勤天数在2~3天之间的职工号。
2.SELECT语句的高级查询使用
(1)查询缺勤名称为“病假”的职工的职工号和姓名。
(2)查找缺勤天数为2天的职工的职工号和缺勤名称。
(3)查询“事假”的总人数。
(4)求各缺勤类别的人数。
(5)将各职工的考勤情况按缺勤天数由高到低排序。
五、实验小结
1.通过实验我了解了表的更新操作,即数据的插入、修改和删除,对表数据的操作可以在企业管理器中进行,也可以由T-SQL语句实现。
2.掌握T-SQL中用于对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE或TRANCATETABLE)命令的用法。
六、教师评语和成绩
教师签名:
年月日