数据库——SQL-SERVER练习(2)连接与子查询
一.实验准备
1.复制实验要求文件及“CREATE-TABLES.SQL”文件, 粘贴到本地机桌面。
2.启动SQL-SERVER服务。
3. 运行查询分析器, 点击菜单《文件》/《打开》, 打开CREATE-TABLES.SQL, 并运行, 建立学生数据库STUDB及表STUDENT, COURSE, SC。
4. 点击菜单《文件》/《新建》, 建立一个空查询窗口。开始实验。
5.本次实验环境是xp虚拟机,SQL-SERVER迷你版。
“CREATE-TABLES.SQL”文件 https://www.cnblogs.com/wkfvawl/p/10843788.html
二.实验内容
1查询每门课的课号和先行课的先行课号(自我连接)
SELECT FIRST.CNO,SECOND.CPNO
FROM COURSE FIRST,COURSE SECOND
WHERE FIRST.CPNO=SECOND.CNO

2 查询每门课的课号,课名,先行课号,先行课名(自我连接)
SELECT FIRST.CNO,FIRST.CNAME,SECOND.CPNO,SECOND.CNAME CPNAME
FROM COURSE FIRST,COURSE SECOND
WHERE FIRST.CPNO*=SECOND.CNO

3 查询年龄比CS系平均年龄大的学生名(>子查询)
SELECT SNAME
FROM STUDENT
WHERE SAGE >
(
SELECT AVG(SAGE)
FROM STUDENT
WHERE SDEPT='CS'
)

4 查询选修学生人数>=2的课程名 (IN子查询)
SELECT CNAME
FROM COURSE
WHERE CNO IN
(
SELECT COUNT(*)
FROM SC
GROUP BY CNO
HAVING COUNT(*)>=
)

5 查询所有选修了1号课程的学生姓名(用EXISTS子查询)
SELECT SNAME
FROM STUDENT
WHERE EXISTS
(
SELECT *
FROM SC
WHERE SNO=STUDENT.SNO AND CNO=''
)

6 查询所有选修了1号课程的学生姓名(IN 子查询)
SELECT SNAME
FROM STUDENT
WHERE SNO IN
(
SELECT SNO
FROM SC
WHERE CNO=''
)

7 查询所有选修了1号课程的学生姓名(用连接)
SELECT SNAME
FROM STUDENT,SC
WHERE SC.SNO=STUDENT.SNO AND CNO=''

8. 查询未选1号课的学生号,学生名(用NOT EXISTS子查询)
SELECT SNO,SNAME
FROM STUDENT
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE SNO=STUDENT.SNO AND CNO=''
)

9 选修了所有课的学生名
(查询学生名, 条件是不存在这样的课, 该生不选) :
SELECT SNAME
FROM STUDENT
WHERE NOT EXISTS
(
SELECT *
FROM COURSE
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE SNO=STUDENT.SNO
AND CNO=COURSE.CNO
)
)

10 . 被所有学生选修的课名
(查询课程名, 条件是不存在这样的学生, 不选该课)
换个说法,不存在这样的学生, 该课不选?
SELECT CNAME
FROM COURSE
WHERE NOT EXISTS
(
SELECT *
FROM STUDENT
WHERE NOT EXISTS
(
SELECT *
FROM SC
WHERE SNO=STUDENT.SNO
AND CNO=COURSE.CNO
)
)

11.选修了95002选修所有课的学生名
查询语义: 查询学生名, 条件是对于95002选了的课中不存在这样的课,该生不选
不存在这样的课, 95002选并且该生不选.
SELECT SNAME
FROM STUDENT
WHERE NOT EXISTS
(
SELECT *
FROM COURSE
WHERE EXISTS
(
SELECT *
FROM SC
WHERE SNO='' AND CNO=COURSE.CNO
)
AND
NOT EXISTS
(
SELECT *
FROM SC
WHERE SNO=STUDENT.SNO AND CNO=COURSE.CNO
)
)

