快速念咒:MySQL入門指南與進階實戰

彭宇奇

  • 出版商: 電子工業
  • 出版日期: 2024-04-01
  • 定價: $900
  • 售價: 8.5$765
  • 語言: 簡體中文
  • 頁數: 404
  • ISBN: 7121476339
  • ISBN-13: 9787121476334
  • 相關分類: MySQLSQL
  • 下單後立即進貨 (約4週~6週)

商品描述

在當今社會,高效管理數據是一種思維方式,也是一種能力。越來越多的公司和崗位看重這一點。本書的核心理念是基於MySQL將學習數據管理的過程自然融入日常生活,使學習變得輕松,而不再是一項艱巨的任務。本書採用引入故事場景的方式來呈現SQL語句的適用情景,並以此來解釋其使用原理,幫助讀者更好地理解SQL語言的本質。本書不僅是一本技術入門指南,也是一次走進SQL世界的探索之旅,旨在為初學者提供全面、易於理解、實用的學習體驗。

目錄大綱

第1章 七嘴八舌聊SQL / 1
1.1 什麽是SQL / 2
1.2 什麽是數據庫 / 6

第2章 簡單檢索 / 16
2.1 基礎查詢:姻緣介紹所的聯絡清單 / 17
2.1.1 檢索整張表(通配符“*”) / 17
2.1.2 檢索整張表的限制 / 18
2.1.3 檢索特定列 / 19
2.1.4 理解表中的“列”與“行” / 20
2.1.5 關於SQL語句的書寫規範 / 21
2.2 對查詢結果排序:魚兒的大小和顏色 / 24
2.2.1 根據單列內容排序 / 25
2.2.2 升序和降序 / 26
2.2.3 排序的必要性和原理 / 27
2.2.4 根據多列內容排序 / 27
2.2.5 使用列別名排序 / 31
2.2.6 使用列編號排序 / 32
2.2.7 ORDER BY的其他使用事項 / 33
2.3 LIMIT分頁語句:跳躍的青蛙 / 35
2.3.1 限制結果的輸出行數 / 35
2.3.2 LIMIT的用法分析 / 36
2.3.3 淺談SQL語法 / 37
2.3.4 搭配LIMIT進行數據更新 / 38
2.4 去掉重復的輸出行:唯一的組合值 / 39
2.4.1 使用DISTINCT / 39
2.4.2 對整張表去重沒有意義:初識主鍵 / 41
2.4.3 另一種去重的辦法:使用GROUP BY / 42
2.4.4 MySQL中列別名的特殊用法 / 43
2.4.5 如何在SQL語句中添加註釋 / 44

第3章 數據過濾與模糊查詢 / 46
3.1 基礎的數據過濾:酷似“蘇菲·瑪索”的女孩 / 47
3.1.1 初識WHERE從句 / 47
3.1.2 比較運算符 / 49
3.1.3 理解空值 / 52
3.1.4 利用空值進行過濾 / 53
3.1.5 使用BINARY區分過濾條件中的大小寫 / 53
3.2 使用邏輯操作符:挑選優質的巴爾乾甜豆 / 55
3.2.1 操作符AND和OR / 55
3.2.2 AND和OR的執行原理 / 58
3.2.3 組合查詢:UNION ALL與UNION / 59
3.2.4 再次理解AND和OR / 60
3.2.5 使用小括號改變連接對象 / 61
3.2.6 操作符IN和NOT / 65
3.2.7 課後閱讀:《膠囊時報》專欄採訪 / 66
3.3 模糊查詢:謂詞LIKE和正則表達式REGEXP / 67
3.3.1 模糊查詢的適用場景 / 67
3.3.2 得心應手的百分號(%) / 69
3.3.3 專一的下畫線(_) / 71
3.3.4 讓特殊符號回歸符號本身(\) / 72
3.3.5 正則表達式的一般使用場景 / 72
3.3.6 正則表達式的更多使用場景 / 73

