SQL進階教程(第2版)

[日]MICK

  • 出版商: 人民郵電
  • 出版日期: 2023-02-01
  • 售價: $539
  • 貴賓價: 9.5$512
  • 語言: 簡體中文
  • 頁數: 336
  • ISBN: 7115609764
  • ISBN-13: 9787115609762
  • 相關分類: SQL
  • 立即出貨 (庫存 < 4)

  • SQL進階教程(第2版)-preview-1
  • SQL進階教程(第2版)-preview-2
SQL進階教程(第2版)-preview-1

買這商品的人也買了...

商品描述

本書是熱銷書《SQL基礎教程》的作者MICK為志在向中級進階的數據庫工程師編寫的一本SQL技能提升指南。全書可分為兩大部分。第一部分介紹了SQL語言不同尋常的使用技巧,帶領讀者重新認識CASE表達式、窗口函數、自連接、EXISTS謂詞、HAVING子句、外連接、行間比較、集合運算、數列處理等SQL常用技術,發掘它們的新用法。這部分不僅穿插講解了這些技巧背後的邏輯和相關知識,而且輔以豐富的示例程序,旨在幫助讀者從面向過程的思維方式轉換為面向集合的思維方式。第二部分介紹了關系數據庫的發展史,並從集合論和邏輯學的角度講述了SQL和關系模型的理論基礎,旨在幫助讀者加深對SQL語言和關系數據庫的理解。此外,本書很多節的末尾設置有練習題,並在書末提供瞭解答,方便讀者檢驗自己對書中知識點的掌握程度。

作者簡介

MICK(作者)

日本资历深厚的数据库工程师,就职于某系统集成商,致力于数据仓库和商业智能的开发。日常除了在其个人主页“关系数据库的世界”中分享数据库和SQL的相关技术信息外,还为翔泳社的网络媒体CodeZine和日本IT技术杂志WEB+DB PRESS撰写技术文章,同时还是《SQL解惑(第2版)》和《SQL权威指南(第4版)》日文版的译者

吴炎昌(译者)

毕业于西北工业大学软件工程专业。曾供职于日本多家软件公司,从事系统开发工作。2015年回国后加入美团点评,现任系统研发工程师。爱好旅行、电影,以及品尝各种美食,有一位志趣相投的伴侣。

侯振龙(译者)

管理科学与工程专业硕士,日语一级,软件开发工程师,具有十年以上对日软件开发经验,现就职于某日本独资企业。

目錄大綱

第 1章 神奇的SQL 1

1-1 CASE表達式 2

在SQL里表達條件分支

寫在前面 2

CASE表達式的寫法 2

將已有編號方式轉換為新的方式並統計 4

用一條SQL語句進行多條件統計 7

用CHECK約束定義多個列的條件關系 11

在UPDATE語句里進行條件分支 12

表之間的數據匹配 15

在CASE表達式中使用聚合函數 17

本節小結 20

練習題 22

1-2 必知必會的窗口函數 25

順序編程的復活

什麽是窗口 26

一張圖看懂窗口函數 27

使用幀子句將其他行移至當前行 29

窗口函數的內部動作 34

本節小結 37

練習題 39

1-3 自連接的用法 41

從物理到邏輯的跳躍

可重排列、排列、組合 41

刪除重復行 45

查找局部不一致的列 48

本節小結 50

練習題 55

1-4 三值邏輯和NULL 56

SQL的溫柔陷阱

寫在前面 56

理論篇 57

實踐篇 61

本節小結 71

練習題 78

1-5 EXISTS 謂詞的用法 79

SQL中的謂詞邏輯

寫在前面 79

理論篇 79

實踐篇 85

本節小結 95

練習題 96

1-6 HAVING 子句的力量 99

將世界看作集合

尋找缺失的編號 99

用HAVING 子句進行子查詢:求眾數 105

查詢不包含NULL 的集合 107

特徵函數的應用 110

使用HAVING 語句表達全稱量化 113

單重集合與多重集合 116

用關系除法運算進行購物籃分析 120

本節小結 123

練習題 128

1-7 用窗口函數進行行間比較 130

告別關聯子查詢

寫在前面 130

增加、減少、沒有變化 130

時間軸有間斷時:和過去最臨近的時間進行比較 135

窗口函數與關聯子查詢 137

查詢重疊的時間區間 140

本節小結 145

