SQL实验二数据库查询实验报告.docx

上传人:b****6 文档编号:3363626 上传时间:2022-11-22 格式:DOCX 页数:8 大小:287.48KB
下载 相关 举报
SQL实验二数据库查询实验报告.docx_第1页
第1页 / 共8页
SQL实验二数据库查询实验报告.docx_第2页
第2页 / 共8页
SQL实验二数据库查询实验报告.docx_第3页
第3页 / 共8页
SQL实验二数据库查询实验报告.docx_第4页
第4页 / 共8页
SQL实验二数据库查询实验报告.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

SQL实验二数据库查询实验报告.docx

《SQL实验二数据库查询实验报告.docx》由会员分享,可在线阅读,更多相关《SQL实验二数据库查询实验报告.docx(8页珍藏版)》请在冰豆网上搜索。

SQL实验二数据库查询实验报告.docx

SQL实验二数据库查询实验报告

实验二数据库的查询实验

实验目的和要求

(1)掌握SQLServer查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。

(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

实验内容和原理

在实验一定义的“学生成绩数据库”中,使用T-SQL语句完成以下查询:

(1)求计算机系学生的学号和姓名。

(2)求选修了数学的学生学号、姓名和成绩。

(3)求选修01课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

(4)查找选修课程的平均成绩位于前三名的学生的学号。

(5)查询计算机系的姓刘且单名的学生的信息。

(6)查询至少选修两门课程的学生学号。

(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。

(8)查询选修“数据库”课程,且成绩在80分以上的学生的学号和成绩。

(9)查询所有姓“王”的同学没有选修的课程名。

(请分别用exists和in完成该查询)

(10)查询选修了全部课程的学生的姓名。

(请至少写出两种查询语句)

(11)求选修了学生“95001”所选修的全部课程的学生学号和姓名。

(12)查询每一门课的间接先修课。

(13)列出所有学生所有可能的选课情况。

(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。

(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。

(请至少写出两种

查询语句)

(16)查询至少被两名男生选修的课程名。

(17)对被两名以上学生所选修的课程统计每门课的选课人数。

要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。

(18)列出选修课程超过3门的学生姓名及选修门数。

(19)检索至少选修课程号为01和03的学生姓名。

(20)检索至少选修课程“数学”和“操作系统”的学生学号。

(21)查询‘操作系统'课程的最高分的学生的姓名、性别、所在系

(22)查询数据结构的成绩低于操作系统的成绩的学生姓名及该生的这两门课的成绩

(23)所有成绩都在70分以上的学生姓名及所在系。

三、实验环境

四、实验方法

1.将查询需求用Transact-SQL语言表示。

2.

在SQLServer查询分析器的输入区中输入

于TSQL语句的执行结果,在结果区中可以有4种不同的输出形式:

标准执行将

结果直接显示在结果区:

网格执行将结果以表格形

式显示在结果区;计划执行显示执行计划;索引分析为在结果区中显示查询的索引情况。

述输出形式,可以通过菜单或按钮选择。

五、调试过程

五、实验结果

六、总结

附录:

--

(1)求计算机系学生的学号和姓名

selectsno,sname

fromstudent

wheresdept='计算机'--

(2)求选修了数学的学生学号、姓名和成绩

selects.sno,sname,grade

wheres.sno二sc.snoandsc.eno二c.enoandcname='数学

学号升序排

--(3)求选修课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按

列。

selectsno,gradefromscwherecno='1'orderbygradedesc,snoasc--(4)查找选修课程的平均成绩位于前三名的学生的学号。

selecttop3snofromscgroupbysnoorderbyavg(grade)desc

--(5)查询计算机系的姓刘且单名的学生的信息。

select*

fromstudent

wheresdept='计算机'andsnamelike'刘_'--(6)查询至少选修两门课程的学生学号。

selectsnofromscgroupbysnohavingcount(*)>=2--(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。

selectsno,cno,grade,最高成绩百分比=grade*100/(selectmax(grade)fromsc)fromsc

selectsno,gradefromcoursec,

--(8)查询选修“数据库”课程,且成绩在分以上的学生的学号和成绩sc

wherecname='数据库'andgrade>80andc.cno=sc.cno

--(9)查询所有姓王”的同学没有选修的课程名。

(请分别用exists和in完成该查询)

--exists方法

selectcname

fromcoursec

wherenotexists

selects.sno

fromstudents,sc

wheres.sno=sc.snoandsnamelike'王%'andc.cno=sc.cno)

--in方法

selectcnamefromcoursecwherecnonotin(

selectcno

fromstudents,sc

wheres.sno=sc.snoandsnamelike'王%'andc.cno=sc.cno)

--(10)查询选修了全部课程的学生的姓名。

(请至少写出两种查询语句)

--法一selectSnamefromstudentswherenotexists

select*fromcoursecwherenotexists

select*

fromsc

wheresno=s.snoandcno=c.cno

selectSnamefromstudentswhere

selectcount(*)

fromsc

wheresno=s.sno

)=(selectcount(*)fromcourse)

--法三selectSnamefromstudentwhereSnoin

selectSnofromscgroupbysno

havingcount(*)=(selectcount(*)fromcourse))

--(11)求选修了学生“”所选修的全部课程的学生学号和姓名selects.sno,snamefromstudents,scwheresc.cnoin

(selectcno

fromsc

wheresno='95001'

)ands.sno=sc.sno

groupbys.sno,sname

havingcount(cno)=(selectcount(cno)

fromsc

wheresno='95001')ands.sno!

='95001'

--(12)查询每一门课的间接先修课。

selectc1.cno,c2.cpno

fromcoursec1,coursec2

wherec1.cpno=c2.cno

--(13)列出所有学生所有可能的选课情况。

selects.sno,s.sname,c.cno,c.cname

fromstudentscrossjoincoursec

--(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。

selects.sno,sc.cno

fromstudentsleftouterjoinsc

ons.sno=sc.sno

--(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。

(请至少写出两种查询语句)

--法一

selectsname

fromstudent

wheresdeptin

selectsdept

fromstudent

wheresname='张三'andssex=(selectssexfromstudentwheresname=张三')

groupbysname

havingsname!

='张三'

selectsnamefromstudentwheresdept=(

selectsdeptfromstudent

sname=

wheresname='张三'andssex=(selectssexfromstudentwhere张三'))groupbysnamehavingsname!

='张三

--(16)查询至少被两名男生选修的课程名。

selectcname

fromcoursec,students,sc

wheressex='男'andc.cno=sc.cnoands.sno=sc.snogroupbycnamehavingcount(*)>=2--(17)对被两名以上学生所选修的课程统计每门课的选课人数。

--要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列selectcno,count(*)as'选修人数'

fromsc

groupbycno

havingcount(*)>2

orderby'选修人数'desc,cnoasc--(18)列出选修课程超过门的学生姓名及选修门数。

selectsname,count(*)as'选修门数'fromstudents,sc

wheres.sno=sc.snogroupbys.sno,snamehavingcount(*)>3

--(19)检索至少选修课程号为和的学生姓名。

selectsname

fromstudent

wheresnoin

selects1.snofromscs1,scs2

wheres1.cno='1'ands2.cno='3'ands1.sno=s2.sno

--(20)检索至少选修课程“数学”和“操作系统”的学生学号。

selectsc.sno

wherec.cname='数学'andc.eno二sc.enoandsnoin

selectsc.sno

fromsc,coursec

wherec.cname='操作系统

'and

c.eno二sc

eno

--(21)查询

操作系统'课程的最高分的学生的姓名、

性别、

所在系

selectsname

ssex,sdept

fromstudents

sc

wheres.sno

and

=sc.sno(grade=

selectmax(grade)

fromcoursec,sc

--(22)查询数据结构的成绩低于操作系统的成绩的学生姓名及该生的这两门课的成绩

select

si.sname,sc1.grade

as'

操作系统成绩',sc2.

gradeas'数据结构成绩

from

courseci

coursec2,

scsei

sc2,studentsi

students2

where

ci.ename

='操作系统'

andc2

.ename='数据结构'

andsei

.grade>sc2.

grade

andsei

.sno二sc2.sno

andci.

eno二sci.eno

and

c2.eno二sc2.eno

andsi.

sno二sci.sno

and

s2.sno二sc2.sno

--(23)所有成绩都在分以上的学生姓名及所在系selectsname,sdeptfromstudents,sc

wheres.sno二sc.snogroupbysname,sdept

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1