SQL Server 连接查询和子查询

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: SQL Server 连接查询和子查询

前言

内连接查询(不同表之间查询)

1.查询所有学生的学号、姓名、选修课程号和成绩

方法一

USE XSCJ
GO
SELECT student.sno,sname,cno,grade from student,sc
where student.sno=sc.sno

方法二

USE XSCJ
GO
SELECT student.sno,sname,cno,grade 
from student join sc on student.sno=sc.sno

2.查询选修了课程名称为“数据库原理与应用”的学生的学号和姓名

方法一

USE XSCJ
select student.sno,sname from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno and cname='数据库原理与应用'

方法二

select student.sno,sname from student join sc 
on student.sno=sc.sno join course on sc.cno=course.cno
where cname='数据库原理与应用'

3.使用别名实现查询所有学生的学号、姓名、选修课程号和成绩

select x.sno,sname,cno,grade
from student x,sc y
where x.sno=y.sno

自身连接查询

4.查询所有年龄比张文宝大的学生的姓名、性别和年龄

select A.sname,A.ssex,A.sage
from student A,student B
where B.sname='张文宝' and A.sage>B.sage

使用第二种格式实现内连接查询(JOIN ON)

5.用格式二实现查询所有学生的学号、姓名、选修课程号和成绩

SELECT student.sno,sname,cno,grade
from student join sc
on student.sno=sc.sno

外连接(左外连接)

6.查询所有学生的学号、姓名及对应选课的信息,如果该学生没有选课,也需要显示该生的学号和姓名

SELECT student.sno,sname,cno,grade
from student left outer join sc
on student.sno=sc.sno

右外连接

7.查询选课学生的基本信息(若实际上有外键约束,这种情况是不存在的)

select sc.sno,sname,cno,grade
from sc right outer join student
on student.sno=sc.sno

8.采用右外连接查询学生的学号、选修的课程号、课程名及学分,同时也列出无学生选修的课程信息

select sc.sno,course.cno,cname,credit
from sc right outer join course
on course.cno=sc.cno

全外连接

9.student和sc表实现全外连接

select *
from sc full outer join student 
on student.sno=sc.sno

UNION联合查询

10.从student表中查询年龄为‘19’和‘20’的学生的系部,不包括重复行

select sdept from student where sage='19'
union
select sdept from student where sage='20'

11.从student表中查询年龄为‘19’和‘20’的学生的系部,包括重复行

select sdept from student where sage='19'
union all
select sdept from student where sage='20'

使用IN或NOT IN 的子查询

12.查询所有选修课程的学生的学号和姓名

select sno,sname
from student
where sno in
(select sno from sc)

改为连接查询实现

select distinct student.sno,sname
from student join sc
on student.sno=sc.sno

使用比较运算符的子查询

13.查询年龄高于平均年龄的学生的学号、姓名和年龄

select sno,sname,sage
from student 
where sage>
(select AVG(sage) from student)

使用ANY或ALL的子查询

14.查询比CS系的任一学生年龄都大的学生姓名和年龄

select sname,sage
from student
where sage>any
  (select sage from student where sdept='CS')
  AND sdept!='CS'
select * from student

使用EXISTS的子查询

15.查询已有学生选修的课程信息

select *
from course
where exists
(select * from sc where course.cno=sc.cno)

16.查询尚没有学生选修的课程信息

select *
from course
where not exists
(select * from sc where course.cno=sc.cno)

查看course表

抽取数据到另一个表

17.查询CS系学生的信息,生成一个新表temp

select *
into temp
from student 
where sdept='CS'
select * from temp

INSERT语句中的子查询

18.将所有的学号和课程号信息生成一个新表SCL

INSERT INTO SCL(sno,cno)
select sno,cno
from student,course

UPDATE 语句中的子查询

19.将选修了“前台页面设计”课程的学生成绩增加5分

UPDATE sc
set grade=grade+5
where cno=
(select cno from course
 where sc.cno=course.cno and cname='前台页面设计')

删除语句中的子查询

20.删除选修了“前台页面设计”课程的选课信息

delete from sc
 where cno=
 (select cno from course
 where sc.cno=course.cno and cname='前台页面设计')


总结

今天的学习内容就分享到这里啦,如果对友友们有帮助的话,记得点赞收藏博客,关注后续的SQL Server内容哦~👻👻👻

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2天前
|
SQL 存储 数据库连接
LabVIEW与SQL Server 2919 Express通讯
LabVIEW与SQL Server 2919 Express通讯
|
2天前
|
SQL 前端开发
基于jeecgboot复杂sql查询的列表自定义列实现
基于jeecgboot复杂sql查询的列表自定义列实现
|
3天前
|
SQL Windows
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
安装SQL Server 2005时出现对性能监视器计数器注册表值执行系统配置检查失败的解决办法...
12 4
|
3天前
|
SQL 数据可视化 Oracle
这篇文章教会你:从 SQL Server 移植到 DM(上)
这篇文章教会你:从 SQL Server 移植到 DM(上)
|
3天前
|
SQL 关系型数据库 数据库
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
|
3天前
|
SQL 存储 网络协议
SQL Server详细使用教程
SQL Server详细使用教程
26 2
|
4天前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
7 0
|
4天前
|
SQL 存储 小程序
数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例
数据库数据恢复环境: 5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区。 数据库故障: 数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。数据库文件丢失后,服务器仍处于开机状态,所幸未写入大量数据。
数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例
|
5天前
|
SQL 存储 关系型数据库
SQL Server详细使用教程及常见问题解决
SQL Server详细使用教程及常见问题解决
|
5天前
|
SQL 数据库
SQL数据库基础语法-查询语句
SQL数据库基础语法-查询语句