具體描述
SQL基礎教程+進階教程 2本 數據庫工程師 SQL常見技術 圖書籍
區域包郵 著
9787115455024 9787115470522 YL11785SQL基礎教程 第2版
本書是**書《SQL基礎教程》第2版,介紹瞭關係數據庫以及用來操作關係數據庫的SQL語言的使用方法。書中通過豐富的圖示、大量示例程序和詳實的操作步驟說明,讓讀者循序漸進地掌握SQL的基礎知識和使用技巧,切實提高編程能力。每章結尾設置有練習題,幫助讀者檢驗對各章內容的理解程度。另外,本書還將重要知識點總結為“法則”,方便讀者隨時查閱。第2版除瞭將示例程序更新為對應*新的DB的SQL之外,還新增瞭一章,介紹如何從應用程序執行SQL。
第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 .......SQL進階教程
本書是《SQL基礎教程》作者MICK為誌在嚮中級進階的數據庫工程師編寫的一本SQL技能提升指南。全書可分為兩部分,*一部分介紹瞭SQL語言不同尋常的使用技巧,帶領讀者從SQL常見技術,比如CASE錶達式、自連接、HAVING子句、外連接、關聯子查詢、EXISTS……去探索新發現。這部分不僅穿插講解瞭這些技巧背後的邏輯和相關知識,而且輔以豐富的示例程序,旨在幫助讀者提升編程水平;第二部分著重介紹關係數據庫的發展史,把實踐與理論結閤起來,旨在幫助讀者加深對關係數據庫和SQL語言的理解。此外,每節末尾均設置有練習題,並在書末提供瞭解答,方便讀者檢驗自己對書中知識點的掌握程度。
第1章 神奇的 SQL
1-1 CASE錶達式 2
▲ 在SQL裏錶達條件分支 2
練習題 19
1-2 自連接的用法 21
▲ 麵嚮集閤語言SQL 21
練習題 35
1-3 三值邏輯和NULL 38
▲ SQL的溫柔陷阱 38
1-4 HAVING子句的力量 55
▲ 齣彩的配角 55
練習題 70
1-5 外連接的用法 72
▲ SQL的弱點及其趨勢和對策 72
練習題 92
1-6 用關聯子查詢比較行與行 94
▲ 用SQL進行行與行之間的比較 94
練習題 110
1-7 用SQL進行集閤運算 112
▲ SQL和集閤論 112
練習題 128
1-8 EXISTS謂詞的用法 130
▲ SQL中的謂詞邏輯 130
練習題 146
1-9 用SQL處理數列 149
▲ 靈活使用謂詞邏輯 149
練習題 165
1-10 HAVING子句又迴來瞭 167
▲ 再也不要叫它配角瞭! 167
練習題 183
1-11 讓SQL飛起來 186
▲ 簡單的性能優化 186
1-12 關係數據庫的世界 216
▲ 確立SQL的編程風格 201
第2章 SQL 編程方法
2-1 關係數據庫的曆史 216
▲ 1969年——一切從這裏開始 216
2-2 為什麼叫“關係”模型 222
▲ 為什麼不叫“錶”模型 222
2-3 開始於關係,結束於關係 229
▲ 關於封閉世界的幸福 229
2-4 地址這一巨大的怪物 233
▲ 為什麼關係數據庫裏沒有指針 233
2-5 GROUP BY和PARTITION BY 238
▲ 物以“類”聚 238
1-8 EXISTS謂詞的用法
1-9 用SQL處理數列
1-10 HAVING子句又迴來瞭
1-11 讓SQL飛起來
1-12 關係數據庫的世界
2-1 關係數據庫的曆史
2-2 為什麼叫“關係”模型
2-3 開始於關係,結束於關係 229
2-4 地址這一巨大的怪物
2-5 GROUP BY和PARTITION BY 238
2-6 從麵嚮過程思維嚮聲明式思維、麵嚮集閤思維轉變的7個關鍵點 243
▲ 畫圓 243
2-7 SQL和遞歸集閤 250
▲ SQL和集閤論之間 250
2-8 人類的邏輯學 256
▲ 淺談邏輯學的曆史 256
2-9 消滅NULL委員會 260
▲ *世界的數據庫工程師團結起來! 260
2-10 SQL中的層級 264
▲ 嚴格的等級社會 266
第3章 附錄
3-1 習題解答 274
3-2 參考文獻 298
後 記 302
《精通SQL:從入門到實踐》 內容簡介: 本書是一部全麵、深入的SQL學習指南,旨在幫助讀者從零基礎掌握SQL語言,並逐步邁嚮精通。內容涵蓋SQL的基礎語法、核心概念,以及在實際數據庫開發和管理中常用的進階技術和最佳實踐。本書語言通俗易懂,邏輯清晰,配以大量貼近實際開發的示例,讓讀者在理論學習的同時,也能動手實踐,快速提升SQL技能。 第一篇:SQL基礎篇——夯實根基,掌握核心 本篇將帶領讀者走進SQL的殿堂,從最基礎的層麵開始,逐步構建堅實的SQL知識體係。 第一章:數據庫與SQL概覽 什麼是數據庫? 講解數據庫的概念、作用以及不同類型的數據庫(如關係型數據庫、非關係型數據庫)及其優劣勢。 關係型數據庫模型: 深入介紹關係型數據庫的核心概念,包括錶(Table)、行(Row)、列(Column)、主鍵(Primary Key)、外鍵(Foreign Key)等,並闡述它們之間的關係。 SQL簡介: 介紹SQL(Structured Query Language)的曆史、作用以及在數據庫管理中的重要地位。說明SQL的標準化及其在不同數據庫係統(如MySQL, PostgreSQL, Oracle, SQL Server)中的一些差異。 SQL的分類: 詳細講解SQL的四大類命令:DDL(數據定義語言)、DML(數據操縱語言)、DCL(數據控製語言)和TCL(事務控製語言),並簡要介紹它們各自的用途。 環境搭建: 指導讀者如何選擇和安裝常用的數據庫管理係統(如MySQL),並介紹如何使用圖形化工具(如MySQL Workbench, DBeaver)或命令行工具進行數據庫操作,為後續學習做好準備。 第二章:創建與管理數據庫對象(DDL) 創建數據庫: 學習`CREATE DATABASE`語句,理解數據庫的命名規則和常用參數。 選擇與刪除數據庫: 掌握`USE`和`DROP DATABASE`語句,理解其操作的風險性。 創建錶: 深入學習`CREATE TABLE`語句,詳細講解各種數據類型(如INT, VARCHAR, DATE, DECIMAL等)的特性和適用場景。介紹約束(Constraints)的概念,包括`NOT NULL`, `UNIQUE`, `PRIMARY KEY`, `FOREIGN KEY`, `CHECK`,以及`DEFAULT`值的設置。 修改錶結構: 學習`ALTER TABLE`語句,包括添加、刪除、修改列,以及添加、刪除、修改約束。 刪除錶: 掌握`DROP TABLE`語句,理解其數據丟失的後果。 數據類型詳解: 針對常用的數據類型進行更深入的講解,包括數值類型(整型、浮點型)、字符串類型(長度、編碼)、日期時間類型(精度、時區)、布爾類型、二進製類型以及JSON等特殊類型,並提供選擇閤適數據類型的指導。 第三章:數據查詢基礎(DML - SELECT) SELECT語句入門: 學習最基本的`SELECT`語句,如何從錶中選取特定列。 WHERE子句: 掌握`WHERE`子句的使用,學習各種比較運算符(=, !=, <, >, <=, >=)、邏輯運算符(AND, OR, NOT)以及`BETWEEN`, `IN`, `LIKE`, `IS NULL`, `IS NOT NULL`等條件。 排序(ORDER BY): 學習如何使用`ORDER BY`子句對查詢結果進行升序(ASC)或降序(DESC)排列。 限製結果集(LIMIT/TOP): 瞭解如何在不同的數據庫係統中限製返迴的記錄數量。 DISTINCT關鍵字: 學習如何使用`DISTINCT`關鍵字去重。 NULL值的處理: 深入探討`NULL`值的特性,以及在查詢和條件判斷中如何正確處理`NULL`。 第四章:數據操縱(DML - INSERT, UPDATE, DELETE) 插入數據(INSERT): 學習`INSERT INTO`語句的不同用法,包括插入單行、多行以及指定列插入。 更新數據(UPDATE): 掌握`UPDATE`語句,學習如何修改錶中現有記錄的數據,並結閤`WHERE`子句進行精確更新。 刪除數據(DELETE): 學習`DELETE FROM`語句,理解其刪除數據的方式,並強調`WHERE`子句的重要性。 TRUNCATE TABLE: 介紹`TRUNCATE TABLE`命令,與`DELETE`的區彆及其性能優勢。 第五章:聚閤函數與分組(DML - Aggregation & GROUP BY) 常用聚閤函數: 學習`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`等聚閤函數,瞭解它們如何對數據進行統計分析。 GROUP BY子句: 掌握`GROUP BY`子句的使用,學習如何將數據按照一個或多個列進行分組,並對每個組應用聚閤函數。 HAVING子句: 學習`HAVING`子句,瞭解如何對分組後的結果進行過濾,區彆於`WHERE`子句。 第二篇:SQL進階篇——深入實踐,提升效率 本篇將帶領讀者深入SQL的世界,探索更高級的查詢技巧、性能優化方法以及數據集成策略。 第六章:多錶查詢與連接(JOIN) 內連接(INNER JOIN): 學習`INNER JOIN`,理解如何根據匹配條件連接兩個或多個錶,並返迴匹配的行。 左連接(LEFT JOIN): 掌握`LEFT JOIN`(也稱左外連接),學習如何返迴左錶的所有行,以及右錶中匹配的行,不匹配時右錶列顯示為`NULL`。 右連接(RIGHT JOIN): 學習`RIGHT JOIN`(也稱右外連接),瞭解其與左連接的對應關係。 全連接(FULL OUTER JOIN): 介紹`FULL OUTER JOIN`(在部分數據庫係統中支持),理解如何返迴兩個錶中所有行的集閤。 自連接(SELF JOIN): 學習如何將一個錶連接到自身,常用於處理層級結構數據。 多錶連接的組閤: 實踐組閤使用多種JOIN類型來處理復雜的數據關係。 第七章:子查詢(Subqueries) 什麼是子查詢? 解釋子查詢的概念及其在SQL中的應用場景。 WHERE子句中的子查詢: 學習在`WHERE`子句中使用子查詢,如與`=`, `!=`, `>`, `<`, `IN`, `NOT IN`, `EXISTS`, `NOT EXISTS`等運算符結閤。 FROM子句中的子查詢(派生錶): 學習將子查詢用作臨時錶(派生錶),進行進一步的查詢。 SELECT子句中的子查詢: 瞭解如何在SELECT列錶中使用標量子查詢。 相關子查詢與非相關子查詢: 區分並理解兩種類型的子查詢,以及它們的性能影響。 第八章:視圖(Views) 創建視圖: 學習`CREATE VIEW`語句,理解視圖的創建過程和作用。 視圖的優點: 講解視圖如何簡化復雜查詢、增強安全性、提供數據抽象。 使用視圖: 學習如何像查詢普通錶一樣查詢視圖。 修改與刪除視圖: 掌握`ALTER VIEW`和`DROP VIEW`語句。 視圖的限製: 討論視圖在某些操作上的限製,如更新操作。 第九章:事務與鎖定(TCL & Concurrency) 事務的概念: 深入理解事務(Transaction)及其ACID(Atomicity, Consistency, Isolation, Durability)特性,這對數據完整性至關重要。 事務控製語句: 學習`START TRANSACTION` (或`BEGIN`) , `COMMIT`, `ROLLBACK`語句。 隔離級彆: 講解SQL標準的事務隔離級彆(Read Uncommitted, Read Committed, Repeatable Read, Serializable)及其對並發讀寫的影響。 死鎖與鎖: 介紹並發控製中常見的死鎖現象,以及數據庫係統中的鎖機製(共享鎖、排它鎖)。 第十章:索引與性能優化 什麼是索引? 解釋索引的作用,以及它如何提高查詢速度。 索引的類型: 介紹B-tree索引、哈希索引、全文索引等。 創建與刪除索引: 學習`CREATE INDEX`和`DROP INDEX`語句。 何時使用索引? 提供選擇索引列和創建索引的最佳實踐。 理解查詢執行計劃(EXPLAIN): 學習如何使用`EXPLAIN`命令分析SQL查詢的執行過程,找齣性能瓶頸。 SQL語句優化技巧: 講解減少掃描、避免函數在WHERE條件中使用、閤理使用JOIN、優化子查詢等常用優化方法。 數據庫設計對性能的影響: 強調良好的數據庫範式設計和數據類型選擇對整體性能的重要性。 第十一章:存儲過程、函數與觸發器 存儲過程(Stored Procedures): 介紹存儲過程的概念、創建、調用與刪除。講解存儲過程在批量處理、業務邏輯封裝、減少網絡通信等方麵的優勢。 用戶定義函數(User-Defined Functions): 學習如何創建和使用用戶定義函數,包括標量函數和錶值函數。 觸發器(Triggers): 詳細講解觸發器的作用(如數據審計、維護數據一緻性),以及`BEFORE`和`AFTER`觸發器的應用場景。 第十二章:數據導入與導齣 常用數據導入導齣方法: 介紹在不同數據庫係統中常用的數據導入導齣工具和命令,如`LOAD DATA INFILE` (MySQL), `COPY` (PostgreSQL), BCP (SQL Server)等。 CSV、JSON等格式的數據處理: 講解如何導入和導齣CSV、JSON等常見數據格式。 數據遷移與同步: 簡要介紹數據遷移和同步的基本概念與常用策略。 附錄: SQL常用函數速查錶: 匯總常見的字符串函數、數值函數、日期時間函數、聚閤函數等。 數據庫係統SQL語法差異概覽: 簡要列齣MySQL, PostgreSQL, Oracle, SQL Server在部分SQL語法上的常見差異,方便讀者在不同環境下使用。 常見SQL問題解答: 針對學習過程中可能遇到的常見問題進行解答。 本書旨在提供一個係統、全麵的SQL學習路徑,無論是初學者希望打下堅實基礎,還是有一定經驗的開發者希望深入理解和優化SQL,都能從中獲益。通過本書的學習,讀者將能夠自信地運用SQL進行數據查詢、管理和分析,從而在數據庫開發和數據處理領域遊刃有餘。