第4章 顯示欄、CASE表達式與常用函數 / 78
4.1 創建顯示欄:卡路奇歐的“貪婪美德” / 79
4.1.1 使用算術運算符創建顯示欄 / 79
4.1.2 將MySQL當作計算器 / 82
4.1.3 算術運算符與空值:COALESCE函數 / 83
4.1.4 創建拼接欄:“貓牌膠水”CONCAT函數 / 84
4.2 神奇的變形咒語:CASE表達式 / 86
4.2.1 初識CASE表達式 / 87
4.2.2 CASE表達式的一般使用原理 / 89
4.2.3 不同的輸出形式和對應效果 / 91
4.2.4 CASE表達式的規律總結 / 95
4.3 千奇百怪的函數:MySQL的生物多樣性 / 99
4.3.1 函數多樣性的原因 / 99
4.3.2 處理時間的函數 / 100
4.3.3 處理字符串的函數 / 104
4.3.4 處理數值的函數 / 110

第5章 聚集函數、窗口函數與數據分組 / 115
5.1 使用聚集函數:返回一組數據的各項指標 / 117
5.1.1 什麽是聚集函數 / 117
5.1.2 統計個數和統計行數:COUNT函數 / 117
5.1.3 COUNT(*)與COUNT(列名)的原理解釋 / 118
5.1.4 求和:SUM函數 / 121
5.1.5 求均值:AVG函數 / 122
5.1.6 求最大值與最小值:MAX函數和MIN函數 / 123
5.2 GROUP BY數據分組:對數據進行打包處理 / 123
5.2.1 數據分組的重要性 / 124
5.2.2 分組計算的產物與分組的原理 / 126
5.2.3 分組前的數據過濾:使用WHERE過濾行 / 129
5.2.4 指定多個分組依據 / 130
5.2.5 配合使用WITH ROLLUP:貼心的小計與總計 / 133
5.2.6 對空值分組:驗證COUNT(列名)與COUNT(*) / 135
5.3 使用HAVING從句進行過濾:“韋爾集團”的大麻煩 / 137
5.3.1 分組後的數據過濾:使用HAVING過濾組 / 137
5.3.2 WHERE的不完美替代品 / 140
5.3.3 “三巨頭”的會面:同時使用WHERE、GROUP BY和HAVING / 141
5.4 窗口函數:等級、累計與拆分 / 143
5.4.1 初識窗口函數語法 / 144
5.4.2 不一樣的ORDER BY / 146
5.4.3 非必要的PARTITION BY / 147
5.4.4 RANK、DENSE_RANK和ROW_NUMBER / 148
5.4.5 累計計算:將聚集函數用作窗口函數 / 150
5.4.6 平移變動的窗口:累計計算的拆分 / 154

第6章 復合查詢 / 158
6.1 利用子查詢進行過濾:憂鬱的薩茉莉公主 / 160
6.1.1 利用子查詢進行過濾 / 160
6.1.2 利用子查詢過濾的關鍵思路及關聯的基礎 / 162
6.1.3 普遍存在的“中間人” / 164
6.1.4 正序子查詢的書寫思路 / 166
6.1.5 完全限定列名 / 168
6.2 初識聯結的建立:拆分表的逆向操作 / 170
6.2.1 理解主鍵和外鍵 / 170
6.2.2 關聯的設定機制 / 173
6.2.3 使用WHERE建立聯結 / 174
6.2.4 什麽是笛卡兒積 / 175
6.2.5 等值行與不等值行 / 176
6.2.6 內部聯結的語法 / 178
6.2.7 子查詢和聯結的區別 / 180
6.3 自聯結與自然聯結:巧妙的復制 / 184
6.3.1 建立自聯結:巧妙的復制 / 184
6.3.2 建立自然聯結:不走尋常路的簡潔 / 192
6.4 外部聯結:向左走,還是向右走 / 193
6.4.1 不同於以往的關聯大表 / 193
6.4.2 不同聯結方式的比較 / 198
6.5 關聯子查詢的建立:另一隻看不見的手 / 201
6.5.1 標量子查詢 / 202
6.5.2 利用關聯子查詢進行過濾 / 203
6.5.3 關聯子查詢與一般子查詢的共性與區別 / 205
6.5.4 在檢索中使用子查詢 / 206
6.6 使用視圖:飄逸靈動的膠片機 / 208
6.6.1 利用子查詢進行過濾的限制 / 208
6.6.2 從子查詢到視圖:在FROM語句中建立子查詢 / 210
6.6.3 創建視圖 / 211
6.6.4 更新視圖 / 213
6.6.5 靈活創建的數據集 / 215
6.6.6 刪除視圖 / 216

