SQL經典實例 第2版 SQL Cookbook: Query Solutions and Techniques for All SQL Users, 2/e

[美]安東尼·莫利納羅(Anthony Molinaro) [澳]羅伯特·德·格拉夫(Robert de Graaf)

  • 出版商: 人民郵電
  • 出版日期: 2024-03-01
  • 定價: $839
  • 售價: 8.5$713
  • 語言: 簡體中文
  • 頁數: 449
  • ISBN: 711557796X
  • ISBN-13: 9787115577962
  • 相關分類: SQL
  • 已絕版

  • SQL經典實例 第2版-preview-1
  • SQL經典實例 第2版-preview-2
SQL經典實例 第2版-preview-1

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

商品描述

本書詳細介紹了Oracle、MySQL、PostgreSQL、SQL Server、DB2等各種關系數據庫的SQL查詢技巧和一些基礎的SQL查詢語句,並且通過短小精悍的實例,不僅講解瞭如何插入、更新和刪除數據,還介紹瞭如何檢索記錄、為查詢結果排序、同時操作多張數據庫表、查詢元數據、處理涉及字符串和數值的操作、根據時間數據和日期數據進行運算、執行層次查詢和區間查詢等。隨著多種SQL實現大量採用窗口函數,本書第2版針對相關實例做了優化,還新增了為數據科學家和算法工程師量身定製的實例。

作者簡介

安东尼·莫利纳罗(Anthony Molinaro),美国强生公司数据科学家,专精SQL技术,擅长解决棘手的SQL问题,对关系理论有深入研究。

 

 

罗伯特·德·格拉夫(Robert de Graaf),RightShip公司数据科学家,负责为公司设计和开发用于预测性分析的算法,另著有Managing Your Data Science Projects。

 

【译者介绍】

 

袁国忠,自由译者,20多年专职翻译经验,主译图书,偶译新闻稿、软文;出版译著40余部,其中包括《Python编程从入门到实践》《C++ Prime Plus中文版》《Python基础教程(第3版)》《算法图解》《面向模式的软件架构:模式系统》《风投的选择:谁是下一个十亿美元级公司》等,总计700余万字;专事翻译前,做过两年杂志和图书编辑,从事过三年化工产品开发和分析工作。

目錄大綱

前言xi

第 1 章 檢索記錄 1

1.1 檢索表中所有的行和列 1

1.2 從表中檢索部分行 2

1.3 查找滿足多個條件的行 2

1.4 從表中檢索部分列 3

1.5 提供有意義的列名 3

1.6 在WHERE子句中使用別名來引用列 4

1.7 拼接列值 5

1.8 在SELECT語句中使用條件邏輯 6

1.9 限制返回的行數 7

1.10 從表中隨機返回n行數據 8

1.11 查找NULL值 9

1.12 將NULL轉換為實際值 10

1.13 模式查找 10

1.14 小結 11

第 2 章 查詢結果排序 12

2.1 按指定順序返回查詢結果 12

2.2 按多字段排序 13

2.3 按子串排序 14

2.4 對同時包含字母和數字的數據進行排序 15

2.5 排序時處理NULL值 17

2.6 根據依賴於數據的鍵進行排序 23

2.7 小結 24

第 3 章 使用多張表 25

3.1 合並多個行集 25

3.2 合並相關的行 27

3.3 查找兩張表中相同的行 28

3.4 從一張表中檢索沒有出現在另一張表中的值 30

3.5 從一張表中檢索在另一張表中沒有對應行的行 34

3.6 在查詢中添加連接並確保不影響其他連接 36

3.7 判斷兩張表包含的數據是否相同 38

3.8 識別並避免笛卡兒積 44

3.9 同時使用連接和聚合 45

3.10 同時使用外連接和聚合 49

3.11 返回多張表中不匹配的行 51

3.12 在運算和比較中使用NULL 55

3.13 小結 55

第 4 章 插入、更新和刪除 56

4.1 插入新記錄 56

4.2 插入默認值 57

4.3 用NULL覆蓋默認值 58

4.4 將一張表中的行復制到另一張表中 59

4.5 復製表定義 59

4.6 同時插入多張表 60

4.7 禁止在特定列中插入值 62

4.8 修改表中的記錄 63

4.9 僅當存在匹配行時才更新 64

4.10 使用來自另一張表中的值進行更新 64

4.11 合並記錄 67

4.12 刪除表中的所有記錄 69

4.13 刪除特定記錄 69

4.14 刪除單條記錄 70

4.15 刪除違反引用完整性的記錄 70

4.16 刪除重復記錄 71

4.17 刪除在另一張表中引用了的記錄 72

4.18 小結 73

第 5 章 元數據查詢 74

5.1 列出模式中的所有表 74

5.2 列出表中的列 75

5.3 列出表的索引列 76

5.4 列出表的約束 77

5.5 列出沒有相應索引的外鍵 78

5.6 使用SQL生成SQL 81

5.7 描述Oracle數據庫中的數據字典視圖 83

5.8 小結 84

第 6 章 處理字符串 85

6.1 走查字符串 85

6.2 在字符串字面量中嵌入引號 87

6.3 計算字符串中特定字符出現的次數 88

6.4 將不想要的字符從字符串中刪除 89

6.5 將數字數據和字符數據分開 90

6.6 判斷字符串是否只包含字母和數字 94

6.7 提取姓名中的首字母 98

