2、case 函数
简单case函数:
case 测试表达式 when 简单表达式1 then 效果表达式 … [ else 效果表达式 ] end
搜索case函数 与简单case函数形式的区别是 case 后面不跟有测试表达式
3、将查询效果生存到新表中(into语句)
select 列名 into 新表名 from …
新表可以是永久表,也可以是暂时表。 暂时表区别: 局部暂时表(#table)、全局暂时表(##table)
二、查询效果的并、交、差运算
并运算(UNION):将两表进行垂直连接。
交运算 (INTERSECT):取两表相交部分。
差运算 (EXCEPT):表1 - 表2
并交差运算与 join 连接差别的是join是水平归并数据,而并交差则是垂直归并数据。 常考:选择填空题。
三、子查询
运算符 IN 与NOT IN :将表达式与子查询返回的效果集进行比力。 比力运算符:子查询返回的必须是单值。 以上两者都是不相关子查询,即先执行内层查询,在执行外层查询,子查询的查询条件不依赖外层循环。 使用子查询进行存在性测试
关键字:EXISTS 与 NOT EXISTS 子查询返回的效果为 真值或假值。 区别 : 带EXISTS谓词的查询是先执行外层查询,然后在执行内层查询。相关子查询。
四、聚合函数与开窗函数
聚合函数 :SUM、COUNT、AVG、MIN、MAX count(*)返回表中的行数,不会过滤null和重复的行,但count(列名)会过滤 null
开窗函数 :OVER(【partition by】,【order by】)
1、聚合开窗函数 聚合函数与开窗函数的结合 如: SUM OVER (PARTITON BY 列名) …
2、排序开窗函数
RANK() :有重复,但不一连的排名。
DENSE_RANK():有重复,但一连的排名。
NTILE():用于将分组数据按照次序切分成n片,返回当前切片值。将一个有序的数据集划分为多个桶(bucket),并为每行分配一个适当的桶数(切片值,第几个切片,第几个分区等概念)。它可用于将数据划分为相等的小切片,为每一行分配该小切片的数字序号。
ROW_NUMBER(): row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
表示根据COL1分组,在分组内部根据COL2排序,而此函数盘算的值就表示每组内部排序后的次序编号(组内一连的唯一的)。
聚合函数与开窗函数都是位于select 【】 from
五、派生表与公用表
1、派生表(内联视图) 如:(select * form table) AS 别名
2、公用表 如 WITH 公用表名(列名) AS (select * from table)
需要死记得关键字: distinct(不重复的)、percent(百分比)、with ties (取相同)、UNION(并)、INTERSECT(交)、EXCEPT(差)、EXISTS(存在)。
第7章 数据库及数据库对象