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