一.实验准备

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)连接与子查询的更多相关文章

  1. SQL Server中INNER JOIN与子查询IN的性能测试

    这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...

  2. SQL Server进阶(五)子查询

    概述 子查询的概念: 当一个查询是另一个查询的条件时,称之为子查询.子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 外面的 ...

  3. SQL SERVER技术内幕之4 子查询

    最外层查询的结果集会返回给调用者,称为外部查询.内部查询的结果是供外部查询使用的,也称为子查询.子查询可以分成独立子查询和相关子查询两类.独立子查询不依赖于它所属的外部查询,而相关子查询则须依赖它所属 ...

  4. 本地数据库(SQL Server)远程连接服务器端服务器

    本地数据库(SQL Server 2012) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1. 首先是要打开 数据的配置管理工具 2. 配置相关的客户端协议,开启TCP/IP 3. 数据库 ...

  5. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...

  6. win7中 SQL server 2005无法连接到服务器,错误码:18456

    win7中 SQL server 2005无法连接到服务器,错误码:18456.. 数据库刚装完.我用Windows登陆  结果登陆不上去.. 选中SQL Server Management Stud ...

  7. 数据库SQL Server与C#中数据类型的对应关系

    ylbtech- .NET-Basic:数据库SQL Server与C#中数据类型的对应关系 数据库SQL SServer与C#中数据类型的对应关系 1.A,返回顶部 数据库 C#程序 int int ...

  8. SQL Server中内连接和外连接的区别

    SQL Server中内连接和外连接的区别 假设一个数据库中有两张表,一张是学生表StudentInfo,一张是班级表ClassInfo,两张表之间用ClassId字段进行关联. 如果用内连接,正常的 ...

  9. SQL Server "允许远程连接到此服务器" 配置

    在SQL Server的属性-->连接中我们可以看到这样一个选项:'允许远程连接到此服务器'(英文是remote access),其默认值是1,表示此选项开启. 但是这个参数并非是字面上所显示的 ...

  10. 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接

    Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset ...

随机推荐

  1. 【模板】分治 FFT

    Link Solution 有两种解法. 法1: 直接上分治FFT,也就是CDQ分治+FFT. 具体做法是先递归左半边,算出左半边答案之后,将左半边贡献到右半边,然后递归右半边. 分治是一个log的, ...

  2. 菜鸟刷面试题(三、Redis篇)

    目录: redis是什么?都有哪些使用场景? redis有哪些功能? redis和memecache有什么区别? redis为什么是单线程的? 什么是缓存穿透?怎么解决? redis支持的数据类型有哪 ...

  3. Jmeter文件目录介绍

    当我们解压安装包后,在主目录下有以下文件目录,在这里就不一一介绍,主要介绍一些会经常使用到的文件或目录 1.bin目录——存放启动脚本.配置文件.模板等文件 examples:该目录下存放Jmeter ...

  4. js之好看的鼠标点击-光标特效

    1.光标特效 <script src="https://blog-static.cnblogs.com/files/axqa/bubbleCursor.js">< ...

  5. SSM实现mysql数据库账号密码加密连接

    引言 咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般公司和一般的项目,对于信息安全要求更加严格,领导要求数据量和用户的用户名及密码信息都必需是要密文配置和存储的,这就涉及到 ...

  6. C# HttpClient设置cookies的两种办法

    前言:最近公司使用HttpClient对象在发送请求,抛弃了之前的HttpWebRequest,使用httpClient有个好处:就是可以只使用一个HttpClient的实例,去完成发送所有的请求数据 ...

  7. ASP.NET Core 2.2 WebApi 系列【六】泛型仓储模式

    为什么要使用泛型仓储?好处是? 前两章在autofac注入的时候,用的User类作为例子,写了增删改查四个接口,也就是仓储的GRUD. 当我们再添加一个实体(比如Student)时,StudentRe ...

  8. Java操作数据库——使用连接池连接数据库

    Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...

  9. 松软科技web课堂:JavaScript 数据类型

    字符串值,数值,布尔值,数组,对象. JavaScript 数据类型 JavaScript 变量能够保存多种数据类型:数值.字符串值.数组.对象等等: var length = 7; // 数字 va ...

  10. 松软科技web课堂:SQLServer之MIN() 函数

    MIN() 函数 MIN 函数返回一列中的最小值.NULL 值不包括在计算中. SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN ...