SQL Server聚合函数、别名查询、where子句、into子句、嵌套查询

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 作者主页:https://www.couragesteak.com/

基本表 Employee

create table Employee(
Id int,
Name varchar(20),
Sex varchar(20),
Age int
)

1 新增

insert into Employee values
(001,'张子婷','女',24),
(002,'你愁啥','男',26),
(003,'黑客','女',29),
(004,'大佬','男',20),
(005,'尼奥','女',24),
(006,'安德森','男',15)

2 常规查询

2.1 聚合函数

行聚合函数 描述
count(*) 返回数据中的项数
count({ [ [ all或distinct ] 列名 ] } ) 返回某列的个数
avg({ [ [ all或distinct ] 列名 ] } ) 返回某列的平均值
max({ [ [ all或distinct ] 列名 ] } ) 返回某列的最大值
min({ [ [ all或distinct ] 列名 ] } ) 返回某列的最小值 在这里插入代码片
sum({ [ [ all或distinct ] 列名 ] } ) 返回某列值得和

2.2 别名查询

别名的 3 中定义方法:

  • 别名=列名
  • 列名 as 别名
  • 列名 别名
select 员工编号=Id, Name as 姓名, Sex 性别, Age 年龄
from Employee

在这里插入图片描述

2.3 where子句

指定查询返回的行的搜索条件。

2.3.1 逻辑运算符(not、and、or)

select * from Employe where Sex='女' and Age =20
select * from Employe where Id='001' or Id='002'
select * from Employe where Sex='男' and not Age>20
select * from Employe where Sex='男' and Age=20 or Sex='女' and Age='23'

2.3.2 比较运算符(=、>、<)

select * from Employe where Name='张子婷'
select * from Employe where Age>24

2.3.3 like 关键字

使用 like 关键字可以确定特定字符是否与指定模式相匹配。模式可以包含常规字符和通配符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。但是,通配符可以与字符串的任意部分相匹配。

通配符 说明 示例
% 包含零个或多个字符的任意字符串
_ (下划线) 任何单个字符
[ ] 指定范围([a~f])或集合([abcdef])中任何单个字符
[^] 指定范围([a~f])或集合([abcdef])中任何单个字符

2.4 into 子句

创建新表并将来自查询的结果行插入新表中。

[into new_table]

eg. 使用 into 子句创建一个新表 tb_Employ, tb_Employ表中包含 Employ 表中的Name和Age字段。

select Name, Age into tb_Employe from Employee

select * from tb_Employe

在这里插入图片描述

3 嵌套查询

数据库表

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.1 in

查询Student表 并且 Sno 在 SC表中有

select * from Student where Sno in(select Sno from SC)

在这里插入图片描述

3.2 not in

查询学生表中 Sno在SC表不存在的学生

select * from Student 
where Sno not in
(select Sno from SC)

伪代码

查询学生表
学生表中的Sno
不在SC表中

在这里插入图片描述

3.3 some

SQL支持3中定量比较谓词:some、any 和 all。他们都是判断是否任何或全部返回值都满足搜索要求的。其中,some和any谓词是存在量的,只注重是否有返回值满足搜索要求。这两谓词含义相同,可以替换使用。

查询学生表中,年龄小于平均值的学生

select * from Student 
where Sage < some 
(select avg(Sage) from Student)

伪代码

查询学生表
年龄小于
(查询 学生表 年龄平均值)

在这里插入图片描述

3.4 all

all 谓词的使用方法和 any 或者 some 谓词一样,也是把列值与子查询结果进行比较,但是它不要求任意结果值得列值为真,而是要求所有列的查询结果都为真,否则就不返回行。

查询课程表 并且成绩 没有 有 成绩超过 90分的课程

select * from Course
where Cno <> all
(select Cno from SC where grade > 90)

伪代码

查询课程表
不存在的课程号在
(查询有分数>90分的课程号)

在这里插入图片描述

3.5 exists

exists谓词只注重子查询结果是否返回行。如果子查询返回一个或多个行,谓词返回为真值,否则为假。
exists搜索条件并不真正使用子查询的结果。他仅测试子查询是否产生任何结果。

查询没有参加考试的学生

select * from Student
where not exists
(select Sno from SC where Student.Sno = SC.Sno)

伪代码

查询学生表
不存在
(查询 Student.Sno = SC.Sno的结果)
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
14天前
|
SQL 数据挖掘 数据库
第三篇:高级 SQL 查询与多表操作
本文深入讲解高级SQL查询技巧,涵盖多表JOIN操作、聚合函数、分组查询、子查询及视图索引等内容。适合已掌握基础SQL的学习者,通过实例解析INNER/LEFT/RIGHT/FULL JOIN用法,以及COUNT/SUM/AVG等聚合函数的应用。同时探讨复杂WHERE条件、子查询嵌套,并介绍视图简化查询与索引优化性能的方法。最后提供实践建议与学习资源,助你提升SQL技能以应对实际数据处理需求。
91 1
|
9天前
|
SQL 关系型数据库 MySQL
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
|
2月前
|
SQL 人工智能 自然语言处理
OmniSQL:开源文本到SQL神器!自然语言秒转查询到复杂多表连接等SQL需求
OmniSQL是开源的文本到SQL转换模型,通过创新的数据合成框架生成250万条高质量样本,支持7B/14B/32B三种模型版本,能处理从简单查询到复杂多表连接等各种SQL需求。
215 16
OmniSQL:开源文本到SQL神器!自然语言秒转查询到复杂多表连接等SQL需求
|
2月前
|
SQL 数据库 数据安全/隐私保护
SQL查询优化:where子句的高效使用方式
总的来说,如果将 SQL 查询比喻为一个乐团的演奏,WHERE 子句就像是独奏者,它需要各位乐手的协助,才能发挥出最美妙的音乐。计划好你的演奏,挑选对的音符,在最适当的时间开始演奏,那么,你可以更高效地运用 SQL 查询,更好地把握数据的篇章。
70 19
|
SQL 存储 索引
|
SQL 索引 程序员
SQL查询效率介绍及9个注意事项
原文 http://blog.csdn.net/guoxuepeng123/article/details/8604715 一、查询条件精确,针对有参数传入情况 二、SQL逻辑执行顺序   FROM-->JOIN-->WHERE-->GROUP-->HAVING-->DISTINCT-->...
1226 0
|
8月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")