数据库实验二07022.docx

上传人:b****5 文档编号:27911702 上传时间:2023-07-06 格式:DOCX 页数:35 大小:470.29KB
下载 相关 举报
数据库实验二07022.docx_第1页
第1页 / 共35页
数据库实验二07022.docx_第2页
第2页 / 共35页
数据库实验二07022.docx_第3页
第3页 / 共35页
数据库实验二07022.docx_第4页
第4页 / 共35页
数据库实验二07022.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

数据库实验二07022.docx

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

数据库实验二07022.docx

数据库实验二07022

计算机科学系实验报告(首页)

课程名称数据库系统概论班级网络工程2班

实验名称数据库中数据的查询指导教师索剑

姓名 李文森学号1214080613213

日期2014年5月12日

一、实验目的

学会使用SQL语言进行各种类型的查询,理解各种查询的异同及相互之间的转换。

 

二、实验设备与环境

SQLSERVER2000、XP系统

三、实验内容、程序清单及运行结果

实验内容:

练习单表查询、嵌套查询、连接查询及集合查询

操作步骤:

1)打开实验1建立的数据库

2)在查询分析器中完成以下单表查询语句

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

查询年龄不在20~23岁之间的学生姓名、系别和年龄

查询既不是IS、MA,也不是CS系学生的姓名和性别

查询所有姓刘的学生的姓名、学号和性别

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

计算1号课程的学生平均成绩

查询选修了3门以上课程的学生学号

3)在查询分析器中完成以下连接查询语句

查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)

查询每一门课的间接先修课

查询选修2号课程且成绩在90分以上的所有学生

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

4)在查询分析器中完成以下嵌套查询语句

查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)

查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)

查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)

查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)

查询没有选修1号课程的学生的姓名

查询选修全部课程的学生姓名

查询至少选修了学生95002选修的全部课程的学生号码

5)在查询分析器中完成以下集合查询语句

查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)

查询计算机科学系的学生及年龄不大于19岁的学生的差集

6)在企业管理器可视化环境下重新完成2-5步骤的内容

 

程序清单及运行结果

第一:

查询

7)打开实验1建立的数据库

8)在查询分析器中完成以下单表查询语句

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

SELECTSname,2014-SageASyearsFROMStudent;

查询选修了课程的学生学号(去掉重复行)

SELECTDISTINCTSnoFROMSC;

查询年龄不在20~23岁之间的学生姓名、系别和年龄

SELECTSname,Sdept,SageFROMStudentwhereSagenotbetween20and23;

查询既不是IS、MA,也不是CS系学生的姓名和性别

SELECTSname,SdeptFROMStudentWHERESdeptnotin('IS','MA','CS');

查询所有姓刘的学生的姓名、学号和性别

SELECTSname,Sno,SageFROMStudentWHERESnameLIKE'刘%';

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

SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;

计算1号课程的学生平均成绩

SELECTAVG(Grade)FROMSCWHERECno='1';

查询选修了3门以上课程的学生学号

SELECTSnofromSCGROUPBYSnoHAVINGCOUNT(Cno)>3;

9)在查询分析器中完成以下连接查询语句

查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)

SELECTStudent.*,SC.CnoFROMStudent,SCWHEREStudent.Sno=SC.Sno;

SELECTStudent.*,CnoFROMStudentJOINSCON(Student.Sno=SC.Sno);

查询每一门课的间接先修课

SELECTfirst.Cno,second.CpnofromCoursefirst,CoursesecondWHEREfirst.Cpno=second.Cno;

 

查询选修2号课程且成绩在90分以上的所有学生

SELECTSnameFROMStudenta,SCbWHEREa.Sno=b.SnoANDCno='2'ANDGrade>90;

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

SELECTa.Sno,Sname,c.Cname,GradeFROMStudenta,SCb,CoursecWHEREa.Sno=b.SnoANDb.Cno=c.Cno;

