简单查询和复杂查询实验.docx

上传人:b****5 文档编号:5390446 上传时间:2022-12-15 格式:DOCX 页数:12 大小:62.94KB
下载 相关 举报
简单查询和复杂查询实验.docx_第1页
第1页 / 共12页
简单查询和复杂查询实验.docx_第2页
第2页 / 共12页
简单查询和复杂查询实验.docx_第3页
第3页 / 共12页
简单查询和复杂查询实验.docx_第4页
第4页 / 共12页
简单查询和复杂查询实验.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

简单查询和复杂查询实验.docx

《简单查询和复杂查询实验.docx》由会员分享,可在线阅读,更多相关《简单查询和复杂查询实验.docx(12页珍藏版)》请在冰豆网上搜索。

简单查询和复杂查询实验.docx

简单查询和复杂查询实验

 

岭南师范学院

《数据库原理与应用》实验报告手册

学号:

姓名:

班级:

成绩:

2015年09月

实验二简单查询和复杂查询实验

一、实验目的

1.熟练使用T-SQL语句进行数据查询。

2.掌握SELECT语句的基本结构和多表连接查询。

3.掌握SELECT语句和子查询、分组查询及统计查询、查询结果的排序等操作

二、实验内容

1.要求利用T-SQL语句进行单表和多表的简单查询和链接查询实验。

参照实验五,完成实验报告。

2.要求利用T-SQL语句进行单表和多表的嵌套查询实验。

参照实验五,完成实验报告。

3.参照”数据查询练习题2014”

三、实验步骤和结果

写出你的实验步骤以及实验结果图以及关键代码,要求条理清晰。

查询全体学生学号和姓名

usestudents_courses

selectsno,sname

fromstudent

 

查询全体学生的姓名、学号、所在系

usestudents_courses

selectsno,sname,dno

fromstudent

 

查询全体学生的详细记录

usestudents_courses

select*

fromstudent

 

查询全体学生的姓名及出生年份

usestudents_courses

selectsname,year(getdate())-sage出生年份

fromstudent

 

查询全体学生的姓名、出生年份和所在的系*/

/*要求用小写字母表示所有系名*/

usestudents_courses

selectsname,year(getdate())-sage出生年,dno

fromstudent

 

/*EXP34_5_2查询全体学生的姓名、出生年份和所在的系*/

/*要求用小写字母表示所有系名;并使用新的列名称*/

usestudents_courses

selectsname姓名,year(getdate())-sage出生年,sno

fromstudent

--------------------------------------------------------------------------------

/*EXP34_6_1查询选修了课程的学生学号*/

usestudents_courses

selectsno

fromsc

--------------------------------------------------------------------------------

/*EXP34_6_2查询选修了课程的学生学号,去掉结果表中的重复行*/

usestudents_courses

selectdistinctsno

fromsc

--------------------------------------------------------------------------------

/*EXP34_7查询数学与应用数数系全体学生的名单*/

usestudents_courses

selectsname

fromstudent

whereDno='sx'

--------------------------------------------------------------------------------

/*EXP34_8查询年龄20岁以下的学生姓名及年龄*/

usestudents_courses

selectsname,sage

fromstudent

wheresage<20

-------------------------------------------------

/*EXP34_9查询考试成绩有不及格的学生的学号*/

usestudents_courses

selectsno

fromsc

wheregrade<60

--------------------------------------------------------------------------------

/*EXP34_10查询年龄在20~23岁(包括22和23岁)之间的学生的姓名、系别和年龄*/

usestudents_courses

selectsname,dno,sage

fromstudent

wheresage>=20andsage<=23

--------------------------------------------------------------------------------

/*EXP34_11查询年龄不在20~23

usestudents_courses

selectsname,dno,sage

fromstudent

wheresage<20orsage>23

--------------------------------------------------------------------------------

/*EXP34_12_1查询计信息管理与信息系统、数学与应用数学和信息与计算科学三个系的学生的姓名和性别*/

usestudents_courses

selectsname,ssex

fromstudent

wherednoin('xg','sx','xx')

--------------------------------------------------------------------------------

/*EXP34_12_1查询不是计信息管理与信息系统、数学与应用数学和信息与计算科学三个系的学生的姓名和性别*/

