数据库第三次试验:数据库的嵌套查询

  • Post author:
  • Post category:其他




前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!



一、实验目的

使学生进一步掌握 SQL Server 查询分析器的使用方法,加深对 SQL 语言的嵌套查询语句的理解。



二、实验要求

在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。



三、实验原理、方法和手段

将查询要求用SQL语句表示;在SQL Server查询分析器的输入区中输入SQL查询语句;设置查询分析器的结果区Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看结果;如果结果不正确,要进行修改,直到正确为止。



四、实验组织运行要求

本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。开始实验前,必须进行预习,写出实现所有查询要求的 SQL 语句。实验过程中,先集中由老师进行具体要求和注意事项的讲解,然后各自独立在机器上完成实验。实验过程中出现问题,在实验指导老师帮助下解决。



五、实验条件

(1)硬件条件:个人计算机。

(2)软件条件:Windows;MS SQL Server。



六、实验步骤

1、基本操作实验

用SQL语句表示,在学生选课库中实现其数据嵌套查询操作。

(1)求选修了高等数学的学生学号和姓名。

(2)求8号课程的成绩高于张三的学生学号和成绩。

(3)求其它系中年龄小于计算机系年龄最大者的学生。

(4)求其它系中比计算机系学生年龄都小的学生。

(5)求选修了2号课程的学生姓名。

(6)求没有选修2号课程的学生姓名。

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

(8)求至少选修了学号为“15122“的学生所选修的全部课程的学生学号和姓名。

2、提高操作实验

对自自己设计的数据库应用项目的数据查询操作分类,用SQL语句表示其中的简单、连接和嵌套查询,并通过SQL Server查询分析器实现其查询操作。



七、实验总结

附1:ST.dbo.SC:

在这里插入图片描述

附2:ST.dbo.Course:

在这里插入图片描述

附3:ST.dbo.Student:

在这里插入图片描述

1、基本操作实验

用SQL语句表示,在学生选课库中实现其数据嵌套查询操作。

(1)求选修了Math的学生学号和姓名。

select sno,sname from st.dbo.Student where sno in(select sno from st.dbo.SC where cno in(select cno from st.dbo.Course where Cname='Math'))

运行结果如下:

在这里插入图片描述

(2)求123号课程的成绩高于李勇的学生的学号和成绩。

select sno,grade from st.dbo.SC where cno='123' and grade>(select grade from st.dbo.SC where cno='123' and sno=(select sno from st.dbo.Student where sname='李勇'))

运行结果如下:

在这里插入图片描述

(3)求其它系中年龄小于计算机系年龄最大者的学生。

select * from st.dbo.Student where sage < (select max(sage) from st.dbo.Student where Sdep='CS')and sdep<>'CS'

运行结果如下:

在这里插入图片描述

(4)求其它系中比计算机系学生年龄都小的学生。

select * from st.dbo.Student where sage < (select min(sage) from st.dbo.Student where Sdep='CS')and sdep<>'CS'

运行结果如下:

在这里插入图片描述

(5)求选修了120号课程的学生姓名。

select sname from st.dbo.Student where exists (select * from st.dbo.SC where st.dbo.Student.sno=sno and cno='120')

运行结果如下:

在这里插入图片描述

(6)求没有选修120号课程的学生姓名。

select sname from st.dbo.Student where not exists (select * from st.dbo.SC where st.dbo.student.sno=sno and cno='120')

运行结果如下:

在这里插入图片描述

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

select sname from st.dbo.Student where not exists(select * from st.dbo.Course where not exists(select * from st.dbo.sc where st.dbo.Student.sno=sno and st.dbo.Course.Cno=cno))

运行结果如下:

在这里插入图片描述

(8)求至少选修了学号为“15122“的学生所选修的全部课程的学生学号和姓名。

select sno,sname from st.dbo.Student where not exists(select * from st.dbo.sc a where a.Sno=15121 and not exists(select * from st.dbo.SC b where st.dbo.Student.sno=b.Sno and b.Cno=a.Cno))

运行结果如下:

在这里插入图片描述

2、提高操作实验

对自己设计的数据库应用项目的数据查询操作分类,用SQL语句表示其中的简单、连接和嵌套查询,并通过SQL Server查询分析器实现其查询操作。

附1:librarydb.dbo.Book

在这里插入图片描述

附2:librarydb.dbo.Reader

在这里插入图片描述

附3:librarydb.dbo.BORROW

在这里插入图片描述

简单查询:

select * from Book where Bno=3

运行结果截图:

在这里插入图片描述

连接查询:

select * from Book inner join BORROW on book.Bno=BORROW.Bno where Borrow.Bno=3

运行结果截图:

在这里插入图片描述

嵌套查询:

select * from book where Bprice < (select min(bprice) from book where Bclass='C')

运行结果截图:

在这里插入图片描述



八、实验总结

本次实验在宏观上增加了对SQL语句操作的熟练度,同时学习了表达同一目的而使用不同方式的不同SQL语句语法,并对数据库操作有了更深一步的了解。



版权声明:本文为sjx3161原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。