30天輕松學會SQL

[美]傑夫·揚努齊(Jeff Iannucci )

  • 30天輕松學會SQL-preview-1
30天輕松學會SQL-preview-1

相關主題

商品描述

本書共分為24章,每一章都在前一章的基礎上逐步深入,幫助你從最基礎的數據檢索開始,逐漸掌握如何搜索特定數據、連接多個數據集、修改數據,甚至創建數據庫對象來存儲數據和SQL腳本。書中不僅展示了如何使用SQL,還給出了一些提示和警告,幫你快速學習相關知識和技能。你只需每天花一小時看一章(花40分鐘閱讀,然後花20分鐘練習相關內容),一個月便能輕松掌握SQL。

本書適合使用Excel、Tableau、Power BI等工具的數據分析師,以及不熟悉SQL和數據庫的軟件開發人員閱讀。

作者簡介

傑夫·揚努齊(Jeff Iannucci),Straight Path IT Solutions高級顧問,擁有20多年數據庫開發與管理經驗。曾服務於醫療、金融、零售等多個行業,專註於數據庫性能調優與查詢優化,長期致力於幫助開發者和數據從業者提升數據庫技能。

【譯者簡介】

陳臣,甲骨文(Oracle)公司首席工程師,前vivo互聯網數據庫專家,有超過10年的數據庫管理和架構經驗,擅長MySQL數據庫日常操作的原理剖析。

《MySQL實戰》作者,公眾號"MySQL實戰”作者,博客園推薦的博客博主iVictor,博客全網閱讀量超300萬。

目錄大綱

第1章 開始之前 1

1.1 SQL的重要性 1

1.2 本書適合你嗎 2

1.2.1 SQL的廣泛用途 2

1.2.2 SQL的多種實現 2

1.2.3 關於AI與SQL 3

1.3 如何使用本書 3

1.3.1 主要章節 3

1.3.2 動手實驗 4

1.3.3 深入探索 4

1.4 搭建實驗環境 4

1.4.1 安裝MySQL和MySQL Workbench 4

1.4.2 執行實驗腳本 4

1.5 在線資源 5

1.6 快速掌握SQL實用技能 5

第2章 第一個SQL查詢 6

2.1 熟悉電子表格就能理解數據表 6

2.2 學習SQL就像上英語課一樣 8

2.3 編寫第一個SQL查詢 10

2.4 關鍵術語和關鍵字 15

2.5 實驗練習 15

2.6 實驗答案 16

第3章 查詢數據 17

3.1 SELECT語句的規則 17

3.1.1 SELECT語句的基本要求 17

3.1.2 關鍵字和保留字 18

3.1.3 不區分大小寫 19

3.1.4 格式與空白字符 19

3.2 從表中檢索數據 20

3.2.1 檢索單列的數據 21

3.2.2 檢索多列的數據 22

3.2.3 使用別名重命名輸出列 23

3.2.4 檢索所有列 24

3.3 實驗練習 26

3.4 實驗答案 26

第4章 數據排序、跳過行數據與添加註釋 27

4.1 數據排序 27

4.1.1 按單列排序 27

4.1.2 按多列排序 29

4.1.3 指定排序方向 30

4.1.4 按未顯示的列排序 31

4.1.5 按位置排序 32

4.2 跳過行數據 32

4.2.1 使用LIMIT限制結果數量 33

4.2.2 使用OFFSET選擇不同的有限結果集 34

4.2.3 在其他RDBMS中限制數據 35

4.3 為數據添加註釋 35

4.4 實驗練習 37

4.5 實驗答案 37

第5章 根據特定值進行過濾 39

5.1 根據單個條件進行過濾 39

5.1.1 根據數值進行過濾 39

5.1.2 根據字符串值進行過濾 41

5.1.3 根據日期值進行過濾 42

5.2 根據多個條件進行過濾 43

5.2.1 需要滿足所有條件的過濾 43

5.2.2 滿足任一條件的過濾 44

5.2.3 控制多個過濾條件的執行順序 45

5.2.4 使用ORDER BY對過濾後的數據進行排序 47

5.3 實驗練習 48

5.4 實驗答案 48

第6章 使用多個值、範圍和排除條件進行過濾 49

6.1 根據特定值進行過濾 49

6.2 根據值的範圍進行過濾 51

6.2.1 根據開放式範圍進行過濾 51

6.2.2 過濾指定範圍內的值 52

6.3 否定過濾條件 54

6.3.1 排除特定值 54

6.3.2 否定任意過濾條件 55

6.4 組合不同類型的過濾條件 56

