《SQL學習指南(第3版)》介紹了SQL語言的基礎(chǔ)知識以及高級特性,包括SQL基本查詢、過濾、多數(shù)據(jù)表查詢、集合、數(shù)據(jù)操作、分組和聚合、子查詢、連接、條件邏輯、事務、索引和約束、視圖等內(nèi)容。同時,為了適應近年來數(shù)據(jù)庫領(lǐng)域的發(fā)展變化,本書針對大數(shù)據(jù)、SQL跨平臺數(shù)據(jù)庫服務和數(shù)據(jù)分析等領(lǐng)域的需求,增加了處理大型數(shù)據(jù)庫的實現(xiàn)策略和擴展技術(shù),以及報表和分析工具等內(nèi)容。
《SQL學習指南(第3版)》內(nèi)容循序漸進,每章的主題相對獨立,并提供了豐富、可擴展的示例,同時還配備精選練習,有利于讀者有效學習和快速掌握SQL語言。本書適合作為數(shù)據(jù)庫應用開發(fā)者和數(shù)據(jù)庫管理員的必備入門書,也可供SQL相關(guān)從業(yè)者查閱和參考。
1.內(nèi)容更新?lián)Q代
新增了SQL和大數(shù)據(jù)、分析函數(shù)以及處理大型數(shù)據(jù)庫的策略等新內(nèi)容。
2.獨立知識點,多配圖注釋,助你理解SQL
本書每章是獨立的,使用大量插圖和帶有注解的示例介紹與一個關(guān)鍵的SQL概念或技術(shù)
3.習題+解析,鞏固消化,幫助記憶
配套練習題可以讓你練習并鞏固所學技能,還可以參考對應習題答案,查漏補缺,讓您的學習效率更上一層樓。
4.循序漸進,容易上手
本書內(nèi)容講解由淺入深,循序漸進,適合作為數(shù)據(jù)庫應用開發(fā)人士和數(shù)據(jù)庫管理員的入門參考書籍
艾倫·博利厄(Alan Beaulieu),從事數(shù)據(jù)庫設(shè)計和定制數(shù)據(jù)庫構(gòu)建工作已有30余年。他目前經(jīng)營著自己的咨詢公司,主要在金融服務領(lǐng)域提供大型數(shù)據(jù)庫的設(shè)計、開發(fā)和性能調(diào)優(yōu)服務。有空的時候,Alan喜歡與家人共度時光,與樂隊一起打鼓,彈奏他的男高音尤克里里,或者在與妻子遠足時尋找有美景的午餐地點。Alan擁有康奈爾大學的工程學學士學位。
第 1章 背景知識 1
1.1 數(shù)據(jù)庫簡介 1
1.1.1 非關(guān)系型數(shù)據(jù)庫系統(tǒng) 2
1.1.2 關(guān)系模型 4
1.1.3 術(shù)語 6
1.2 什么是SQL 6
1.2.1 SQL語句分類 7
1.2.2 SQL:一種非過程化語言 8
1.2.3 SQL示例 9
1.3 什么是MySQL 11
1.4 跨平臺SQL 12
1.5 內(nèi)容前瞻 12
第 2章 創(chuàng)建和填充數(shù)據(jù)庫 13
2.1 創(chuàng)建MySQL數(shù)據(jù)庫 13
2.2 使用命令行工具mysql 14
2.3 MySQL數(shù)據(jù)類型 16
2.3.1 字符型數(shù)據(jù) 16
2.3.2 數(shù)值型數(shù)據(jù) 19
2.3.3 時間型數(shù)據(jù) 20
2.4 創(chuàng)建數(shù)據(jù)表 22
2.4.1 第 1步:設(shè)計 22
2.4.2 第 2步:改進 23
2.4.3 第3步:構(gòu)建SQL模式語句 24
2.5 填充和修改數(shù)據(jù)表 27
2.5.1 插入數(shù)據(jù) 27
2.5.2 更新數(shù)據(jù) 32
2.5.3 刪除數(shù)據(jù) 32
2.6 常見錯誤及響應 32
2.6.1 非唯一的主鍵 33
2.6.2 不存在的外鍵 33
2.6.3 列值違規(guī) 33
2.6.4 無效的日期轉(zhuǎn)換 34
2.7 Sakila數(shù)據(jù)庫 35
第3章 查詢?nèi)腴T 38
3.1 查詢機制 38
3.2 查詢子句 40
3.3 select子句 40
3.3.1 列的別名 42
3.3.2 移除重復數(shù)據(jù) 43
3.4 from子句 45
3.4.1 數(shù)據(jù)表 45
3.4.2 數(shù)據(jù)表鏈接 48
3.4.3 定義數(shù)據(jù)表別名 49
3.5 where子句 49
3.6 group by和having子句 52
3.7 order by子句 53
3.7.1 升序排序和降序排序 55
3.7.2 通過數(shù)字占位符進行排序 56
3.8 練習 57
第4章 過濾 58
4.1 條件評估 58
4.1.1 使用括號 59
4.1.2 使用not運算符 60
4.2 構(gòu)建條件 60
4.3 條件類型 61
4.3.1 相等條件 61
4.3.2 范圍條件 63
4.3.3 成員條件 67
4.3.4 匹配條件 69
4.4 null:4個字母的單詞 72
4.5 練習 75
第5章 多數(shù)據(jù)表查詢 77
5.1 什么是連接 77
5.1.1 笛卡兒積 78
5.1.2 內(nèi)連接 79
5.1.3 ANSI連接語法 80
5.2 連接3個或以上的數(shù)據(jù)表 82
5.2.1 使用子查詢作為數(shù)據(jù)表 85
5.2.2 使用同一數(shù)據(jù)表兩次 86
5.3 自連接 87
5.4 練習 88
第6章 使用集合 90
6.1 集合論入門 90
6.2 集合論實踐 92
6.3 集合運算符 94
6.3.1 union運算符 94
6.3.2 intersect運算符 96
6.3.3 except運算符 97
6.4 集合運算規(guī)則 99
6.4.1 對符合查詢結(jié)果排序 99
6.4.2 集合運算的優(yōu)先級 100
6.5 練習 102
第7章 數(shù)據(jù)生成、操作和轉(zhuǎn)換 103
7.1 處理字符串數(shù)據(jù) 103
7.1.1 生成字符串 104
7.1.2 操作字符串 108
7.2 處理數(shù)值型數(shù)據(jù) 115
7.2.1 執(zhí)行算術(shù)函數(shù) 116
7.2.2 控制數(shù)值精度 117
7.2.3 使用有符號數(shù) 119
7.3 處理時間型數(shù)據(jù) 120
7.3.1 處理時區(qū) 120
7.3.2 生成時間型數(shù)據(jù) 122
7.3.3 操作時間型數(shù)據(jù) 125
7.4 轉(zhuǎn)換函數(shù) 129
7.5 練習 130
第8章 分組和聚合 131
8.1 分組的概念 131
8.2 聚合函數(shù) 134
8.2.1 隱式分組與顯式分組 135
8.2.2 統(tǒng)計不同的值 136
8.2.3 使用表達式 136
8.2.4 處理null 137
8.3 生成分組 138
8.3.1 單列分組 139
8.3.2 多列分組 139
8.3.3 通過表達式分組 140
8.3.4 生成匯總 140
8.4 分組過濾條件 142
8.5 練習 143
第9章 子查詢 144
9.1 什么是子查詢 144
9.2 子查詢類型 145
9.3 非關(guān)聯(lián)子查詢 145
9.3.1 多行單列子查詢 147
9.3.2 多列子查詢 151
9.4 關(guān)聯(lián)子查詢 153
9.4.1 exists運算符 154
9.4.2 使用關(guān)聯(lián)子查詢操作數(shù)據(jù) 156
9.5 何時使用子查詢 157
9.5.1 子查詢作為數(shù)據(jù)源 157
9.5.2 子查詢作為表達式生成器 163
9.6 子查詢小結(jié) 165
9.7 練習 166
第 10章 再談連接 167
10.1 外連接 167
10.1.1 左外連接與右外連接 170
10.1.2 三路外連接 171
10.2 交叉連接 172
10.3 自然連接 178
10.4 練習 179
第 11章 條件邏輯 181
11.1 什么是條件邏輯 181
11.2 case表達式 182
11.2.1 搜索型case表達式 182
11.2.2 簡單的case表達式 184
11.3 case表達式示例 184
11.3.1 結(jié)果集變換 184
11.3.2 檢查存在性 186
11.3.3 除零錯誤 188
11.3.4 條件更新 189
11.3.5 處理null值 189
11.4 練習 190
第 12章 事務 192
12.1 多用戶數(shù)據(jù)庫 192
12.1.1 鎖定 192
12.1.2 鎖的粒度 193
12.2 什么是事務 194
12.2.1 啟動事務 195
12.2.2 結(jié)束事務 196
12.2.3 事務保存點 197
12.3 練習 199
第 13章 索引和約束 201
13.1 索引 201
13.1.1 創(chuàng)建索引 202
13.1.2 索引類型 206
13.1.3 如何使用索引 208
13.1.4 索引的不足 209
13.2 約束 210
13.3 練習 213
第 14章 視圖 214
14.1 什么是視圖 214
14.2 為什么要使用視圖 216
14.2.1 數(shù)據(jù)安全 217
14.2.2 數(shù)據(jù)聚合 217
14.2.3 隱藏復雜性 218
14.2.4 連接分區(qū)數(shù)據(jù) 219
14.3 可更新視圖 219
14.3.1 更新簡單視圖 220
14.3.2 更新復雜視圖 221
14.4 練習 223
第 15章 元數(shù)據(jù) 225
15.1 關(guān)于數(shù)據(jù)的數(shù)據(jù) 225
15.2 information_schema 226
15.3 使用元數(shù)據(jù) 231
15.3.1 模式生成腳本 231
15.3.2 驗證部署 234
15.3.3 動態(tài)SQL生成 235
15.4 練習 239
第 16章 分析函數(shù) 240
16.1 分析函數(shù)的概念 240
16.1.1 數(shù)據(jù)窗口 240
16.1.2 本地化排序 242
16.2 排名 243
16.2.1 排名函數(shù) 243
16.2.2 生成多個排名 246
16.3 報表函數(shù) 249
16.3.1 窗口框架 251
16.3.2 lag和lead 254
16.3.3 列值拼接 255
16.4 練習 256
第 17章 處理大型數(shù)據(jù)庫 258
17.1 分區(qū) 258
17.1.1 分區(qū)的概念 259
17.1.2 數(shù)據(jù)表分區(qū) 259
17.1.3 索引分區(qū) 259
17.1.4 分區(qū)方法 260
17.1.5 分區(qū)的優(yōu)勢 267
17.2 集群 268
17.3 分片 268
17.4 大數(shù)據(jù) 269
17.4.1 Hadoop 270
17.4.2 NoSQL和文檔數(shù)據(jù)庫 270
17.4.3 云計算 270
17.4.4 小結(jié) 271
第 18章 SQL和大數(shù)據(jù) 272
18.1 Apache Drill簡介 272
18.2 使用Drill查詢文件 273
18.3 使用Drill查詢MySQL 275
18.4 使用Drill查詢MongoDB 278
18.5 使用Drill處理多個數(shù)據(jù)源 284
18.6 SQL的未來 286
附錄A 示例數(shù)據(jù)庫的ER圖 287
附錄B 練習答案 289