練習題 145

1-8 外連接的用法 147

SQL的弱點及其趨勢和對策

寫在前面 147

用外連接進行行列轉換(1)(行→列):製作交叉表 147

用外連接進行行列轉換(2)(列→行):匯總重復項於一列 151

在交叉表裡製作嵌套式表側欄 153

作為乘法運算的連接 158

全外連接 160

用外連接進行集合運算 163

用外連接求差集:A - B 163

用外連接求差集:B - A 164

用全外連接求異或集 165

本節小結 166

練習題 168

1-9 用SQL 進行集合運算 170

SQL和集合論

寫在前面 170

導入篇:集合運算的幾個註意事項 170

比較表和表:檢查集合相等性之基礎篇 172

比較表和表:檢查集合相等性之進階篇 175

用差集實現關系除法運算 177

尋找相等的子集 180

用於刪除重復行的高效SQL 183

本節小結 185

練習題 187

1-10 用SQL 處理數列 188

用SQL 處理有序數據——集大成

寫在前面 188

生成連續編號 188

求全部的缺失編號 192

3 個人能坐得下嗎 194

有換排的數列 197

單調遞增和單調遞減 199

本節小結 202

練習題 204

1-11 讓SQL 飛起來 205

簡單的SQL性能優化

寫在前面 205

使用高效的查詢 205

避免排序 208

真的用到索引了嗎 213

減少中間表 216

本節小結 218

1-12 SQL 編程方法 220

確立SQL 的編程風格

寫在前面 220

表的設計 222

編程的方針 223

SQL 編程方法 230

本節小結 234

第 2章 關系數據庫的世界 237

2-1 關系數據庫的近現代史 238

數據庫有過兩次破壞性創新嗎

關系數據庫的歷史 238

破壞性創新會重復嗎 243

NoSQL 的類型和解決方案 245

性能問題的解決方案 245

本節小結 247

2-2 為什麽叫“關系”模型 250

為什麽不叫“表”模型

關系的定義 250

定義域的憂慮 253

關系值和關系變量 254

存在“關系的關系”嗎 255

2-3 開始於關系,結束於關系 257

關於封閉世界的幸福

從運算角度審視集合 257

實踐和原理 259

2-4 地址:巨大的怪物 261

為什麽關系數據庫里沒有指針

寫在前面 261

關系模型是為擺脫地址而生的 262

編程中泛濫的地址 263

不曾遠去的老將——約翰·巴克斯的夢想 265

2-5 關於順序的冒險 266

SQL的中心法則

遲來的主角 266

行應該有順序嗎 267

2-6 GROUP BY 和PARTITION BY 271

物以“類”聚

二者的區別 271

2-7 從面向過程思維向聲明式思維、面向集合思維轉變的7個關鍵點 276

畫圓

寫在前面 276

1. 用CASE 表達式代替IF 語句和CASE 語句。SQL 更像一種函數式語言 277

2. 用GROUP BY 和窗口函數代替循環 278

3. 表中的行沒有順序 279

4. 將表看成集合 280

5. 理解EXISTS 謂詞和“量化”的概念 280

6. 學習HAVING 子句的真正價值 281

7. 不要畫長方形,去畫圓 282

2-8 人類的邏輯學 284

淺談邏輯學的歷史

適當地拋開命題的真假吧 284

邏輯學的革命 286

人類的邏輯學 287

2-9 SQL 和遞歸集合 288

SQL和集合論的緊密關系

實際工作中的遞歸集合 288

馮·諾依曼的前輩們 288

數是什麽 290

SQL 的魔術與科學 293

2-10 消滅NULL 委員會 294

全世界的數據庫工程師團結起來

表明決心:告全體數據庫工程師書 294

為什麽NULL 如此惹人討厭 294

並不能完全消除NULL 296

編號:使用異常編號 297

名字:使用“無名氏” 297

數值:用0 代替 298

日期:用最大值或最小值代替 298

本節小結 299

2-11 SQL 中的層級 300

嚴格的等級社會

謂詞邏輯中的層級、集合論中的層級 300

為什麽聚合後不能再引用原表中的列 300

單元素集合也是集合 304

第3章 附錄 307

3-1 習題解答 308

3-2 參考文獻 331

SQL 整體 331

數據庫設計 332

性能 333

集合論和謂詞邏輯/三值邏輯 333

後記 335