6.5 比較運算符回顧 58

6.6 實驗練習 58

6.7 實驗答案 58

第7章 使用通配符和空值進行過濾 60

7.1 使用通配符進行過濾 60

7.1.1 使用百分號(%)進行過濾 61

7.1.2 使用下劃線進行過濾 63

7.2 使用空值進行過濾 64

7.2.1 錯誤的空值查詢方法 65

7.2.2 正確的空值查詢方法 66

7.2.3 查詢非空值的方法 68

7.3 實驗練習 69

7.4 實驗答案 69

第8章 多表查詢 71

8.1 數據關系的規則 71

8.1.1 沒有關系的數據存儲方式 72

8.1.2 帶有關系的數據存儲方式 73

8.2 數據連接的方法 76

8.2.1 兩表關聯查詢 76

8.2.2 連接更多的表 78

8.3 表別名 80

8.4 另一種連接數據的方式 81

8.5 實驗練習 82

8.6 實驗答案 83

第9章 使用不同類型的連接 85

9.1 內連接 85

9.2 外連接 87

9.2.1 左外連接 87

9.2.2 右外連接 90

9.2.3 使用外連接查找沒有匹配項的行 91

9.2.4 左連接和右連接的互換 92

9.2.5 USING關鍵字 93

9.2.6 自然連接 93

9.3 交叉連接 94

9.4 實驗練習 95

9.5 實驗答案 95

第10章 使用集合運算符合並多個查詢結果 97

10.1 使用集合運算符 97

10.2 UNION運算符 98

10.3 UNION ALL 101

10.4 在MySQL中模擬FULL OUTER JOIN 102

10.5 INTERSECT運算符 104

10.6 EXCEPT運算符 105

10.7 實驗練習 106

10.8 實驗答案 108

第11章 使用子查詢和邏輯運算符 109

11.1 一個簡單的子查詢示例 109

11.2 邏輯運算符與子查詢 111

11.2.1 ANY運算符和IN運算符 112

11.2.2 ALL運算符和NOT IN運算符 113

11.2.3 EXISTS運算符和NOT EXISTS運算符 115

11.3 子查詢在SQL其他子句中的應用 116

11.3.1 在FROM子句中使用子查詢 116

11.3.2 在SELECT子句中使用子查詢 117

11.4 實驗練習 118

11.5 實驗答案 118

第12章 數據分組 120

12.1 聚合函數 120

12.1.1 SUM函數 120

12.1.2 COUNT函數 121

12.1.3 MIN函數 122

12.1.4 MAX函數 122

12.1.5 AVG函數 123

12.1.6 結合過濾條件與聚合函數 123

12.2 使用GROUP BY進行數據聚合 124

12.2.1 GROUP BY的使用要求 124

12.2.2 GROUP BY與空值 126

12.3 使用HAVING進行過濾 126

12.4 查詢的邏輯處理順序 128

12.5 DISTINCT關鍵字 129

12.6 實驗練習 130

12.7 實驗答案 131

第13章 使用變量 132

13.1 用戶自定義變量 132

13.1.1 聲明你的第一個用戶自定義變量 133

13.1.2 用戶自定義變量的使用規則 134

13.1.3 使用你的第一個用戶自定義變量 134

13.2 在FROM子句和HAVING子句中使用變量進行過濾 135

13.3 為變量賦予未知值 137

13.3.1 回顧查詢的執行過程 137

13.3.2 使用SELECT為變量賦未知值 138

13.3.3 使用變量時的性能考量 139

13.3.4 對比SET與SELECT進行變量賦值時的使用差異 140

13.4 關於變量的其他說明 141

13.4.1 使用SELECT為變量賦字面值 141

13.4.2 為變量賦空值 141

13.4.3 改變變量的數據類型 142

13.5 實驗練習 142

13.6 實驗答案 143

第14章 使用函數進行查詢 144

14.1 使用函數時需要註意的問題 144

14.1.1 不同RDBMS中的函數命令存在差異 144

14.1.2 函數命令可能帶來的性能問題 144

14.2 字符串函數 145

14.2.1 大小寫轉換函數 145

14.2.2 空格去除函數 146

14.2.3 其他字符串函數 148

14.3 日期和時間函數 148

14.3.1 返回數值的日期函數 148

14.3.2 返回字符串的日期函數 149

14.3.3 其他日期和時間函數 150

14.4 信息函數 150

14.4.1 日期和時間信息 151

14.4.2 連接信息 151

14.5 實驗練習 152

14.6 實驗答案 152

第15章 使用函數組合或計算值 154

15.1 組合字符串值 154