6.8 根據部分字符串排序 101

6.9 根據字符串中的數字排序 103

6.10 根據表中的行創建分隔列表 108

6.11 將分隔數據轉換為多值IN列表 111

6.12 按字母順序排列字符串中的字符 116

6.13 識別可視為數字的字符串 120

6.14 提取第n個子串 125

6.15 拆分IP地址 131

6.16 根據發音比較字符串 133

6.17 查找與模式不匹配的文本 134

6.18 小結 137

第 7 章 處理數字 138

7.1 計算平均值 138

7.2 找出最大列值和最小列值 140

7.3 計算列值總和 142

7.4 計算表中的行數 143

7.5 計算非NULL列值數 145

7.6 生成移動總計 145

7.7 生成移動總積 147

7.8 平滑值序列 148

7.9 計算眾數 149

7.10 計算中值 151

7.11 計算總計占比 153

7.12 聚合值可為NULL的列 155

7.13 計算剔除最高值和最低值後的平均值 156

7.14 將由字母和數字組成的字符串轉換為數字 158

7.15 修改移動總計中的值 60

7.16 使用絕對中位差找出異常值 161

7.17 使用本福特法則查找反常數據 164

7.18 小結 166

第 8 章 日期算術運算 167

8.1 加上或減去若乾天、若乾月或若乾年 167

8.2 確定兩個日期相差多少天 169

8.3 確定兩個日期之間有多少個工作日 171

8.4 確定兩個日期相隔多少個月或多少年 175

8.5 確定兩個日期相隔多少秒、多少分鐘或多少小時 178

8.6 計算一年中有多少個工作日 179

8.7 確定當前記錄和下一條記錄存儲的日期相隔多少天 190

8.8 小結 194

第 9 章 操作日期 195

9.1 判斷特定的年份是否是閏年 195

9.2 確定特定年份有多少天 201

9.3 提取日期的各個組成部分 203

9.4 找出一個月的第 一天和最後一天 205

9.5 找出一年中所有的星期n 207

9.6 找出一個月中第 一個和最後一個星期n 213

9.7 創建日歷 219

9.8 列出一年中各個季度的第 一天和最後一天 230

9.9 確定給定季度的第 一天和最後一天 234

9.10 補全缺失的日期 240

9.11 根據日期的特定部分進行查找 247

9.12 根據日期的特定部分對記錄進行比較 248

9.13 找出重疊的日期範圍 251

9.14 小結 256

第 10 章 涉及區間的查詢 257

10.1 找出一系列連續的值 257

10.2 找出同一個分組或分區中相鄰行的差 260

10.3 找出連續值構成的區間的起點和終點 265

10.4 填補值區間空隙 268

10.5 生成連續的數字值 271

10.6 小結 274

第 11 章 高級查找 275

11.1 在結果集中翻頁 275

11.2 在表中跳過n行數據 277

11.3 在外連接中使用OR邏輯 279

11.4 確定哪些行是互逆的 280

11.5 返回前n條記錄 282

11.6 找出值最高和最低的記錄 283

11.7 查看後面的行 284

11.8 平移行值 286

11.9 結果排名 288

11.10 消除重復行 289

11.11 查找馬值 291

11.12 生成簡單預測 296

11.13 小結 303

第 12 章 報表製作和整形 304

12.1 將結果集轉置為一行 304

12.2 將結果集轉置為多行 306

12.3 對結果集進行逆轉置 311

12.4 將結果集逆轉置為一列 312

12.5 消除結果集中的重復值 315

12.6 轉置結果集以簡化涉及多行的計算 317

12.7 創建尺寸固定的數據桶 319

12.8 創建預定數量的桶 321

12.9 創建水平直方圖 322

12.10 創建垂直直方圖 323

12.11 返回未被用作分組依據的列 325

12.12 計算簡單的小計 327

12.13 計算各種可能的小計 331

12.14 標出非小計行 340

12.15 使用CASE表達式來標識行 341

12.16 創建稀疏矩陣 343

12.17 按時間分組 344

12.18 同時對不同的分組/分區進行聚合 348

12.19 聚合移動值區間 349

12.20 轉置包含小計的結果集 356

12.21 小結 360

第 13 章 分層查詢 361

13.1 呈現父子關系 362

13.2 呈現子–父–祖父關系 365

13.3 創建基於表的分層視圖 369

13.4 找出給定父行的所有子行 373

13.5 確定葉子節點、分支節點和根節點 374

13.6 小結 381

第 14 章 雜項 382

14.1 使用SQL Server運算符PIVOT創建交叉報表 382

14.2 使用SQL Server運算符UNPIVOT逆轉置交叉報表 384

14.3 使用Oracle子句MODEL轉置結果集 386

14.4 從不固定的位置提取子串 389

14.5 確定特定年份有多少天(另一種Oracle解決方案) 391

14.6 找出同時包含字母和數字的字符串 393

14.7 在Oracle中將整數轉換為其二進製表示 395

14.8 對經過排名的結果集進行轉置 397

14.9 給經過兩次轉置的結果集添加列標題 401

14.10 在Oracle中將標量子查詢轉換為復合子查詢 412

14.11 將序列化數據轉換為行 414

14.12 計算占總計的百分比 418

14.13 確定編組是否包含指定的值 419

14.14 小結 422

附錄A 溫習窗口函數 423

附錄B 通用表表達式 446