码迷,mamicode.com
首页 > 数据库 > 详细

《起 航 之SQL技能全掌握》上

时间:2017-09-02 00:11:36      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:sql


技术分享

目        录


第一部分:SELECT 查询篇


一. SELECT 基础查询

1.1. SELECT 简介

1.2. SQL99中 SELECT 的基本语法

1.2.1. 语法介绍

1.2.1.1. 完整的 SQL 语句

1.2.1.2. ALL、DISTINCT、UNIQUE 的区别

1.2.1.3. 表和列的别名

1.2.1.4. 双引号的表名和列名

1.2.1.5. 取 TOP-N 的方法

1.2.1.6. ORDER BY 字句

1.2.1.6.1. ORDER BY 时可以使用列名、列别名、列位置表示 

1.2.1.6.2. 错误的 ORDER BY 语句

1.2.1.6.3. 特殊的 ORDER BY 语句(DBMS_RANDOM随机函数) 

1.2.1.6.4. ORDER BY 时 NULLS FIRST | NULLS LAST 

1.2.1.7. GROUP BY 字句

1.2.1.7.1. SELECT 中出现的非多行函数的所有列,必须出现在 GROUP BY 字句中 

1.2.1.7.2. GROUP BY 字句中出现的所有列,可以出现在 SELECT 字句中  

1.2.1.7.3. GROUP BY 中不能出现列的别名  

1.2.1.7.4. WHERE 和 HAVING 的区别 

1.2.1.8. SQL 的执行顺序

1.2.1.9. ORDER BY、GROUP BY 和 DISTINCT 

1.2.1.10. *(星号)通配符

1.2.1.11. FOR UPDATE 字句

1.2.2. ORACLE 中 SELECT 的完整语法

1.2.2.1. WITH 子句  

1.2.2.2. FLASHBACK QUERIES(闪回查询) 

1.2.2.3. 系统表 DUAL 

1.2.2.4. HINT 提示 

1.2.2.5. CONNECT BY(递归查询) 

1.2.2.6. 分层查询 

1.2.2.7. PIVOT 与 UNPIVOT  


二. 子查询

2.1. 查询与子查询

2.2. 子查询分类

2.2.1. Correlated Sub-Query(相关子查询) 

2.2.2. Uncorrelated Sub-Query(非相关子查询)

2.2.3. SELECT 子句中的子查询

2.2.4. FROM 子句中的子查询(也称为内联视图)

2.2.5. WHERE 子句中的子查询(也称为嵌套子查询)

2.2.5.1. 单行子查询 

2.2.5.2. 多行子查询 

2.2.5.3. 多列子查询

2.2.5.4. HAVING 中的子查询 

2.2.6. 子查询中使用 >、<、<>、=或组合运算符的注意事项

2.2.7. 子查询中使用 >、<、<>、= 与 ALL、SOME、ANY 组合时,或子查询中单独使用 ALL、SOME、ANY 时不受限制

2.2.8. IN 和 EXISTS 

2.2.8.1. IN 任何一个,相当与 JOIN 的作用 

2.2.8.2. EXISTS 的用法

2.2.8.3. IN 不会对 NULLS 进行处理

2.2.9. DDL 语句使用子查询

2.2.10. DML 语句使用子查询

2.2.10.1. INSERT 语句使用子查询

2.2.10.2. UPDATE 语句使用子查询

2.2.10.3. DELETE 语句使用子查询

2.2.11. 主查询和子查询相互引用的问题

2.2.11.1. 子查询可以引用主查询的字段

2.2.11.2. 主查询不能引用子查询的字段

2.2.12. TOP-N 中的子查询需要排序

2.3. 子查询的注意事项

2.4. 补充案例

2.4.1. 子查询那点事

2.4.2. 子查询引用主查询字段报错的案例 


三. SET(集合)语句

3.1. 集合语句简介

3.2. 集合语句的优先级和返回结果

3.2.1. 复活查询中SELECT 使用字符数据的返回类型

3.2.2. 复活查询中SELECT 使用数字数据的返回类型

3.3. 集合运算符的限制

3.4. 集合 SQL 实例

3.4.1. 字符数据的返回类型

3.4.2. 数字数据的返回类型

3.4.3. UNION ALL 返回重复值

3.4.4. UNION 返回不重复值

3.4.5. 集合不能使用在大数据类型上(UNION ALL 除外)

3.4.6. 集合中表达式的排序

3.4.7. NULL 值的集合操作

3.4.8. NULL 与 NOT NULL 的集合

3.5. 补充案例

3.5.1. UNION ALL 优化案例

3.5.2. 优化大法之合并优化法

3.5.3. 使用减法优化的案例


四. JOIN(连接)

4.1. JOIN 简介

4.2. JOIN 分类

4.2.1. JOIN 图形说明

4.2.2. INNON JOIN(内连接)

4.2.2.1. INNON JOIN 基本语法

4.2.2.2. INNON JOIN 实例

4.2.3. OUTER JOIN(外连接)

4.2.3.1. LEFT OUTER JOIN 语法

4.2.3.1. LEFT OUTER JOIN 实例

4.2.3.3. RIGHT OUTER JOIN 语法

