数据库——高级数据库查询

目标

掌握一般数据查询功能扩展
掌握查询的并,交,差运算
掌握子查询的使用
了解其他一些查询功能

一般数据查询功能扩展

SELECT [DISTINCT] [TOP N] select_list 查询指定列
[INTO new_table] 将查询结果指定到新表
[FROM table_source] 查询所在表
[WHERE search_condition] 指定返回行的收缩条件
[GROUP BY group_by_expression] 指定查询结果的分组条件
[HAVING search_condition] 指定组或聚合函数组的搜索条件
[ORDER BY order_expression [ASC|DESC]] 指定结果集排序方式
[COMPUTE expression] 在结果集的末尾生成结果解数据行

使用TOP 限制结果集
TOP n [percent][WITH TIES]
TOP n 前n行
TOP n[percent] 前n% 行
[WITH TIES]:包括最后一行取值并列的结果

使用CASE 函数
分情况显示不同类型的数据
CASE 函数是一种多分支表达式
两种类型:
简单CASE 函数
搜索CASE 函数

语法:
CASE
WHEN 布尔表达式1 then 结果表达式1
WHEN 布尔表达式2 then 结果表达式2

WHEN 布尔表达式n then 结果表达式n
[ELSE 结果表达式 n+1]
END

将查询结果保存到新表中
SELECT 查询列表序列 INTO <新表名>
FROM 数据源…(其他行过滤,分组语句)
注意:表名前加 # 局部临时表 ## 全局临时表
只有表名 为永久表

查询结果的 交,并,差运算

并运算:UNION
将多个查询结果合并为一个结果集

语法:
SELECT 语句1
UNION [ALL]
SELECT 语句2
UNION [ALL]

使用UNION 注意
要进行合并的查询,SELECT 列数必须相同,语义相同
每一个相对应的数据类型隐式兼容,char(20)与varchar(40)
合并后结果采用第一个SELECT语句列标题
若需排序,则GRUOP BY 语句下载最后一个 SELECT 之后,且排序的第一句是第一个SELECT 中的列名

交运算
交运算:返回同时在连个集合中出现的记录
语法:
SELECT 语句1
INTERSECT
SELECT 语句2
INTERSECT…
SELECT 语句n

差运算
差运算:返回第一个集合中有而第二个集合中没有的记录
语法:
SELECT 语句1
EXCEPT
SELECT 语句2
EXCEPT …
SELECT 语句n

相关子查询

子查询 是一条包含在另一条SELECT 语句里的SELECT 语句,外层语句交外层查询,内层SELECT 语句叫内层查询(或子查询)
子查询 总是写在 圆括号中

包括子查询的 SELECT 语句主要采用以下格式一种:
(1) WHERE expression [NOT] IN subquery
(2) WHERE expression comparison_operator [ANY|ALL]
(3) WHERE [NOT] EXISTS (subquery)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他形式的子查询

1 替代表达式的子查询
在select 的选择列表中嵌入一个只返回一个标量值的子查询
在这里插入图片描述
派生表:
也称内联视图,是将子查询作为一个表处理,产生的新生的新表为派生表
例:查询至少买 G001 和G002 两种商品的顾客号和顾客名
在这里插入图片描述
在这里插入图片描述

开窗函数
在SQL Server 中,一组行被称为一个窗口。
在聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不想普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口

与聚合函数不同的是,开窗函数在增加一个OVER 关键字
开窗寒舍的调用格式为:
函数名(列)OVER (选项)
over :表示把函数当成开窗函数而不是聚合函数
SQL 标准允许将所有聚合函数用做开窗函数,使用OVER 关键字类区分两种用法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其他排名函数
DENSE_RANK()
排名是连续函数
NTILE ()
将有序分区的行划分到指定书目的组中,编号从1 开始,函数返回此行所属的组的编号
ROW_NUMBER()
返回结果集中每一个分区中的序列号,每个分区从第一行开始

公用表达式
公用表达式:将查询结果集指定一个临时名字,这些命名的结果集就是公用表表达式
在这里插入图片描述
在这里插入图片描述

发布了12 篇原创文章 · 获赞 0 · 访问量 255

猜你喜欢

转载自blog.csdn.net/inventertom/article/details/104795597