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