usestudents_courses

selectsname,ssex

fromstudent

wherednonotin('xg','sx','xx')

--------------------------------------------------------------------------------

/*EXP34_14_1查询学号为2012254110的学生的详细情况*/

usestudents_courses

select*

fromstudent

wheresno='2012254110'

--------------------------------------------------------------------------------

/*EXP34_15_1查询所有姓刘的学生的详细情况*/

usestudents_courses

select*

fromstudent

wheresnamelike'刘%'

--------------------------------------------------------------------------------

/*EXP34_15_2查询所有不姓刘的学生的详细情况*/

usestudents_courses

select*

fromstudent

wheresnamenotlike'刘%'

----------------------------------------

/*EXP34_16查询姓“林”且全名为2个汉字的学生的姓名*/

usestudents_courses

selectsname

fromstudent

wheresnamelike'林_'

--------------------------------------------------------------------------------

/*EXP34_17查询名字中第二个字为“香”字的学生的姓名和学号*/

usestudents_courses

selectsname,sno

fromstudent

wheresnamelike'_香%'

--------------------------------------------------------------------------------

/*EXP34_18查询所有不姓刘的学生的姓名*/

usestudents_courses

selectsname

fromstudent

wheresnamenotlike'刘%'

--------------------------------------------------------------------------------

/*EXP34_20查询课程名中第二个字为“据”的课程的详细情况*/

usestudents_courses

select*

fromcourse

wherecnamelike'_据%';

--------------------------------------------------------------------------------

/*EXP34_21查询有选课记录但选课记录中缺少考试成绩的学生的学号和相应的课程号*/

usestudents_courses

selectsno,cno

fromsc

wheregradeisnull

--------------------------------------------------------------------------------

/*EXP34_22查询有成绩的学生的学号和相应的课程号*/

usestudents_courses

selectsno,cno

fromsc

wheregradeisnotnull

-------------------------------------------------------------------------------

/*EXP34_23查询应用化学系年龄在22岁以下的学生的姓名*/

usestudents_courses

selectsname

fromstudent

wheredno='yyhx'andsage<22

--------------------------------------------------------------------------------

/*EXP34_24查询选修了06130060课程的学生的学号及成绩,查询结果按分数降序排列*/

usestudents_courses

selectsno,grade

fromsc

orderbygradedesc

--------------------------------------------------------------------------------

/*EXP34_25查询全体学生的情况,查询结果按所在系的系号升序(默认)排列*/

/*同一系中的学生按年龄降序排列*/

usestudents_courses

select*

fromstudent

orderbydno,sagedesc

--------------------------------------------------------------------------------

/*EXP34_26查询学生的总人数*/

usestudents_courses

selectCOUNT(*)总人数

fromstudent

--------------

/*EXP34_27查询选修了课程的学生人数*/

--------------------------------------------------------------------------------

/*EXP34_28_1广播电视选修13110110课程的学生平均成绩*/

usestudents_courses

selectAVG(grade)

fromstudentjoinsc

onstudent.SNO=sc.sno

wheredno='gbds'andcno='13110110'

groupbycno

--------------------------------------------------------------------------------

/*EXP34_30查询学生06130060选修课程的总学分数*/

usestudent_course

selectsum(ccredit)as'总学分数'

fromcourse

whereo='06130060'

--------------------------------------------------------------------------------

/*EXP34_31求各个课程及相应的选课人数*/

usestudent_course

selectcno,COUNT(*)as'人数'

fromsc

wheregradeisnotnull

groupbycno

--------------------------------------------------------------------------------

/*EXP34_32查询选修了3门以上(包括3门)课程的学生的学号*/

usestudent_course

selectsno

fromsc

groupbysno

havingCOUNT(*)>=3

--------------------------------------------------------------------------------

/*EXP34_33查询每个学生及其选修课程的情况*/

usestudent_course

selectstudent.*,sc.*

fromstudentinnerjoinsc

onstudent.sno=sc.sno

--------------------------------------------------------------------------------

/*EXP34_34用自然连接查询每个学生及其选修课程的情况*/

usestudent_course

selectstudent.*,sc.*