15.1.1 CONCAT函數 155

15.1.2 CONCAT_WS函數 157

15.1.3 COALESCE函數 159

15.2 轉換值 160

15.2.1 REPLACE函數 160

15.2.2 CONVERT函數和CAST函數 161

15.3 使用函數進行數值計算 162

15.4 實驗練習 164

15.5 實驗答案 164

第16章 插入數據 166

16.1 插入具體的值 166

16.1.1 插入一行數據 166

16.1.2 插入多行數據 168

16.1.3 插入部分列數據 169

16.1.4 關於省略列名的提醒 172

16.2 使用查詢插入數據行 173

16.3 使用變量插入數據行 175

16.4 實驗練習 175

16.5 實驗答案 176

第17章 更新數據和刪除數據 178

17.1 更新數據 178

17.1.1 實時數據操作的特點 178

17.1.2 更新數據的基本要求 180

17.1.3 更新一列或多列的值 180

17.1.4 使用多表查詢更新數據 182

17.2 刪除行 184

17.2.1 刪除一行或多行數據 184

17.2.2 使用多表查詢刪除數據 185

17.2.3 刪除表中的所有行 186

17.3 數據操作中的一條重要建議 186

17.4 實驗練習 187

17.5 實驗答案 187

第18章 在表中存儲數據 189

18.1 創建表 189

18.1.1 創建表前的註意事項 189

18.1.2 創建表的基本方法 190

18.1.3 向空表中插入數據 191

18.2 修改表結構 192

18.2.1 向表中添加列 192

18.2.2 添加列時的註意事項 195

18.3 主鍵 195

18.3.1 主鍵的註意事項 196

18.3.2 添加主鍵 196

18.4 外鍵 197

18.4.1 數據關系圖 198

18.4.2 添加外鍵約束 199

18.5 刪除約束、列或表 199

18.5.1 刪除約束 200

18.5.2 刪除列 200

18.5.3 刪除表 200

18.6 實驗練習 201

18.7 實驗答案 202

第19章 創建約束和索引 204

19.1 約束 204

19.1.1 NOT NULL約束 205

19.1.2 DEFAULT約束 206

19.1.3 UNIQUE約束 208

19.1.4 CHECK約束 208

19.2 為列設置自動遞增的值 209

19.3 索引 210

19.3.1 聚簇索引 210

19.3.2 非聚簇索引 212

19.4 實驗練習 215

19.5 實驗答案 215

第20章 使用視圖和存儲過程復用查詢 217

20.1 視圖 217

20.1.1 創建視圖 218

20.1.2 使用視圖進行過濾 219

20.1.3 連接視圖 219

20.1.4 使用視圖時的註意事項 221

20.2 存儲過程 222

20.2.1 創建存儲過程 222

20.2.2 在存儲過程中使用變量 224

20.2.3 使用存儲過程時的註意事項 227

20.3 視圖與存儲過程的區別 227

20.4 實驗練習 228

20.5 實驗答案 228

第21章 在查詢中進行決策 230

21.1 條件函數與表達式 230

21.1.1 COALESCE函數 230

21.1.2 IFNULL函數 231

21.1.3 CASE表達式 233

21.2 決策結構 236

21.2.1 IF和THEN 236

21.2.2 ELSE 238

21.2.3 多條件判斷 240

21.3 實驗練習 242

21.4 實驗答案 242

第22章 使用遊標 244

22.1 回顧變量和參數 244

22.1.1 存儲過程中的變量 244

22.1.2 輸出參數 245

22.2 遊標 246

22.2.1 遊標的結構 246

22.2.2 創建遊標 246

22.3 遊標的替代方案 250

22.3.1 使用WHILE循環 251

22.3.2 臨時表 253

22.4 使用遊標時的註意事項 254

22.4.1 用集合的思維方式思考問題 254

22.4.2 關於遊標使用的思考 255

22.5 實驗練習 255

22.6 實驗答案 256

第23章 使用他人編寫的SQL腳本 258

23.1 他人的腳本示例:創建表 258

23.1.1 CREATE TABLE腳本示例 258

23.1.2 CREATE TABLE腳本的分析與改進 259

23.1.3 改進後的CREATE TABLE腳本 260

23.2 他人的腳本示例:插入數據 260

23.2.1 INSERT存儲過程 260

23.2.2 分析INSERT存儲過程 262

23.2.3 改進INSERT存儲過程 265

23.2.4 進一步優化INSERT存儲過程 267

第24章 學無止境 269

24.1 更深入的SQL知識 269

24.2 其他SQL學習資源 270

24.3 結束語 270