10)在查询分析器中完成以下嵌套查询语句

查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)

1.嵌套查询

SELECT*FROMStudentaWHERESdeptIN(SELECTSdeptFROMStudentbWHEREb.Sname='刘晨');

2.自身连接

SELECTa.*FROMStudenta,StudentbWHEREb.Sname='刘晨'ANDa.Sdept=b.Sdept;

3.比较查询

SELECT*FROMStudentaWHERESdept=(SELECTSdeptFROMStudentbWHEREb.Sname='刘晨');

查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)

1.嵌套查询

SELECTSno,SnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECnoIN(SELECTCnoFROMCourseWHERECname='信息系统'));

2.自然连接

SELECTa.Sno,SnameFROMStudenta,SCb,CoursecWHEREa.Sno=b.SnoANDb.Cno=c.CnoANDCname='信息系统';

 

查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)

1.ANY谓词

SELECTSname,SageFROMStudentWHERESage'IS';

2.聚集函数

SELECTSname,SageFROMStudentWHERESage<(SELECTMAX(Sage)FROMStudentWHERESdept='IS')ANDSdept<>'IS';

查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)

1.比较运算符

 

2.IN

SELECTSnameFROMStudentWHERESnoIN(SELECTSnoFROMSCWHERECno='1');

3.EXISTS

SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');

查询没有选修1号课程的学生的姓名

查询选修全部课程的学生姓名

SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno));

查询至少选修了学生95002选修的全部课程的学生号码

SELECTDISTINCTSnoFROMSCaWHERENOTEXISTS(SELECT*FROMSCbWHEREb.Sno='95002'ANDNOTEXISTS(SELECT*FROMSCcWHEREc.Sno=a.SnoANDc.Cno=b.Cno));

11)在查询分析器中完成以下集合查询语句

查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)

单表查询:

SELECT*FROMStudentWHERESdept='CS'ORSage<=19ORDERBYSno;

集合查询:

SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage<=19ORDERBYSno;

查询计算机科学系的学生及年龄不大于19岁的学生的差集

SELECT*FROMStudentWHERESdept='CS'ANDSage>19;

第二:

可视化实现结果

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

 

2.查询选修了课程的学生学号(去掉重复行)

3.查询年龄不在20~23岁之间的学生姓名、系别和年龄

4.查询既不是IS、MA,也不是CS系学生的姓名和性别

5.查询所有姓刘的学生的姓名、学号和性别

6.查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列

7.计算1号课程的学生平均成绩

8.查询选修了3门以上课程的学生学号

9.在查询分析器中完成以下连接查询语句

查询每个学生及其选修课程的情况(使用自然连接、外连接分别完成)

 

10.查询每一门课的间接先修课

 

11查询选修2号课程且成绩在90分以上的所有学生

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

13在查询分析器中完成以下嵌套查询语句

查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)

1.嵌套查询

2.自身连接

3.比较查询

查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)

1.嵌套查询

2.自然连接

 

14查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)

1.ANY谓词

2.聚集函数

15.查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成)

1.比较运算符

 

2.IN

3.EXISTS

查询没有选修1号课程的学生的姓名

查询选修全部课程的学生姓名

SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno=Course.Cno));

查询至少选修了学生95002选修的全部课程的学生号码

在查询分析器中完成以下集合查询语句

查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)

单表查询:

SELECT*FROMStudentWHERESdept='CS'ORSage<=19ORDERBYSno;

集合查询:

SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage<=19ORDERBYSno;

查询计算机科学系的学生及年龄不大于19岁的学生的差集

SELECT*FROMStudentWHERESdept='CS'ANDSage>19;

四、实验体会

数据库的逻辑关系很强,通过做实验,让我更容易的知道其中的奥秘,通过不断的实验来锻炼自己逻辑分析能力也是一个不错的选择。

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

当前位置:首页 > 初中教育 > 数学

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

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