fromstudent,sc

wherestudent.sno=sc.sno

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

/*EXP34_36_1使用外连接查询每个学生及其选修课程的情况*/

/*即:

若某个学生没有选课就在sc表的属性位置上填空值NULL*/

usestudent_course

selectstudent.sno,sname,ssex,sage,sdept,cno,grade

fromstudentLEFTJOINscON(student.sno=sc.sno);

--------------------------------------------------------------------------------

/*EXP34_37查询选修07190002课程且成绩在80分以上(包括80分)的所有学生的情况*/

usestudent_course

select*

fromstudentinnerjoinsc

onstudent.sno=sc.snoandcno='07190002'andgrade>=80

--------------------------------------------------------------------------------

/*EXP34_38查询每个学生的学号、姓名、选修的课程名及成绩*/

/*注:

本查询涉及到3个表*/

usestudent_course

selectstudent.sno,student.sname,ame,sc.grade--selectstudent.sno,sname,cname,grade

fromstudentjoin(scjoincourseono=o)--fromstudent,sc,course

onstudent.sno=sc.sno--wherestudent.sno=sc.snoando=o

--------------------------------------------------------------------------------

/*EXP34_39_1用嵌套查询查询与吴梅泳同在一个系学习的学生*/

usestudent_course

selectsno,sname,dno

fromstudent

wherednoin

(selectdno

fromstudent

wheresname='吴梅泳')

--------------------------------------------------------------------------------

/*EXP34_39_2用自身连接查询与刘晨同在一个系学习的学生*/

usestudent_course

selectb.sno,b.sname,b.dno

fromstudentasajoinstudentasb

ona.dno=b.dnoanda.sname='刘晨

--------------------------------------------------------------------------------

/*EXP34_40_1用嵌套查询查询选修了课程名为“大学英语Ⅱ”的学生的学号和姓名*/

usestudent_course

selectsno,sname

fromstudent

wheresnoin

(selectsno

fromsc

wherecnoin

(selectcno

fromcourse

wherecname='大学英语Ⅱ')

);

/*注:

本查询实际上涉及到3个关系*/

--------------------------------------------------------------------------------

/*EXP34_40_2用自然连接法查询选修了课程名为“C语言程序设计”的学生的学号和姓名*/

usestudent_course

selectstudent.sno,sname

fromstudent,sc,course

wherestudent.sno=sc.snoand

o=oand

ame='信息系统';

--------------------------------------------------------------------------------

/*EXP34_48查询计算机系的学生及年龄不大于19岁的学生*/

usestudent_course

select*

fromstudent

wheresdept='CS'

union/*集合并操作*/

select*

fromstudent

wheresage<=19;

-----------------------------------

/*EXP34_49查询选修了06151030课程或者选修了08190000课程的学生的学号*/

usestudent_course

selectstudent.sno

fromstudentinnerjoinsc

onstudent.sno=sc.snoandcno='06151030'orcno='08190000'

--------------------------------------------------------------------------------

/*EXP34_50查询数学与应用数学系年龄不大于21岁的学生*/

usestudent_course

select*

fromstudent

wheresdept='SX'and

snoin(selectsno

fromstudent

wheresage<=19);

--------------------------------------------------------------------------------

/*EXP34_51查询既选1号课程又选2号课程的学生的学号*/

--------------------------------------------------------------------------------

usestudent_course

selectsno

fromsc

wherecno='1'

intersect

selectsno

fromsc

wherecno='2'

四、总结和体会

写出实验过程中遇到问题以及解决的方法和实验的收获。

(不得少于200字)

查询语句的功能非常强大,其选项也非常丰富,同时查询语句的完整句法也很复杂。

简单查询是不带任何子句的单表查询,多表查询是数据库中最主要的查询,其中,多表查询包括连接查询和子查询(子查询也称为嵌套查询)。

连接查询中需要熟悉内连接、外连接和交叉连接;子查询分为无关子查询和相关子查询。

总的来说,简单查询是多表查询的基础,多表查询是简单查询的进一步体现,要更好的运用查询,我们必须巩固简单查询,然后不断的提高对多表查询的理解。

 

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

当前位置:首页 > 高等教育 > 工学

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

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