本書是為高等院校應用型本科計算機專業(yè)或相關專業(yè)精心編寫的一本數(shù)據(jù)庫課程教學用書, 它以SQL Server 2012為核心系統(tǒng), 較完整地論述了數(shù)據(jù)庫系統(tǒng)的基本概念、基本原理和SQL Server的應用技術。
以關系數(shù)據(jù)庫系統(tǒng)為核心。
反映了當前數(shù)據(jù)庫領域的新技術、新水平和新趨勢。
注重理論聯(lián)系實際,強化數(shù)據(jù)庫設計技術。
將抽象理論融合到具體模型中。結合SQLServer2012數(shù)據(jù)庫管理系統(tǒng),講解數(shù)據(jù)庫的管理技術和應用。
在內(nèi)容選取、章節(jié)安排、難易程度、例子選取等方面充分考慮到理論教學和實踐教學的需要。
第1章 數(shù)據(jù)庫系統(tǒng)概述 1
1.1 數(shù)據(jù)管理技術的發(fā)展 1
1.1.1 數(shù)據(jù)和數(shù)據(jù)管理 1
1.1.2 數(shù)據(jù)管理發(fā)展的三個階段 2
1.2 數(shù)據(jù)庫系統(tǒng) 5
1.2.1 數(shù)據(jù)庫系統(tǒng)的組成 5
1.2.2 數(shù)據(jù)庫系統(tǒng)結構 8
1.3 數(shù)據(jù)模型 9
1.3.1 數(shù)據(jù)處理的三個階段 9
1.3.2 常見的數(shù)據(jù)模型 13
1.4 處理大規(guī)模數(shù)據(jù)的數(shù)據(jù)庫 17
1.4.1 分布式數(shù)據(jù)庫 17
1.4.2 并行數(shù)據(jù)庫 20
1.4.3 NoSQL數(shù)據(jù)庫 23
1.4.4 云數(shù)據(jù)庫 25
1.4.5 XML數(shù)據(jù)庫 28
習題1 30
第2章 關系型數(shù)據(jù)庫基本理論 31
2.1 關系數(shù)據(jù)模型 31
2.1.1 關系數(shù)據(jù)結構 31
2.1.2 關系運算 35
2.1.3 關系的完整性約束 36
2.2 關系代數(shù)基本理論 38
2.2.1 傳統(tǒng)的集合運算 39
2.2.2 專門的關系運算 42
2.2.3 關系代數(shù)表達式及其應用實例 46
2.3 關系數(shù)據(jù)庫的規(guī)范化理論 47
2.3.1 關系模式規(guī)范化的必要性 47
2.3.2 函數(shù)依賴 49
2.3.3 關系的范式及規(guī)范化 51
2.3.4 關系模式的分解 53
習題2 56
第3章 數(shù)據(jù)庫設計 59
3.1 數(shù)據(jù)庫設計概述 59
3.1.1 數(shù)據(jù)庫設計目標和方法 59
3.1.2 數(shù)據(jù)庫設計的基本步驟 61
3.2 需求分析 62
3.2.1 需求分析的任務和目標 63
3.2.2 需求分析的步驟 63
3.2.3 數(shù)據(jù)流圖 64
3.2.4 數(shù)據(jù)字典 67
3.3 概念結構設計 68
3.3.1 概念結構設計任務和E-R模型的特點 68
3.3.2 概念結構設計的基本方法 68
3.3.3 概念結構設計的主要步驟 69
3.3.4 局部E-R模型的設計 70
3.3.5 全局E-R模型的設計 77
3.3.6 概念結構設計實例 81
3.4 邏輯結構設計 86
3.4.1 E-R模型向關系模式的轉換 86
3.4.2 關系模式的優(yōu)化 90
3.5 物理結構設計 93
3.5.1 設計物理結構 93
3.5.2 評價物理結構 94
3.6 數(shù)據(jù)庫的實施 95
3.7 數(shù)據(jù)庫運行和維護 95
習題3 96
第4章 SQL Server系統(tǒng)概述 98
4.1 SQL Server系統(tǒng)簡介 98
4.1.1 SQL Server的版本 98
4.1.2 SQL Server系統(tǒng)數(shù)據(jù)庫 99
4.1.3 SQL Server三個關鍵系統(tǒng)表 99
4.2 Transact-SQL簡介 102
4.2.1 SQL語言的發(fā)展與特點 102
4.2.2 Transact-SQL語法基礎 103
4.3 Transact-SQL流程控制語句 112
4.3.1 BEGIN … END語句 112
4.3.2 分支語句 113
4.3.3 循環(huán)語句 115
4.3.4 RETURN語句 116
4.3.5 WAITFOR語句 117
4.3.6 TRY…CATCH語句 117
4.4 SQL Server存儲機制 118
4.4.1 SQL Server數(shù)據(jù)頁 118
4.4.2 SQL Server數(shù)據(jù)頁類型 119
4.4.3 DBCC命令 120
4.4.4 實例分析 121
習題4 125
第5章 數(shù)據(jù)庫和數(shù)據(jù)表管理 126
5.1 SQL Server數(shù)據(jù)庫概述 126
5.1.1 數(shù)據(jù)庫文件類型 126
5.1.2 數(shù)據(jù)庫文件組 127
5.2 SQL Server數(shù)據(jù)庫基本管理 127
5.2.1 創(chuàng)建用戶數(shù)據(jù)庫 127
5.2.2 數(shù)據(jù)庫結構的修改 132
5.2.3 數(shù)據(jù)庫文件的更名、刪除 136
5.3 SQL Server數(shù)據(jù)表管理 137
5.3.1 表的創(chuàng)建與維護 137
5.3.2 表中數(shù)據(jù)的維護 146
5.3.3 數(shù)據(jù)表的行列互換輸出 148
習題5 149
第6章 數(shù)據(jù)查詢與游標機制 150
6.1 基本查詢 150
6.1.1 SELECT查詢語句的結構 150
6.1.2 簡單查詢 151
6.1.3 帶有WHERE子句的查詢 154
6.1.4 帶有ORDER BY子句的查詢 156
6.1.5 帶有GROUP BY子句的查詢 157
6.1.6 輸出結果選項 158
6.1.7 聯(lián)合查詢 159
6.2 多表查詢 160
6.2.1 連接查詢 160
6.2.2 子查詢 164
6.3 游標機制 170
6.3.1 游標概述 170
6.3.2 游標的管理 171
6.3.3 利用游標修改和刪除表數(shù)據(jù) 176
習題6 176
第7章 視圖與索引 178
7.1 視圖 178
7.1.1 視圖的基本概念 178
7.1.2 創(chuàng)建視圖 179
7.1.3 修改視圖 184
7.1.4 刪除視圖 185
7.1.5 使用視圖 185
7.2 索引 187
7.2.1 索引的基本概念 187
7.2.2 創(chuàng)建索引 189
7.2.3 管理索引 192
習題7 196
第8章 存儲過程、觸發(fā)器和用戶定義函數(shù) 198
8.1 存儲過程 198
8.1.1 存儲過程概述 198
8.1.2 創(chuàng)建存儲過程 200
8.1.3 調用存儲過程 206
8.1.4 管理存儲過程 207
8.2 觸發(fā)器 210
8.2.1 觸發(fā)器概述 210
8.2.2 創(chuàng)建觸發(fā)器 211
8.2.3 管理觸發(fā)器 217
8.3 用戶定義函數(shù) 219
8.3.1 用戶定義函數(shù)概述 219
8.3.2 創(chuàng)建用戶定義函數(shù) 220
8.3.3 管理用戶定義函數(shù) 223
習題8 224
第9章 數(shù)據(jù)庫并發(fā)控制 225
9.1 事務 225
數(shù)據(jù)庫和數(shù)據(jù)表管理
數(shù)據(jù)庫是存放數(shù)據(jù)的容器,在設計一個應用系統(tǒng)時,必須先設計數(shù)據(jù)庫。數(shù)據(jù)庫中的數(shù)據(jù)及相關信息通常被存儲在一個或多個磁盤文件(即數(shù)據(jù)庫文件)中,而數(shù)據(jù)庫管理系統(tǒng)為用戶或數(shù)據(jù)庫應用程序提供統(tǒng)一的接口來訪問和控制這些數(shù)據(jù),使得用戶不需要直接訪問數(shù)據(jù)庫文件。
數(shù)據(jù)庫中最重要的對象是數(shù)據(jù)表,簡稱表(table),表中存儲了數(shù)據(jù)庫的數(shù)據(jù)。對數(shù)據(jù)庫和表的操作是開發(fā)人員的一項重要工作。
5.1 SQL Server數(shù)據(jù)庫概述
SQL Server 數(shù)據(jù)庫是存放表和視圖、索引、存儲過程和觸發(fā)器等數(shù)據(jù)庫對象的邏輯實體,從邏輯角度組織與管理數(shù)據(jù)。
5.1.1 數(shù)據(jù)庫文件類型
在SQL Server中,數(shù)據(jù)庫是由數(shù)據(jù)文件和事務日志文件組成的,一個數(shù)據(jù)庫至少應包含一個數(shù)據(jù)文件和一個事務日志文件。包括系統(tǒng)數(shù)據(jù)庫在內(nèi)的每個數(shù)據(jù)庫都有自己的文件集,而且不與其他數(shù)據(jù)庫共享這些文件。SQL Server 數(shù)據(jù)庫具有如下三種類型的文件。
1.主數(shù)據(jù)文件
主數(shù)據(jù)文件是數(shù)據(jù)庫的起點,其中包含數(shù)據(jù)庫的初始信息,記錄數(shù)據(jù)庫所擁有的文件指針。每個數(shù)據(jù)庫有且僅有一個主數(shù)據(jù)文件,這是數(shù)據(jù)庫必需的文件。主數(shù)據(jù)文件的擴展名是.mdf。
2.輔助數(shù)據(jù)文件
除主數(shù)據(jù)文件以外的所有其他數(shù)據(jù)文件都是輔助數(shù)據(jù)文件。輔助數(shù)據(jù)文件存儲主數(shù)據(jù)文件未存儲的所有其他數(shù)據(jù)和對象,它不是數(shù)據(jù)庫必需的文件。當一個數(shù)據(jù)庫需要存儲的數(shù)據(jù)量很大(超過了Windows操作系統(tǒng)對單一文件大小的限制)時,可以用輔助數(shù)據(jù)文件來保存主數(shù)據(jù)文件無法存儲的數(shù)據(jù)。輔助數(shù)據(jù)文件可以分散存儲在不同的物理磁盤中,從而可以提高數(shù)據(jù)的讀寫效率。輔助數(shù)據(jù)文件擴展名為.ndf。
3.事務日志文件
在SQL Server中,每個數(shù)據(jù)庫至少擁有一個自己的日志文件,也可以擁有多個日志文件。日志文件最小是1MB,用來記錄所有事務以及每個事務對數(shù)據(jù)庫所做的修改。日志文件的擴展名是.ldf。
在創(chuàng)建數(shù)據(jù)庫的時候,日志文件也會隨之被創(chuàng)建。如果系統(tǒng)出現(xiàn)故障時,常常需要使用事務日志將數(shù)據(jù)庫恢復到正常狀態(tài)。這是SQL Server的一個重要的容錯特性,它可以有效地防止數(shù)據(jù)庫的損壞,維護數(shù)據(jù)庫的完整性。
在SQL Server中,用戶還可以指定數(shù)據(jù)文件的大小能夠自動增長。在定義數(shù)據(jù)文件時,指定一個特定的增量,每次擴大文件時均按此增量來增長。另外,每個文件的大小可以指定一個最大值,當文件大小達到最大值時,就不再增長。如果沒有指定文件最大值,文件可以一直增長到磁盤沒有可用空間為止。
5.1.2 數(shù)據(jù)庫文件組
為了有助于數(shù)據(jù)布局和管理任務,SQL Server 允許用戶將多個文件劃分為一個文件集合,這些文件可以在不同的磁盤上,并為這一集合命名,這就是文件組。
文件組是數(shù)據(jù)庫中數(shù)據(jù)文件的邏輯組合,數(shù)據(jù)庫文件組有主文件組、用戶定義文件組和默認文件組三類。
1.主文件組
主文件組是包含主要文件的文件組。所有系統(tǒng)表和沒有明確分配給其他文件組的任何文件都被分配到主文件組中,一個數(shù)據(jù)庫只有一個主文件組。
2.用戶定義文件組
用戶定義文件組是用戶首次創(chuàng)建數(shù)據(jù)庫時,或修改數(shù)據(jù)庫時自定義的,其目的是為了將數(shù)據(jù)存儲進行合理的分配,以提高數(shù)據(jù)的讀寫效率。
3.默認文件組
每個數(shù)據(jù)庫中均有一個文件組被指定為默認文件組。如果在數(shù)據(jù)庫中創(chuàng)建對象時沒有指定對象所屬的文件組,對象將被分配給默認文件組。在任何時候,只能將一個文件組指定為默認文件組。
關于默認文件組有如下說明:
(1)默認文件組中的文件必須足夠大,能夠容納未分配給其他文件組的所有新對象。
(2)如果沒有指定默認文件組,則將主文件組作為默認文件組。
(3)PRIMARY文件組是默認文件組。
5.2 SQL Server數(shù)據(jù)庫基本管理
在SQL Server中,所有類型的數(shù)據(jù)庫管理操作有兩種方式:一是SSMS圖形化界面方式;二是Transact-SQL語句代碼方式。
5.2.1 創(chuàng)建用戶數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫就是為數(shù)據(jù)庫確定名稱、大小、存放位置、文件名和所在文件組的過程。在一個SQL Server實例中,最多可以創(chuàng)建32 767個數(shù)據(jù)庫,數(shù)據(jù)庫的名稱必須滿足系統(tǒng)的標識符規(guī)則。在命名數(shù)據(jù)庫時,一定要使數(shù)據(jù)庫名稱簡短并有一定的含義。
例5.1 創(chuàng)建教學管理數(shù)據(jù)庫JXGL。主數(shù)據(jù)文件邏輯名為JXGL.mdf,保存路徑為D:\ JXGLSYS\DATA,日志文件的邏輯名為JXGL_log.ldf,保存路徑為D:\JXGLSYS\ Data_log。主數(shù)據(jù)文件大小為3MB,文件大小不受限制,增長量為1MB;日志文件的初始大小為1MB,最大為20MB,增長比例為10%。
1.利用SSMS圖形化方式
利用圖形化方法SSMS可以非常方便地創(chuàng)建數(shù)據(jù)庫,尤其對于初學者來說簡單易用。具體的操作步驟如下:
。1)在SSMS窗口的“對象資源管理器”中展開服務器,然后選擇“數(shù)據(jù)庫”結點。
。2)在“數(shù)據(jù)庫”結點上右擊,從彈出的快捷菜單中選擇“新建數(shù)據(jù)庫”命令,如圖5.1所示。
圖5.1 選擇“新建數(shù)據(jù)庫”命令
。3)執(zhí)行上述操作后,會彈出“新建數(shù)據(jù)庫”對話框,如圖5.2所示。在這個對話框中有三個選項,分別是“常規(guī)”“選項”和“文件組”,默認是“常規(guī)”選項。完成這三個選項中的內(nèi)容之后,就完成了數(shù)據(jù)庫的創(chuàng)建工作。
(4)在“數(shù)據(jù)庫名稱”文本框中輸入新建數(shù)據(jù)庫的名稱,例如本例輸入JXGL。
。5)在“所有者”文本框中輸入新建數(shù)據(jù)庫的所有者,如sa。根據(jù)數(shù)據(jù)庫的使用情況,選擇啟用或者禁用“使用全文索引”復選框。本例中取<默認值>。
。6)在圖5.2的“數(shù)據(jù)庫文件”列表中,包括兩行:一行是行數(shù)據(jù)文件,另一行是日志文件。通過單擊下面相應的按鈕,可以添加或者刪除相應的數(shù)據(jù)文件。該列表中各字段值的含義如下:
邏輯名稱——指定該文件的文件名。
文件類型——用于區(qū)別當前文件是數(shù)據(jù)文件還是日志文件。
文件組——顯示當前數(shù)據(jù)庫文件所屬的文件組。
初始大小——指定該文件的初始容量,在SQL Server 2012中數(shù)據(jù)文件的默認值為5MB,日志文件的默認值為2MB。
自動增長——用于設置在文件的容量不夠用時,文件根據(jù)何種增長方式自動增長。因為本例中日志文件的最大值為20MB,通過單擊“自動增長”列中的JXGL_log省略號按鈕,打開“更改JXGL_Log的自動增長設置”對話框進行設置,如圖5.3所示。做日志文件大小修改,本例中設為20。
圖5.2 “新建數(shù)據(jù)庫”對話框
圖5.3 JXGL_log自動增長設置修改
路徑——指定存放該文件的目錄。
。7)單擊“選項”選擇頁,設置數(shù)據(jù)庫的排序規(guī)則、恢復模式、兼容級別和其他需要設置的內(nèi)容,如圖5.4所示。
(8)單擊“文件組”選擇頁,可以設置數(shù)據(jù)庫文件所屬的文件組,還可以通過“添加”或者“刪除”按鈕更改數(shù)據(jù)庫文件所屬的文件組,如圖5.5所示。
(9)完成以上操作后,就可以單擊“確定”按鈕關閉“新建數(shù)據(jù)庫”對話框。至此,便成功創(chuàng)建了一個數(shù)據(jù)庫。
可以通過“對象資源管理器”窗口查看新建的數(shù)據(jù)庫。
……