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

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至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语句语法,并对数据库操作有了更深一步的了解。

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight_V_Schumacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值