SQL Server数据库连接查询和子查询实战案例
作者:长月. 发布时间:2024-01-15 02:44:21
标签:sqlerver,连接查询,子查询
提示: 利用单表简单查询和多表高级查询技能,并且根据查询要求灵活使用内连接查询、外连接查询或子查询等。同时还利用内连接查询的两种格式、三种外连接查询语法格式和子查询的语法格式。
前言
内连接查询(不同表之间查询)
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='前台页面设计')
来源:https://blog.csdn.net/qq_66238381/article/details/130087594


猜你喜欢
- 目录简介开发工具实现代码爬取效果Github地址:简介使用Python Tkinter开发一个爬取B站直播弹幕的工具,启动后在弹窗中输入房间
- 前言:本文介绍如何构建简单线性回归模型及计算其准确率,最后介绍如何持久化模型。线性回归模型线性回归表示发现函数使用线性组合表示输入变量。简单
- 这篇文章主要介绍了python matplotlib折线图样式实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- 获取每一天的统计数据做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-0
- I/O吞吐量小,形成了瓶颈效应。 没有创建计算列导致查询不优化。 内存不足。 网络速度慢。 查询出的数据量过大(可以采用多次查询,其他的方法
- 鼠标双击滚动屏幕,单击停止滚动,很多小说新闻网站都有这个很人性化的功能,阅读起小说、新闻来很方便,不用手动拉滚动条。js代码如下:<h
- 如何用ADO批量更新记录?是的,ADO有这项功能,不过好像用的人不太多(不了解还是不会用呢?):<HTML> &nbs
- 官方说明gather可以对一个Tensor进行聚合,声明为:torch.gather(input, dim, index, out=None
- 一 pandas DataFrame一列赋值问题说明,把b的列赋值给a情况1:a,b index设置相同如下代码import pandas
- python安装pywifi1.Windows安装:在Dos窗口中输入以下命令:pip install pywifi如果找不到pip命令,那
- 1. str.format():使用“{}”占位符格式化字符串(占位符中的索引号形式和键值对形式可以混合使用)。>>> s
- 本文实例讲述了Python操作串口的方法。分享给大家供大家参考。具体如下:首先需确保安装了serial模块,如果没安装的话就安装一下pyth
- 背景作为一门相对新兴的语言,Go 可以说是站在巨人的肩膀上。从 Go 语法上,我们可以看出设计者对其有许多严肃的思考。其中 Error 的处
- 代码如下: function HandleTabKey(evt) {
- ES Module导出仅导出named exports: 命名导出,每次可以导出一个或者多个。default exports: 默认导出,每
- 假设我们有一个非常简单的Post模型,它将是一个图像及其描述,from django.db import modelsclass Post(
- 在实验中需要自己构造单独的HTTP数据报文,而使用SOCK_STREAM进行发送数据包,需要进行完整的TCP交互。因此想使用原始套接字进行编
- 小程序miniso的一个发布内容截图功能,话不多,先上代码wxml文件:<view class="cut-1-1 t-c {
- 最近越来越多在博客上写些UX相关的内容作为分享,就涉及到跟普通博文不一样的文章建构问题。文章内容固然很重要,但排版、组织也是提高可读性和用户
- 缓动,学名为Tween,缓冲移动的简称。要想页面内容切换起来舒服,就使用淡入淡出特效,要想让页面元素动起来自然,就要使用缓动效果。这两个混合