出版社:人民郵電出版社 ISBN:9787115577962 版次:01 商品編碼:13538574 品牌:iTuring 包裝:平裝 開本:16開 出版時間:2021-12-01 頁數:449 正文語種:中文 作者:安東尼·莫利納羅,羅伯特·德·格拉夫(Robert,de,Graaf),袁國忠
" 編輯推薦 1.第二版升級更新,巧妙應對160餘個SQL使用場景; 2.實例短小精悍,涵蓋5種主流的關繫數據庫:Oracle、MySQL、PostgreSQL、SQL Server、DB2等; 3.數據分析師常備案頭書。
你或許熟悉SQL基礎知識,但能否充分發揮它的強大威力呢?本書從實戰角度展示SQL在查詢之外的能力。你將學會用SQL進行統計分析,像使用商業智能工具那樣制作報表,進行文本數據匹配,以及執行復雜的日期數據分析。本書的寫作方式獨樹一幟,以160餘個真實場景為例,提供了讓你耳目一新的解決方案。書中的實例短小精悍,涵蓋5種主流的關繫數據庫:Oracle、MySQL、SQL Server、PostgreSQL和DB2。
數據分析師、數據科學家和數據庫管理員可以通過本書練習解決SQL問題的能力,並開拓思路。對於其他需要在日常工作中與SQL打交道的讀者,本書也是彌足珍貴的參考書,有助於快速查找解決方案。
本書第2版做了如下更新。
●修訂了原有實例,幫助你鞏固基礎知識並充分利用各個SQL實現引入的窗口函數 ●新增了一些實例,旨在幫助你采用可讀性更強、更容易實現的通用表表達式(CTE) ●為非數據庫專家(如數據科學家)量身定制了一些實例 ●擴展了處理數字和字符串的解決方案 ●包含更多標準解決方案 內容簡介 本書詳細介紹了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餘萬字;專事翻譯前,做過兩年雜志和圖書編輯,從事過三年化工產品開發和分析工作。 精彩書評 “很高興看到這本書針對較新的SQL主題做了修訂,涵蓋窗口函數、通用表表達式和遞歸式分層查詢。”
——Thomas Nield,Getting Started with SQL作者
“從未見過如此令人興奮的SQL著作。它循序漸進地將高效的解決方案羅列出來,對你已掌握的知識起到鞏固和補充的作用。”
——Scott Haines,Twilio軟件工程師 目錄 前言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在運算和比較中使用NULL55 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生成SQL81 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找出一年中所有的星期n207 9.6找出一個月中第 一個和最後一個星期n213 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 查看全部↓
" |