数据库——SQL-SERVER练习(2)连接与子查询的更多相关文章
- SQL Server中INNER JOIN与子查询IN的性能测试
这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...
- SQL Server进阶(五)子查询
概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...
- SQL SERVER技术内幕之4 子查询
最外层查询的结果集会返回给调用者,称为外部查询.内部查询的结果是供外部查询使用的,也称为子查询.子查询可以分成独立子查询和相关子查询两类.独立子查询不依赖于它所属的外部查询,而相关子查询则须依赖它所属 ...
- 本地数据库(SQL Server)远程连接服务器端服务器
本地数据库(SQL Server 2012) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1. 首先是要打开 数据的配置管理工具 2. 配置相关的客户端协议,开启TCP/IP 3. 数据库 ...
- 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...
- win7中 SQL server 2005无法连接到服务器,错误码:18456
win7中 SQL server 2005无法连接到服务器,错误码:18456.. 数据库刚装完.我用Windows登陆 结果登陆不上去.. 选中SQL Server Management Stud ...
- 数据库SQL Server与C#中数据类型的对应关系
ylbtech- .NET-Basic:数据库SQL Server与C#中数据类型的对应关系 数据库SQL SServer与C#中数据类型的对应关系 1.A,返回顶部 数据库 C#程序 int int ...
- SQL Server中内连接和外连接的区别
SQL Server中内连接和外连接的区别 假设一个数据库中有两张表,一张是学生表StudentInfo,一张是班级表ClassInfo,两张表之间用ClassId字段进行关联. 如果用内连接,正常的 ...
- SQL Server "允许远程连接到此服务器" 配置
在SQL Server的属性-->连接中我们可以看到这样一个选项:'允许远程连接到此服务器'(英文是remote access),其默认值是1,表示此选项开启. 但是这个参数并非是字面上所显示的 ...
- 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接
Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset ...
随机推荐
- CountDownLatch(倒计时计数器)使用说明 --并发
方法说明: public void countDown() 递减锁存器的计数,如果计数到达零,则释放所有等待的线程.如果当前计数大于零,则将计数减少.如果新的计数为零,出于线程调度目的, ...
- JS表单内容垂直循环滚动
参考博客:https://blog.csdn.net/yubo_725/article/details/52839493 大佬是真的厉害,保存一下,以方便后续使用 效果: 源码: <!DOCT ...
- 关于中医的一段对话 [ZZ] -- 思维训练故事
转载自新浪博客 网址: http://blog.sina.cn/dpool/blog/s/blog_9880df4201015khq.html?type=-1 关于中医的一段对话 2013-01-26 ...
- 用了 Lambda 之后,发现可以忘记设计模式了
设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式.面向对象常见的设计模式有策略模式.模板方法.观察者模式.责任链模式以及工厂模式,使用Lambda表达式(函数 ...
- js之好看的鼠标点击-光标特效
1.光标特效 <script src="https://blog-static.cnblogs.com/files/axqa/bubbleCursor.js">< ...
- 手把手教你搭建织女星开发板RISC-V开发环境
前言 Windows环境下搭建基于Eclipse + RISC-V gcc编译器的RISC-V开发环境,配合openocd调试软件,可以实现RISC-V内核程序的编译.下载和调试. 准备工作 工欲善其 ...
- vue路由传参和获取参数
参考链接 https://router.vuejs.org/zh/guide/essentials/passing-props.html#%E5%B8%83%E5%B0%94%E6%A8%A1%E5% ...
- Java中Atomic类的使用分析
1:为什么会出现Atomic类 在多线程或者并发环境中,我们常常会遇到这种情况 int i=0; i++ 稍有经验的同学都知道这种写法是线程不安全的.为了达到线程安全的目的,我们通常会用synchro ...
- PHP制作的掷色子点数抽奖游戏实例
PHP制作的掷色子点数抽奖游戏实例,通过掷色子点数来达到抽奖的效果,为抽奖活动增添一些趣味性. 我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信息,#prize则是用来 ...
- C#中实现文件重命名的方式
场景 在C#中如果是删除文件的话可以直接使用 if (System.IO.File.Exists(fileName)) { System.IO.File.Delete(fileName); } 但是如 ...