4.2.3.4. RIGHT OUTER JOIN 实例

4.2.3.5. FULL OUTER JOIN 语法

4.2.3.6. FULL OUTER JOIN 实例

4.2.4. OUTER JOIN 中 ON 和 WHERE 的区别

4.2.4.1. LEFT JOIN 中 ON 和 WHERE 的区别

4.2.4.2. RIGHT JOIN 中 ON 和 WHERE 的区别

4.2.5. OUTER JOIN 时 ORACLE 语法的限制

4.2.6. OUTER JOIN 中的左表和右表

4.2.7. OUTER JOIN 中 LEFT 多表的问题

4.2.8. Antjoins(反连接)

4.2.8.1. 关联谓词 IS NULL 的问题

4.2.9. Semijoins(半连接) 

4.2.9.1. Semijoins 或 Antjoins 与 OR 运算符

4.2.10. Selfjoins 自连接

4.2.11. Partitioned outer joins(分区外连接) 

4.2.12. Cartesian joins(笛卡尔积连接)

4.2.13. Natural joins(自然连接)

4.2.14. Cross(Outer)apply joins

4.2.14.1. Cross apply joins

4.2.14.2. Outer apply joins

4.2.15. ON、USING、WHERE 的关系

4.3. 补充案例

4.3.1. 使用分区外连接优化的案例

4.3.2. 一个有意思的 SQL 案例


五. 层次化查询

5.1. 层次化的原理和语法

5.1.1. 层次化简介

5.1.2. 关于 PRIOR

5.1.3. START WITH

5.1.4. LEVEL 伪列

5.1.5. 节点和分枝的裁剪

5.1.6. SIBLINGS 排序

5.1.7. Connect_by_root 伪列

5.1.8. 分层查询的处理流程

5.1.9. 层次结构的形成步骤

5.2. 层次结构的实例

5.2.1. Connect by 递归子句

5.2.2. Connect by 的复杂语句

5.2.3. Connect by 导致的循环

5.2.4. Level 伪列实例

5.2.5. Start with 子句实例

5.2.6. Connect_by_isleaf 伪列实例

5.2.7. Connect_by_root 伪列实例

5.2.8. Sys_connect_by_path 伪列实例

5.2.9. Siblings 分层排序

5.2.10. Prior 的位置决定层次的关系

5.3. 补充案例

5.3.1. 小话递归

5.3.2. TREE 的原理和实例说明

5.3.3. 求旅客的旅行轨迹


六. WITH 子句

6.1. WITH 子句的原理和语法

6.1.1. WITH 子句简介

6.1.2. WITH 子句语法

6.2. WITH 子句的实例

6.2.1. 定义一个别名的 WITH 子句

6.2.2. 定义多个别名的 WITH 子句

6.2.3. 复杂的 WITH 子句

6.2.3.1. WITH 子句指定列的别名

6.2.3.2. DEPTH FIRST BY 深度优先

6.2.3.3. BREADTH FIRST BY 广度优先

6.2.3.4. CYCLE SET 循环

6.2.4. 用 WITH 子句实现递归查询

6.2.5. WITH 子句中引用 WITH 的别名

6.2.6. Materialize 强制生成临时表

6.2.7. WITH 子句的总结

6.3. 补充案例

6.3.1. 一个有意思的 SQL 案例

6.3.2. SQL 优化之阴沟翻船

6.3.3. 用 WITH 简化 SQL 的案例


七. 分析函数

7.1. 分析函数简介和语法

7.1.1. 分析函数简介

7.1.2. 分析函数语法

7.1.3. 分析函数分类

7.2. 分析函数的实例

7.2.1. 等级函数(Ranking),rank、dense_rank、row_number等函数

7.2.1.1. Rank作为聚合函数

7.2.1.2. Rank作为分析函数

7.2.1.3. Dense_rank作为聚合函数

7.2.1.4. Dense_rank作为分析函数

7.2.1.5. Row_number作为分析函数

7.2.2. 开窗函数(Windowing),sum、max、min、avg、count等函数

7.2.2.1. Sum函数

7.2.2.2. Max |Min函数

7.2.2.3. Avg |Count函数

7.2.3. 制表函数(Reporting),sum、max、min、avg、count等函数

7.2.3.1. 制表函数语法

7.2.3.2. 制表函数案例

7.2.3.3. 开窗函数与制表函数的区别

7.2.4. TOP-N、BOTTOM-N、FIRST、LAST、NTILE 函数

7.2.4.1. First |Last函数

7.2.4.2. First_value|Last_value函数

7.2.4.3. Top-n |Bottom-n函数

7.2.5. LAG | LEAD 函数

7.2.6. LISTAGG 函数

7.2.6.1. LISTAGG作为聚合函数

7.2.6.2. LISTAGG作为分析函数

7.3. 补充案例

7.3.1. 分析函数小案例

7.3.2. 一个例子,掌握分析函数的用法

7.3.3. Interval的分析函数



本文出自 “srsunbing” 博客,请务必保留此出处http://srsunbing.blog.51cto.com/3221858/1961973

《起 航 之SQL技能全掌握》上

标签:sql

原文地址:http://srsunbing.blog.51cto.com/3221858/1961973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!