內容簡介
本書共分為14章,由易到難,逐步講解SQL語句的應用。其中,第1章介紹瞭SQL概述;第2章簡單介紹瞭SCOTT模式;第3~6章分彆介紹瞭SQL常用的增刪改查知識;第7~12章分彆介紹瞭常用的數據庫對象,包含瞭視圖、索引、約束、觸發器、存儲過程和函數;第13章介紹瞭非常重要的事務知識;第14章對SQLSERVER數據庫和Oracle數據庫中存在的一些差異進行瞭舉例比較。
目錄
推薦序
前言
第1章 SQL概述1
1.1 DML1
1.2 DDL1
1.3 TCL2
1.4 DCL2
1.5 總結2
第2章 SCOTT模式4
2.1 DEPT5
2.2 EMP7
2.3 SALGRADE10
2.4 BONUS11
2.5 總結12
第3章 新增語句13
3.1 單行新增13
3.1.1 values單行新增14
3.1.2 select單行新增16
3.2 建錶新增18
3.3 查詢結果新增20
3.4 常見誤區分析21
3.4.1 曆史數據轉移引起的問題21
3.4.2 values單行新增不要省略列名24
3.5 總結25
第4章 刪除語句26
4.1 delete語法26
4.1.1 直接刪除錶中記錄26
4.1.2 基於其他錶刪除錶中記錄27
4.2 truncate語法28
4.3 誤刪數據恢復29
4.4 誤刪對象恢復30
4.5 常見誤區分析31
4.5.1 慎用delete31
4.5.2 畫蛇添足32
4.6 總結32
第5章 更新語句33
5.1 update語法33
5.2 單錶更新33
5.3 錶關聯更新35
5.4 常見誤區分析36
5.4.1 注意錶關聯更新36
5.4.2 注意數據類型38
5.5 總結39
第6章 查詢語句40
6.1 查詢語句的語法40
6.2 where子句中常用的運算符41
6.2.1 算術運算符42
6.2.2 邏輯運算符43
6.2.3 比較運算符44
6.2.4 優先級50
6.3 分組51
6.3.1 分組函數51
6.3.2 創建組52
6.4 排序52
6.5 空值56
6.6 多錶連接56
6.6.1 交叉連接57
6.6.2 非等值連接58
6.6.3 等值連接之內連接59
6.6.4 等值連接之外連接60
6.6.5 等值連接之自連接64
6.6.6 等值連接之自然連接66
6.7 集閤運算67
6.7.1 並集67
6.7.2 交集68
6.7.3 差集69
6.8 子查詢70
6.8.1 多行單列子查詢70
6.8.2 多行多列子查詢72
6.8.3 單行單列子查詢72
6.8.4 單行多列子查詢73
6.8.5 內聯視圖74
6.8.6 關聯子查詢74
6.9 彆名76
6.9.1 錶彆名77
6.9.2 列彆名77
6.10 常見誤區分析79
6.10.1 count爭議79
6.10.2 null的比較80
6.10.3 單行子查詢返迴多行82
6.10.4 分組函數的嵌套83
6.10.5 not in84
6.10.6 with(nolock)86
6.10.7 with(readpast)88
6.10.8 max用於字符型屬性89
6.11 總結91
第7章 視圖92
7.1 視圖語法92
7.1.1 創建語法92
7.1.2 修改語法93
7.1.3 刪除語法93
7.2 視圖舉例94
7.3 視圖的作用95
7.3.1 定製用戶數據95
7.3.2 復雜查詢簡單化96
7.4 簡單視圖97
7.5 復雜視圖97
7.6 鍵值保存錶97
7.7 隻讀視圖98
7.8 with check option98
7.9 物化視圖101
7.9.1 創建時生成數據選項101
7.9.2 刷新方式102
7.9.3 數據刷新的時間102
7.9.4 物化視圖索引103
7.9.5 物化視圖舉例103
7.10 索引視圖106
7.11 常見誤區分析107
7.11.1 單張錶組成的視圖可以更新107
7.11.2 多張錶組成的視圖不能更新109
7.12 總結111
第8章 索引112
8.1 索引語法113
8.1.1 創建語法113
8.1.2 刪除語法113
8.2 B-Tree索引113
8.3 聚集索引122
8.4 唯一索引122
8.5 非唯一索引124
8.6 組閤索引124
8.7 反嚮鍵索引125
8.8 函數索引125
8.9 索引組織錶127
8.10 常見誤區128
8.10.1 null全錶掃描128
8.10.2 < >比較符引起全錶掃描129
8.10.3 引起全錶掃描131
8.10.4 函數造成全錶掃描131
8.10.5 慎用全錶掃描132
8.10.6 組閤索引如何進行索引133
8.11 總結135
第9章 約束136
9.1 約束語法136
9.1.1 創建語法136
9.1.2 刪除語法137
9.2 主鍵約束137
9.3 外鍵約束138
9.4 唯一性約束141
9.5 非空約束142
9.6 check約束143
9.7 默認值約束144
9.8 常見誤區分析146
9.8.1 是否有必要使用外鍵146
9.8.2 程序校驗代替檢查約束146
9.9 總結148
第10章 觸發器149
10.1 觸發器語法149
10.1.1 創建語法149
10.1.2 修改語法150
10.1.3 刪除語法151
10.2 變異錶151
10.3 觸發器內置對象151
10.4 行級觸發器151
10.5 語句級觸發器153
10.6 觸發時間156
10.7 instead of觸發器160
10.8 常見誤區分析162
10.8.1 讀變異錶162
10.8.2 觸發器死循環162
10.9 總結164
第11章 存儲過程165
11.1 存儲過程語法165
11.1.1 創建語法166
11.1.2 修改語法166
11.1.3 刪除語法167
11.2 IN模式參數167
11.3 OUT模式參數169
11.4 刪除存儲過程171
11.5 常見誤區分析171
11.5.1 存儲過程事務控製171
11.5.2 參數名稱引發的事故179
11.6 總結181
第12章 函數183
12.1 係統函數183
12.1.1 字符函數183
12.1.2 數值函數186
12.1.3 日期函數186
12.1.4 null相關的函數189
12.1.5 聚閤函數190
12.1.6 其他常用函數190
12.2 自定義函數191
12.2.1 自定義函數語法191
12.2.2 SQL Server標量值函數193
12.2.3 SQL Server內聯錶值函數193
12.2.4 SQL Server多語句錶值函數194
12.2.5 Oracle標量值函數194
12.2.6 Oracle錶值函數195
12.3 常見誤區分析196
12.3.1 SQL函數必須有返迴值196
12.3.2 SQL函數中不能進行DML操作198
12.4 總結200
第13章 事務201
13.1 銀行轉賬案例201
13.2 事務的4個屬性204
13.2.1 原子性205
13.2.2 一緻性205
13.2.3 隔離性205
13.2.4 持久性206
13.3 並發引起的問題207
13.3.1 髒讀207
13.3.2 不可重復讀207
13.3.3 幻讀207
13.4 事務隔離級彆208
13.4.1 讀未提交208
13.4.2 讀提交208
13.4.3 重復讀208
13.4.4 序列化209
13.5 事務保存點209
13.6 自治事務210
13.6.1 自治事務用於存儲過程210
13.6.2 自治事務用於觸發器212
13.7 常見誤區分析214
13.7.1 自治事務死鎖214
13.7.2 自治事務獲取主事務的信息214
13.7.3 主事務獲取自治事務的信息216
13.8 總結217
第14章 SQL Server與Oracle的差異219
14.1 前N行219
14.2 字符串拼接220
14.3 獲取係統時間221
14.4 空字符串221
14.5 錶彆名223
14.6 null值排序224
14.7 update引起 select阻塞225
14.8 SQL、T-SQL和PL/SQL227
14.9 視圖定義中齣現排序227
14.10 對視圖非鍵值保存錶的更新229
14.11 分組函數嵌套231
14.12 內聯視圖232
14.13 關聯錶刪除233
14.14 關聯錶更新234
14.15 自增列235
14.16 總結238
前言/序言
前 言 Preface
在信息管理係統中,SQL語句是非常重要的組成部分。雖然用戶不會直接使用SQL語句操作信息管理係統,但是,信息管理係統必須使用SQL語句去響應用戶的請求。作為信息管理係統的創造者和維護者,每一位相關IT人員都應該能熟練使用SQL。隨著社會的進步以及信息技術的革新,新的信息管理係統業務邏輯變得越來越復雜,業務數據量變得越來越龐大,SQL語句應該引起信息技術從業者的足夠重視。好的SQL語句能夠幫助信息管理係統更穩健地運行,相反,差的SQL語句則將極大地降低信息管理係統運行的效率,從而影響用戶的體驗。
編者自2008年從江南大學計算機科學與技術專業畢業後,一直從事醫院信息管理係統(HIS)的研發與技術支持工作。在近10年的項目實戰中,遇到瞭無數次由於不閤理地使用SQL語句而造成的各種問題。有些性能問題甚至直到係統運行數年,數據量達到一定程度,已經影響用戶日常使用瞭纔被發現。項目組中很多技術支持人員及工程人員對SQL語句沒有足夠的重視,以至於很多不閤理的SQL語句年復一年地齣現在軟件産品中,降低瞭産品的質量。一個好的程序員不是熟練使用開發語言就可以瞭,還要對SQL語句乃至數據庫知識有深入的瞭解。編者憑藉多年的項目實戰經驗,並結閤紮實的理論知識編寫瞭此書,希望能夠幫助更多的讀者學會SQL語句,並能正確、高效地使用它,從而保障信息管理係統高質量、高效率地運行。
不同於一些純理論書,本書在編寫過程中一直秉承理論結閤實踐的原則來介紹SQL語句的應用。並且,用切身體會來分析平常遇到的一些SQL語句的使用誤區,以便讀者更好地理解SQL語句,也希望能夠幫助讀者在以後的工作中避免陷入誤區。本書所講的知識完全來自於編者近年來數百次的項目實戰。由於本書是一本介紹SQL語句的書籍,一些舉例盡量使用標準SQL。標準SQL以外的SQL相關知識,分彆以SQL Server數據庫的T-SQL和Oracle數據庫的PL/SQL來講解。之所以選擇SQL Server數據庫和Oracle數據庫來講解,是因為在信息管理係統領域,SQL Server數據庫和Oracle數據庫具有非常高的市場占有率,而且很多讀者平時接觸最多的也是SQL Server數據庫和Oracle數據庫。
本書講解過程中用到的是Oracle數據庫管理係統中SCOTT模式下的關係模型。該關係模型主要包含4張錶,分彆是EMP(員工錶)、DEPT(部門錶)、SALGRADE(月薪等級錶)以及BONUS(奬金錶)。SCOTT模型是Oracle數據庫安裝過程中默認安裝的一個非常精簡並且容易理解的關係模型,非常適閤SQL語句的學習。本書分彆給齣瞭這4張錶在SQL Server數據庫與Oracle數據庫中的建錶語句,以及基礎數據導入的SQL腳本,後續SQL語句的舉例也基本圍繞這4張錶展開。
本書共分為14章,由易到難,逐步講解SQL語句的應用。其中,第1章是SQL概述;第2章簡單介紹SCOTT模式;第3~6章分彆介紹SQL常用的增刪改查功能;第7~12章分彆介紹常用的數據庫對象,包含視圖、索引、約束、觸發器、存儲過程和函數;第13章介紹非常重要的事務知識;第14章通過示例比較SQL Server數據庫和Oracle數據庫的差異。
本書在編寫過程中得到瞭創業軟件股份有限公司多位領導和同事的支持和幫助,感謝高級副總裁瀋建苗、人力資源總經理於瑤以及研發中心各位同事。
由於編者的精力和水平有限,書中錯誤和疏漏之處在所難免,敬請廣大讀者批評指正。
SQL應用及誤區分析 下載 mobi epub pdf txt 電子書 格式