第7章 表的創建與數據更新 / 219
7.1 創建表:非凡藥劑師協會 / 220
7.1.1 考查數據源 / 220
7.1.2 進行合理的數據拆分 / 221
7.1.3 表與列的命名規則 / 223
7.1.4 常用的數據類型 / 224
7.1.5 空值的指定 / 226
7.1.6 定義主鍵 / 227
7.1.7 選擇引擎 / 229
7.2 調整表及外鍵約束:先有雞,還是先有蛋 / 230
7.2.1 重命名錶和刪除表 / 230
7.2.2 增加列、重命名列與刪除列 / 231
7.2.3 外鍵約束和定義外鍵 / 231
7.2.4 數據的完整性:合理的信息記錄 / 232
7.2.5 外鍵約束的後果 / 235
7.2.6 關聯表的層次關系:上游表和下游表 / 237
7.3 數據的插入:INSERT語句的使用 / 239
7.3.1 插入行的兩種方式 / 239
7.3.2 提供列清單的重要性 / 240
7.3.3 空值、默認值和AUTO_INCREMENT的插入方式 / 240
7.3.4 同時插入多行數據 / 242
7.3.5 在INSERT語句中使用子查詢:數據導入 / 243
7.4 數據的刪除:DELETE語句的使用 / 245
7.4.1 使用DELETE刪除特定行 / 245
7.4.2 刪除表中的所有行:MySQL中的安全模式 / 246
7.4.3 外鍵約束的開啟和關閉 / 247
7.4.4 在DELETE語句中使用子查詢 / 248
7.5 數據的替換:UPDATE語句的使用 / 249
7.5.1 修改數據:替換已有數據 / 250
7.5.2 增加數據:替換空值 / 251
7.5.3 刪除數據:用空值替換已有數據 / 252
7.5.4 同時更新多列數據 / 253
7.5.5 數據刪除方式匯總 / 254
7.6 使用事務處理:數據更新前服下的“後悔藥” / 256
7.6.1 初識事務處理:START TRANSACTION / 256
7.6.2 事務處理的本質 / 258
7.6.3 關閉事務處理的休止符:ROLLBACK和COMMIT / 258
7.6.4 使用保留點:恰到好處的回滾方式 / 259
7.6.5 保留點的使用規範和釋放 / 263

第8章 觸發器與存儲過程 / 265
8.1 觸發器(上):“扣動扳機”的正確姿勢 / 266
8.1.1 初識觸發器的安裝和使用 / 266
8.1.2 理解觸發器的觸發機制和執行時機 / 269
8.1.3 觸發器的應用場景、類型與數量限制 / 269
8.1.4 初識觸發器中的“NEW”:目前沒有,但即將有 / 270
8.2 觸發器(下):忙碌的火車站送車員 / 274
8.2.1 初識觸發器中的“OLD”:目前有,但即將沒有 / 274
8.2.2 觸發器的功能限制 / 277
8.2.3 再談“NEW”和“OLD” / 278
8.2.4 觸發器的執行失敗 / 281
8.3 存儲過程(上):麥克裡尼的心病 / 284
8.3.1 初識存儲過程 / 284
8.3.2 初識參數:關鍵詞IN / 288
8.3.3 再探參數:關鍵詞OUT / 291
8.4 存儲過程(下):走出低谷 / 293
8.4.1 不一樣的調用形式 / 294
8.4.2 更加智能的存儲過程 / 297
8.4.3 什麽是局部變量 / 301

第9章 不斷翻新的數據集 / 304
9.1 不等值行的妙用 / 305
9.2 關聯分析 / 312
9.3 在CASE表達式中使用聚集函數 / 320
9.4 在聚集函數中使用CASE表達式 / 323
9.5 行列轉換:創建數據透視表 / 328
9.6 尋找中位數 / 344

第10章 思考與練習 / 354