編輯推薦
適讀人群 :本書適閤數據庫和SQL語言的初學者閱讀,也可作為大中專院校的教材及企業新人培訓用書。 zi深數據庫工程師寫給初學者的實用指南!
107張圖錶+209段代碼+88個法則,菜鳥進階bi備!
基於標準SQL編寫,明示各RDBMS(PostgreSQL DB2 MySQL Oracle SQL Server)的差異!
1.暢銷書全新升級,內容更新更全麵!
第1版豆瓣評分8.8分,重印13次,好評如潮。第2版基於新版本RDBMS全麵升級,並新增一章介紹從應用程序執行SQL語句的方法。
2.由淺入深,結構清晰,真正適閤初學者!
從數據庫、錶的結構到查詢、更新錶的語法,常用的函數,錶的聯結等,內容逐步深入。對於初學者常見的疑難點,均通過專欄進行講解。各章節後精心設計瞭練習題,幫助讀者鞏固理解。
3.雙色印刷,排版獨特,讓你讀起來不纍!
雙色印刷賞心悅目,“學習重點”“KEYWORD”“備忘”“法則”“專欄”等各種小模塊幫你梳理知識點,讓學習過程事半功倍。
內容簡介
本書是暢銷書《SQL基礎教程》第2版,介紹瞭關係數據庫以及用來操作關係數據庫的SQL語言的使用方法。書中通過豐富的圖示、大量示例程序和詳實的操作步驟說明,讓讀者循序漸進地掌握SQL的基礎知識和使用技巧,切實提高編程能力。每章結尾設置有練習題,幫助讀者檢驗對各章內容的理解程度。另外,本書還將重要知識點總結為“法則”,方便讀者隨時查閱。第2版除瞭將示例程序更新為對應*新的DB的SQL之外,還新增瞭一章,介紹如何從應用程序執行SQL。
作者簡介
MICK(作者)
日本zi深數據庫工程師,就職於SI企業,緻力於商業智能和數據倉庫的開發。為CodeZine(http: codezine.jp)及IT雜誌WEB+DB PRESS撰寫技術文章。著作有《跟達人學SQL》《跟達人學DB設計》,是Joe Celko's SQL Puzzles and Answers,Second Edition、Joe Celko's SQL for Smarties,Fourth Edition: Advanced SQL Programming的日文版的譯者。
孫淼(譯者)
從事對日軟件設計和研發工作十餘年,曾於2007年至2009年赴日學習工作,2015年至今再次長期赴日工作。精通應用Java、PHP進行Web框架的設計開發,並且有Oracle、Teradata、MySQL、NoSQL等多種數據庫的設計開發經驗。樂於品味生活細微的點滴,熱衷於品嘗和製作美食。譯有《SQL基礎教程》等。
羅勇(譯者)
從事對日軟件設計和研發工作十餘年,曾多次赴日學習工作,目前就職於日本某大型企業。癡迷於技術和框架的研究,多次參與項目的需求分析、概要設計,精通多語言的Web框架和數據庫的設計開發。業餘愛好足球,和傢人旅行。譯有《SQL基礎教程》《NoSQL數據庫入門》《明解C語言》等。
目錄
第0章 緒論——搭建SQL的學習環境 1
0-1 PostgreSQL的安裝和連接設置 3
安裝步驟 3
修改設置文件 7
0-2 通過PostgreSQL執行SQL語句 9
連接PostgreSQL(登錄) 9
執行SQL語句 10
創建學習用的數據庫 11
連接學習用的數據庫(登錄) 12
第1章 數據庫和SQL 13
1-1 數據庫是什麼 15
我們身邊的數據庫 15
為什麼DBMS那麼重要 16
DBMS的種類 18
1-2 數據庫的結構 20
RDBMS的常見係統結構 20
錶的結構 22
1-3 SQL概要 25
標準SQL 25
SQL語句及其種類 26
SQL的基本書寫規則 27
1-4 錶的創建 30
錶的內容的創建 30
數據庫的創建(CREATE DATABASE語句) 31
錶的創建(CREATE TABLE語句) 31
命名規則 33
數據類型的指定 34
約束的設置 35
1-5 錶的刪除和更新 37
錶的刪除(DROP TABLE語句) 37
錶定義的更新(ALTER TABLE語句) 38
嚮Product錶中插入數據 39
練習題 42
第2章 查詢基礎 43
2-1 SELECT語句基礎 45
列的查詢 45
查詢齣錶中所有的列 47
為列設定彆名 48
常數的查詢 50
從結果中刪除重復行 50
根據WHERE語句來選擇記錄 53
注釋的書寫方法 55
2-2 算術運算符和比較運算符 57
算術運算符 57
需要注意NULL 58
比較運算符 60
對字符串使用不等號時的注意事項 62
不能對NULL使用比較運算符 65
2-3 邏輯運算符 68
NOT運算符 68
AND運算符和OR運算符 70
通過括號強化處理 72
邏輯運算符和真值 74
含有NULL時的真值 76
練習題 78
第3章 聚閤與排序 79
3-1 對錶進行聚閤查詢 81
聚閤函數 81
計算錶中數據的行數 82
計算NULL之外的數據的行數 83
計算閤計值 84
計算平均值 86
計算最大值和最小值 87
使用聚閤函數刪除重復值(關鍵字DISTINCT) 89
3-2 對錶進行分組 91
GROUP BY子句 91
聚閤鍵中包含NULL的情況 93
使用WHERE子句時GROUP BY的執行結果 94
與聚閤函數和GROUP BY子句有關的常見錯誤 96
3-3 為聚閤結果指定條件 101
HAVING子句 101
HAVING子句的構成要素 104
相對於HAVING子句,更適閤寫在WHERE子句中的條件 105
3-4 對查詢結果進行排序 108
ORDER BY子句 108
指定升序或降序 110
指定多個排序鍵 111
NULL的順序 111
在排序鍵中使用顯示用的彆名 112
ORDER BY子句中可以使用的列 114
不要使用列編號 114
練習題 116
第4章 數據更新 117
4-1 數據的插入(INSERT語句的使用方法) 119
什麼是INSERT 119
INSERT語句的基本語法 120
列清單的省略 123
插入NULL 123
插入默認值 124
從其他錶中復製數據 126
4-2 數據的刪除(DELETE語句的使用方法) 129
DROP TABLE語句和DELETE語句 129
DELETE語句的基本語法 129
指定刪除對象的DELETE語句(搜索型DELETE) 130
4-3 數據的更新(UPDATE語句的使用方法) 133
UPDATE語句的基本語法 133
指定條件的UPDATE語句(搜索型UPDATE) 134
使用NULL進行更新 135
多列更新 136
4-4 事務 138
什麼是事務 138
創建事務 139
ACID特性 144
練習題 145
第5章 復雜查詢 147
5-1 視圖 149
視圖和錶 149
創建視圖的方法 151
視圖的限製① ——定義視圖時不能使用ORDER BY子句 154
視圖的限製② ——對視圖進行更新 155
刪除視圖 159
5-2 子查詢 160
子查詢和視圖 160
子查詢的名稱 163
標量子查詢 163
標量子查詢的書寫位置 166
使用標量子查詢時的注意事項 167
5-3 關聯子查詢 168
普通的子查詢和關聯子查詢的區彆 168
關聯子查詢也是用來對集閤進行切分的 171
結閤條件一定要寫在子查詢中 172
練習題 173
第6章 函數、謂詞、CASE錶達式 175
6-1 各種各樣的函數 177
函數的種類 177
算術函數 178
字符串函數 182
日期函數 190
轉換函數 194
6-2 謂詞 198
什麼是謂詞 198
LIKE謂詞——字符串的部分一緻查詢 198
BETWEEN謂詞——範圍查詢 202
IS NULL、IS NOT NULL——判斷是否為NULL 203
IN謂詞——OR的簡便用法 204
使用子查詢作為IN謂詞的參數 205
EXIST謂詞 210
6-3 CASE錶達式 214
什麼是CASE錶達式 214
CASE錶達式的語法 214
CASE錶達式的使用方法 215
練習題 221
第7章 集閤運算 223
7-1 錶的加減法 225
什麼是集閤運算 225
錶的加法——UNION 225
集閤運算的注意事項 228
包含重復行的集閤運算——ALL選項 229
選取錶中公共部分——INTERSECT 230
記錄的減法——EXCEPT 231
7-2 聯結(以列為單位對錶進行聯結) 234
什麼是聯結 234
內聯結——INNER JOIN 235
外聯結——OUTER JOIN 240
3張以上的錶的聯結 243
交叉聯結——CROSS JOIN 246
聯結的特定語法和過時語法 249
練習題 254
第8章 SQL高級處理 255
8-1 窗口函數 257
什麼是窗口函數 257
窗口函數的語法 258
語法的基本使用方法——使用RANK函數 258
無需指定PARTITION BY 261
專用窗口函數的種類 262
窗口函數的適用範圍 263
作為窗口函數使用的聚閤函數 264
計算移動平均 266
兩個ORDER BY 269
8-2 GROUPING運算符 271
同時得到閤計行 271
ROLLUP——同時得齣閤計和小計 272
GROUPING函數——讓NULL更加容易分辨 277
CUBE——用數據來搭積木 279
GROUPING SETS——取得期望的積木 281
練習題 282
第9章 通過應用程序連接數據庫 283
9-1 數據庫世界和應用程序世界的連接 285
數據庫和應用程序之間的關係 285
驅動——兩個世界之間的橋梁 286
驅動的種類 287
9-2 Java基礎知識 289
第一個程序Hello,World 289
編譯和程序執行 291
常見錯誤 294
9-3 通過Java連接PostgreSQL 298
執行SQL語句的Java程序 298
Java是如何從數據庫中獲取數據的呢 299
執行連接數據庫的程序 301
選取錶中的數據 302
更新錶中的數據 305
小結 307
練習題 307
附錄 練習題答案 308
SQL基礎教程 第2版 書名:SQL基礎教程 第2版 內容簡介: 在數據日益成為核心資産的今天,掌握結構化查詢語言(SQL)已不再是專業數據庫管理員或開發人員的專屬技能,而是跨越各行各業、從初學者到資深從業者必備的核心競爭力。本書《SQL基礎教程 第2版》正是為希望係統、深入地理解並熟練運用SQL語言的讀者量身打造的權威指南。本書以循序漸進、注重實戰的教學理念,從SQL最基礎的概念齣發,逐步深入到高級主題,旨在幫助讀者建立起堅實的SQL知識體係,並能獨立解決實際數據管理和分析問題。 本書亮點概覽: 體係化教學,從零開始: 無論您是完全沒有接觸過數據庫和SQL的初學者,還是有過零散接觸但希望係統梳理知識的進階者,本書都將為您提供清晰的學習路徑。我們從最核心的數據庫概念、SQL的起源與發展講起,逐步引導您理解數據模型、錶結構、數據類型等基礎構建塊。 核心概念的深入解析: 本書將詳細闡述SQL語言的核心組成部分,包括數據定義語言(DDL)、數據操作語言(DML)、數據控製語言(DCL)和事務控製語言(TCL)。您將深入理解如何使用CREATE、ALTER、DROP等語句來創建、修改和刪除數據庫對象;掌握SELECT、INSERT、UPDATE、DELETE等語句進行數據的查詢、添加、修改和刪除。 強大的數據查詢能力: SELECT語句是SQL的靈魂。本書將花費大量篇幅,係統講解SELECT語句的各種強大功能,包括基本的列選擇、WHERE子句的條件過濾、ORDER BY子句的數據排序、LIMIT/OFFSET(或TOP/FETCH FIRST)進行分頁查詢。 多錶關聯的精髓: 現實世界的數據往往分散在多個錶中,如何將這些關聯的數據有效地整閤起來是SQL應用的重中之重。本書將詳細講解JOIN操作,涵蓋INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN以及CROSS JOIN,並配以豐富的示例,幫助您理解不同JOIN類型的工作原理及其適用場景,確保您能準確無誤地從關聯錶中提取所需信息。 聚閤與分組的藝術: 數據分析離不開對大量數據的匯總和統計。本書將深入講解聚閤函數(如COUNT, SUM, AVG, MIN, MAX)以及GROUP BY子句和HAVING子句。您將學會如何對數據進行分組,計算每組的統計指標,並根據特定條件過濾分組結果,從而揭示數據中的規律和洞察。 子查詢與高級查詢技巧: 為瞭處理更復雜的數據需求,本書將引導您掌握子查詢(Subqueries)的應用,包括在SELECT列錶、FROM子句、WHERE子句中使用子查詢,以及與IN、EXISTS、ANY、ALL等操作符的配閤使用。此外,還將介紹一些高級查詢技巧,如窗口函數(Window Functions),它們在數據分析和報錶生成中扮演著越來越重要的角色,能夠執行復雜的排名、纍積計算等操作。 數據完整性與約束: 確保數據的準確性和一緻性是數據庫設計的基石。本書將詳細講解各種約束,如PRIMARY KEY(主鍵)、FOREIGN KEY(外鍵)、UNIQUE(唯一約束)、NOT NULL(非空約束)和CHECK(檢查約束),並闡述它們在維護數據完整性方麵的作用。 視圖(Views)與索引(Indexes): 視圖可以簡化復雜的查詢,提供數據的邏輯視圖,而索引是提高查詢性能的關鍵。本書將詳細介紹如何創建和使用視圖,以及理解不同類型的索引(如B-tree索引、哈希索引)及其工作原理,幫助您優化數據庫性能。 事務管理與並發控製: 在多用戶訪問的環境下,保證數據的一緻性至關重要。本書將深入講解事務(Transactions)的概念,ACID特性(原子性、一緻性、隔離性、持久性),以及如何使用BEGIN TRANSACTION、COMMIT、ROLLBACK等語句來管理事務。同時,也會觸及並發控製的基礎知識,幫助您理解不同隔離級彆對數據訪問的影響。 SQL函數寶庫: SQL提供瞭豐富的內置函數,用於字符串處理、日期時間計算、數值運算、類型轉換等。本書將係統介紹常用的字符串函數(如SUBSTRING, CONCAT, LENGTH)、日期函數(如NOW, DATE_FORMAT, DATEDIFF)、數學函數(如ROUND, CEIL, FLOOR)等,並提供實用的應用示例,讓您能靈活運用這些函數解決實際問題。 實戰導嚮,案例豐富: 本書最大的特色在於其高度的實戰性。每一項SQL概念和功能都配有清晰、易懂的代碼示例,並結閤實際業務場景進行講解,讓您能夠直接上手實踐。本書包含大量精選的練習題和項目案例,覆蓋從簡單的數據查詢到復雜的數據分析,幫助讀者在實踐中鞏固所學知識,提升解決實際問題的能力。 跨數據庫平颱的通用性: SQL是一種標準語言,但不同數據庫管理係統(DBMS)在語法細節上可能存在差異。本書在介紹SQL標準的同時,也會結閤主流的數據庫係統(如MySQL, PostgreSQL, SQL Server, Oracle)的常見用法和特性進行說明,確保讀者掌握的知識具有廣泛的適用性。 附錄與擴展: 為瞭方便讀者查閱和進一步學習,本書提供瞭SQL常用命令速查錶、常見的SQL錯誤及解決方法等實用附錄,並推薦瞭進一步學習的資源和方嚮。 本書適閤讀者: 計算機科學與技術、軟件工程、信息管理等相關專業的學生: 係統學習數據庫理論和SQL語言的必備教材。 軟件開發人員: 無論前端、後端還是全棧工程師,熟練掌握SQL都是不可或缺的基本功。 數據分析師、商業智能(BI)從業者: SQL是進行數據提取、清洗、轉換和初步分析的核心工具。 數據庫管理員(DBA): 鞏固和深化SQL理論,提升數據庫管理和優化能力。 對數據管理和分析感興趣的初學者: 希望從零開始,係統學習一項有價值的技能。 希望提升工作效率的各行業專業人士: 如市場營銷、財務、運營等,能夠利用SQL進行自助式數據查詢和分析。 《SQL基礎教程 第2版》不僅僅是一本技術書籍,更是您打開數據世界大門、解鎖數據價值的鑰匙。通過本書的學習,您將能夠自信地與數據庫對話,高效地管理和分析數據,為您的學習和工作帶來質的飛躍。我們相信,掌握SQL,您將能夠在快速發展的數據時代中,擁有更強的競爭力。