鋒利的SQL這本書從實(shí)際的應(yīng)用角度出發(fā),將sql的各種功能詳細(xì)的展現(xiàn)在眼前,學(xué)習(xí)起來很輕松。比較實(shí)用,可以當(dāng)工具書用。作者從實(shí)踐經(jīng)驗(yàn)出發(fā)寫,對于想寫出高效SQL的朋友們會很有幫助。本節(jié)內(nèi)容小編為大家整理帶來的是一份pdf掃描版,內(nèi)容清晰無水印的鋒利的sql電子書,如果你需要查閱這本電子書的完整版,點(diǎn)擊本文相應(yīng)的下載地址進(jìn)行下載即可!該電子書完全免費(fèi),有需要的朋友可以放心下載使用!
鋒利的sql電子書目錄
基礎(chǔ)篇
第1章 SQL簡介
1.1 SQL的歷史起源
1.1.1 CODASYL
1.1.2 IMS
1.1.3 RDBMS和SQL
1.1.4 ANSI和SQL方言
1.2 Transact-SQL語言的類型
1.2.1 DDL語句
1.2.2 DML語句
1.2.3 編程和流控制語句
1.2.4 SQL語句的批處理
1.3 Transact-SQL語法
1.3.1 使用標(biāo)識符進(jìn)行對象引用
1.3.2 設(shè)置對象的數(shù)據(jù)類型
1.3.3 函數(shù)
1.3.4 使用表達(dá)式求值
1.3.5 使用運(yùn)算符進(jìn)行計(jì)算操作
1.3.6 使用注釋符添加SQL語句說明
1.3.7 保留關(guān)鍵字
1.4 常量和變量
1.4.1 常量的類型
1.4.2 變量的類型
1.5 運(yùn)算符
1.5.1 使用算術(shù)運(yùn)算符執(zhí)行數(shù)學(xué)運(yùn)算
1.5.2 使用賦值運(yùn)算符為變量賦值
1.5.3 使用位運(yùn)算符執(zhí)行按位運(yùn)算
1.5.4 使用比較運(yùn)算符進(jìn)行大小比較
1.5.5 使用邏輯運(yùn)算符進(jìn)行條件測試
1.5.6 字符串串聯(lián)運(yùn)算符
1.5.7 一元運(yùn)算符
1.6 常用函數(shù)
1.6.1 聚合函數(shù)
1.6.2 配置函數(shù)
1.6.3 游標(biāo)函數(shù)
1.6.4 日期和時(shí)間函數(shù)
1.6.5 數(shù)學(xué)函數(shù)
1.6.6 數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
1.6.7 字符串函數(shù)
1.6.8 文本和圖像函數(shù)
1.7 查詢工具
1.7.1 使用Management Studio進(jìn)行Windows方式查詢
1.7.2 使用sqlcmd進(jìn)行MS-DOS方式查詢
1.8 SQL書寫規(guī)范
1.8.1 使用大小寫規(guī)范提高詞義識別能力
1.8.2 使用空格提供更好的語言標(biāo)記區(qū)分
1.8.3 使用縮進(jìn)提高語句的邏輯層次表達(dá)能力
1.8.4 使用垂直空白道提高關(guān)鍵詞與參數(shù)的區(qū)分能力
1.8.5 使用分組進(jìn)行語句的段落劃分
第2章 數(shù)據(jù)庫管理
2.1 創(chuàng)建數(shù)據(jù)庫
2.1.1 數(shù)據(jù)庫文件和文件組
2.1.2 CREATE DATABASE語句的語法格式
2.1.3 創(chuàng)建數(shù)據(jù)庫示例
2.1.4 判斷數(shù)據(jù)庫是否已經(jīng)存在
2.2 修改數(shù)據(jù)庫
2.2.1 擴(kuò)展數(shù)據(jù)庫和文件
2.2.2 向數(shù)據(jù)庫中添加、刪除和修改文件組
2.2.3 收縮數(shù)據(jù)庫和文件
2.2.4 設(shè)置數(shù)據(jù)庫選項(xiàng)
2.2.5 重命名數(shù)據(jù)庫
2.3 刪除數(shù)據(jù)庫
第3章 表管理
3.1 表的物理存儲方式
3.1.1 最基本的數(shù)據(jù)存儲單位:數(shù)據(jù)頁
3.1.2 最基本的管理空間單位:區(qū)
3.2 創(chuàng)建表
3.2.1 創(chuàng)建基本表
3.2.2 使用允許和禁止空值設(shè)置進(jìn)行值約束
3.2.3 使用標(biāo)識符和全球唯一標(biāo)識符創(chuàng)建唯一值
3.2.4 為列指定默認(rèn)值
3.3 修改表
3.3.1 為表添加新列
3.3.2 修改表中的列
3.3.3 刪除表中的列
3.4 重命名和刪除表
3.5 臨時(shí)表
3.5.1 創(chuàng)建本地表和全局表
3.5.2 使用表變量代替臨時(shí)表
第4章 索引管理
4.1 索引的基礎(chǔ)知識
4.1.1 索引的類型
4.1.2 索引的特征
4.1.3 常規(guī)索引設(shè)計(jì)規(guī)則
4.2 創(chuàng)建索引
4.2.1 最大索引限制
4.2.2 限制索引參與的數(shù)據(jù)類型
4.2.3 創(chuàng)建聚集索引
4.2.4 創(chuàng)建非聚集索引
4.2.5 創(chuàng)建具有包含性列的索引
4.2.6 為計(jì)算列創(chuàng)建索引
4.3 修改索引
4.3.1 禁用索引
4.3.2 重新組織和重新生成索引
4.3.3 設(shè)置索引選項(xiàng)
4.3.4 重命名索引
4.4 刪除索引
第5章 基本查詢
5.1 基本的SELECT語句
5.1.1 SELECT語句的結(jié)構(gòu)
5.1.2 數(shù)據(jù)庫對象的引用規(guī)則
5.2 使用選擇列表和表別名
5.2.1 選擇所有列
5.2.2 選擇特定列
5.2.3 在選擇列表中使用常量、函數(shù)和表達(dá)式
5.2.4 使用表別名簡化表引用
5.3 使用WHERE子句篩選行
5.3.1 使用比較搜索條件
5.3.2 使用范圍搜索條件
5.3.3 使用列表搜索條件
5.3.4 使用模式匹配搜索條件
5.3.5 使用NULL比較搜索條件
5.4 使用GROUP BY子句和聚合函數(shù)進(jìn)行分組計(jì)算
5.5 使用HAVING子句從分組后結(jié)果中篩選行
5.6 使用ORDER BY子句進(jìn)行排序
5.6.1 指定排序列
5.6.2 指定排序順序
5.6.3 指定排序規(guī)則
5.7 使用TOP子句和SET ROWCOUNT限制結(jié)果集
5.7.1 使用TOP子句返回前幾行
5.7.2 使用SET ROWCOUNT語句限制結(jié)果集大小
5.8 使用DISTINCT消除重復(fù)行
5.9 查詢的邏輯處理
5.9.1 邏輯處理過程簡介
5.9.2 步驟1:使用FROM確定輸入表
5.9.3 步驟2:使用WHERE篩選數(shù)據(jù)
5.9.4 步驟3:進(jìn)行數(shù)據(jù)分組
5.9.5 步驟4:使用HAVING篩選數(shù)據(jù)
5.9.6 步驟5:通過SELECT列表確定返回列
5.9.7 步驟6:使用ORDER BY子句排序查詢結(jié)果
第6章 子查詢
6.1 在選擇列表中使用子查詢
6.1.1 子查詢示例
6.1.2 子查詢與聯(lián)接的關(guān)系
6.2 含有IN和EXISTS的子查詢
6.2.1 使用含有IN的子查詢進(jìn)行單列匹配
6.2.2 使用含有EXISTS的子查詢進(jìn)行整行匹配
6.2.3 含有NOT IN和NOT EXISTS的子查詢
6.3 使用含有比較運(yùn)算符的子查詢
6.4 使用ANY、SOME或ALL關(guān)鍵字進(jìn)行批量比較
6.5 使用多層嵌套子查詢
6.6 子查詢應(yīng)遵循的規(guī)則
第7章 聯(lián)接和APPLY運(yùn)算符
7.1 聯(lián)接的基本知識
7.1.1 聯(lián)接的語法格式
7.1.2 聯(lián)接所使用的邏輯處理階段
7.1.3 列名限定和選擇列表的使用
7.1.4 聯(lián)接條件設(shè)定
7.2 交叉聯(lián)接
7.2.1 交叉聯(lián)接的語法格式
7.2.2 使用交叉聯(lián)接查詢?nèi)繑?shù)據(jù)
7.2.3 使用交叉聯(lián)接優(yōu)化查詢性能
7.2.4 為交叉聯(lián)接添加WHERE子句
7.3 內(nèi)部聯(lián)接
7.3.1 內(nèi)部聯(lián)接的語法格式
7.3.2 使用等值進(jìn)行內(nèi)部聯(lián)接
7.3.3 使用不等值進(jìn)行內(nèi)部聯(lián)接
7.4 外部聯(lián)接
7.4.1 外部聯(lián)接的語法格式
7.4.2 使用左外部聯(lián)接保留左表全部行
7.4.3 使用右外部聯(lián)接保留右表全部行
7.4.4 使用完全外部聯(lián)接保留兩側(cè)表全部行
7.5 自聯(lián)接
7.5.1 使用不同列實(shí)現(xiàn)自聯(lián)接
7.5.2 使用同一列實(shí)現(xiàn)自聯(lián)接
7.6 多表聯(lián)接
7.6.1 順序聯(lián)接
7.6.2 嵌套聯(lián)接
7.6.3 指定聯(lián)接的物理順序
7.6.4 多表聯(lián)接示例
7.7 聯(lián)接算法
7.7.1 嵌套循環(huán)聯(lián)接
7.7.2 合并聯(lián)接
7.7.3 哈希聯(lián)接
7.7.4 使用聯(lián)接提示強(qiáng)制聯(lián)接策略
7.8 使用APPLY運(yùn)算符
第8章 操作結(jié)果集
8.1 合并結(jié)果集
8.1.1 使用UNION與UNION ALL進(jìn)行結(jié)果集合并
8.1.2 使用ORDER BY子句對合并結(jié)果集排序
8.1.3 結(jié)果集的合并順序
8.2 查詢結(jié)果集的差異行
8.2.1 使用EXCEPT運(yùn)算符
8.2.2 查詢?nèi)坎町愋?/p>
8.3 查詢結(jié)果集的相同行
8.3.1 使用INTERSECT運(yùn)算符
8.3.2 查詢?nèi)肯嗤?/p>
8.4 UNION、EXCEPT和INTERSECT的執(zhí)行順序
8.5 在其他語句中使用UNION、EXCEPT和INTERSECT
8.5.1 使用INTO子句指定結(jié)果存儲位置
8.5.2 突破結(jié)果集操作的限制
8.6 使用公用表表達(dá)式
8.6.1 CTE的語法結(jié)構(gòu)
8.6.2 多CTE定義和CTE的多次引用
8.6.3 CTE的間接嵌套
8.6.4 使用遞歸CTE返回分層數(shù)據(jù)
8.7 匯總數(shù)據(jù)
8.7.1 使用CUBE匯總數(shù)據(jù)
8.7.2 使用ROLLUP匯總數(shù)據(jù)
8.7.3 區(qū)分空值和匯總值
8.7.4 返回指定維度的匯總
第9章 窗口計(jì)算和表旋轉(zhuǎn)
9.1 窗口和開窗函數(shù)
9.2 基于窗口的排名計(jì)算
9.2.1 使用ROW_NUMBER()實(shí)現(xiàn)分區(qū)編號
9.2.2 使用RANK()和DENSE_RANK()函數(shù)實(shí)現(xiàn)分區(qū)排名
9.2.3 使用NTILE()函數(shù)實(shí)現(xiàn)數(shù)據(jù)分組
9.3 基于窗口的聚合計(jì)算
9.3.1 分區(qū)聚合計(jì)算與聯(lián)接的比較
9.3.2 對不同類型分區(qū)的聚合計(jì)算
9.4 表旋轉(zhuǎn)
9.4.1 使用PIVOT運(yùn)算符將表的行轉(zhuǎn)換為列
9.4.2 使用UNPIVOT運(yùn)算符將表的列轉(zhuǎn)換為行
第10章 數(shù)據(jù)修改
10.1 插入數(shù)據(jù)
10.1.1 使用INSERT和VALUES插入行
10.1.2 使用INSERT和SELECT子查詢插入行
10.1.3 使用INSERT和EXEC插入行
10.1.4 使用SELECT INTO插入行
10.2 更新數(shù)據(jù)
10.2.1 使用SET和WHERE子句更新數(shù)據(jù)
10.2.2 使用FROM子句更新數(shù)據(jù)
10.2.3 使用CTE和視圖更新數(shù)據(jù)
10.3 刪除數(shù)據(jù)
10.3.1 使用DELETE刪除行
10.3.2 使用TRUNCATE TABLE刪除所有行
10.4 使用TOP限制數(shù)據(jù)修改
10.4.1 使用TOP限制插入數(shù)據(jù)
10.4.2 使用TOP限制更新數(shù)據(jù)
10.4.3 使用TOP限制刪除數(shù)據(jù)
10.5 使用OUTPUT輸出受影響行的信息
10.5.1 在INSERT中使用OUTPUT子句
10.5.2 在DELETE中使用OUTPUT子句
10.5.3 在UPDATE中使用OUTPUT子句
開發(fā)篇
第11章 視圖
11.1 創(chuàng)建視圖
11.1.1 創(chuàng)建簡單視圖
11.1.2 創(chuàng)建索引視圖
11.1.3 創(chuàng)建分區(qū)視圖
11.2 修改視圖
11.3 更新視圖中的數(shù)據(jù)
11.4 刪除和重命名視圖
第12章 游標(biāo)
12.1 創(chuàng)建游標(biāo)的步驟
12.2 快速只進(jìn)游標(biāo)和可滾動(dòng)游標(biāo)
12.3 靜態(tài)游標(biāo)、動(dòng)態(tài)游標(biāo)和由鍵集驅(qū)動(dòng)的游標(biāo)
12.4 使用可更新游標(biāo)進(jìn)行數(shù)據(jù)更新
第13章 存儲過程
13.1 存儲過程的類型
13.1.1 用戶定義的存儲過程
13.1.2 擴(kuò)展存儲過程
13.1.3 系統(tǒng)存儲過程
13.2 SQL存儲過程
13.2.1 創(chuàng)建存儲過程
13.2.2 修改存儲過程
13.2.3 存儲過程的重新編譯
13.2.4 存儲過程的錯(cuò)誤處理
13.3 CLR存儲過程
13.3.1 創(chuàng)建一個(gè)具有輸出參數(shù)的CLR存儲過程
13.3.2 創(chuàng)建返回行集和信息的CLR存儲過程
13.3.3 刪除CLR存儲過程和程序集
13.3.4 CLR與SQL存儲過程的擇取建議
13.4 嵌套存儲過程
第14章 觸發(fā)器
14.1 DML觸發(fā)器
14.1.1 AFTER觸發(fā)器
14.1.2 進(jìn)行事務(wù)提交和回滾操作
14.1.3 檢測對指定列的UPDATE或INSERT操作
14.1.4 指定First和Last觸發(fā)器
14.1.5 嵌套和遞歸觸發(fā)器
14.1.6 INSTEAD OF觸發(fā)器
14.2 使用DDL觸發(fā)器
14.2.1 激發(fā)DDL觸發(fā)器的DDL事件和事件組
14.2.2 創(chuàng)建DDL觸發(fā)器
14.3 CLR觸發(fā)器
14.3.1 SqlTriggerContext類
14.3.2 創(chuàng)建CLR DML觸發(fā)器的步驟
14.3.3 創(chuàng)建CLR DDL觸發(fā)器的步驟
14.4 修改、刪除和禁用觸發(fā)器
14.4.1 DML觸發(fā)器
14.4.2 DDL觸發(fā)器
14.4.3 CLR觸發(fā)器
第15章 用戶自定義函數(shù)
15.1 標(biāo)量UDF
15.2 表值UDF
15.2.1 使用內(nèi)聯(lián)式表值UDF實(shí)現(xiàn)參數(shù)化視圖功能
15.2.2 使用多語句式表值UDF進(jìn)行復(fù)雜計(jì)算
15.3 CLR UDF
15.3.1 標(biāo)量UDF
15.3.2 表值UDF
15.3.3 聚合UDF
15.4 修改和刪除UDF
性能調(diào)整篇
第16章 事務(wù)處理
16.1 自動(dòng)事務(wù)處理
16.2 顯式事務(wù)處理
16.3 隱式事務(wù)處理
16.4 使用嵌套事務(wù)
16.5 使用事務(wù)保存點(diǎn)
第17章 并發(fā)訪問控制
17.1 并發(fā)影響和并發(fā)控制類型
17.1.1 并發(fā)影響
17.1.2 并發(fā)控制
17.2 鎖管理器的數(shù)據(jù)鎖定
17.2.1 鎖的粒度和層次結(jié)構(gòu)
17.2.2 鎖的模式
17.2.3 鎖的兼容性
17.2.4 鎖升級
17.3 自定義鎖定
17.3.1 自定義鎖的超時(shí)時(shí)間
17.3.2 使用表級鎖提示
17.4 使用事務(wù)隔離級別
17.5 使用行版本的事務(wù)隔離級別
17.5.1 快照隔離和行版本控制的工作原理
17.5.2 使用基于行版本控制的隔離級別
17.6 處理死鎖
17.6.1 防止死鎖的方法
17.6.2 使用TRY...CATCH處理死鎖
第18章 查詢的優(yōu)化與執(zhí)行
18.1 查詢的優(yōu)化
18.1.1 查詢計(jì)劃定義的內(nèi)容
18.1.2 生成查詢計(jì)劃
18.2 執(zhí)行計(jì)劃的緩存與執(zhí)行
18.2.1 執(zhí)行計(jì)劃的副本和執(zhí)行上下文
18.2.2 執(zhí)行計(jì)劃的開銷管理
18.3 執(zhí)行計(jì)劃的重用
18.3.1 通過簡單參數(shù)化提高計(jì)劃重用率
18.3.2 通過強(qiáng)制參數(shù)化提高計(jì)劃重用率
18.3.3 使用顯式參數(shù)化提高計(jì)劃重用率
18.4 執(zhí)行計(jì)劃的重新編譯
實(shí)戰(zhàn)篇
第19章 SQL查詢演練
19.1 同一時(shí)間范圍內(nèi)并發(fā)數(shù)統(tǒng)計(jì)
19.1.1 使用子查詢
19.1.2 使用CTE
19.2 時(shí)間段天數(shù)統(tǒng)計(jì)
19.3 數(shù)字范圍統(tǒng)計(jì)
19.3.1 查找剩余空位區(qū)間和剩余空位編號
19.3.2 查找已用貨位區(qū)間
19.4 地域范圍內(nèi)最大數(shù)統(tǒng)計(jì)
19.5 從分組中取前幾行數(shù)據(jù)
19.5.1 使用聯(lián)接獲取前幾行
19.5.2 使用窗口排名函數(shù)獲取前幾行
19.6 取出多列中的非空值
19.6.1 姓名問題處理
19.6.2 工資問題處理
19.7 將數(shù)據(jù)由行轉(zhuǎn)換為列