Transcript 第六章建立資料庫
第6章
建立資料庫
著作權所有 © 旗標出版股份有限公司
1
本章提要
6-1 使用 SQL Server Management Studio 管
理工具建立資料庫
6-2 用 CREATE DATABASE 敘述建立資料庫
6-3 卸離與附加資料庫
6-4 使用 SQL Server Management Studio 管
理工具修改資料庫設定
6-5 用 ALTER DATABASE 敘述修改資料庫
6-6 刪除資料庫
2
6-1 使用 SQL Server Management
Studio 管理工具建立資料庫
SQL Server 中的資料庫都必須使用自己專屬
的檔案來儲存資料, 而且至少需要兩個檔案:
一個用來儲存資料, 通稱為資料檔案, 另一個用
來儲存資料庫的異動記錄, 通稱為記錄檔。
所謂 "建立資料庫", 主要就是為資料庫指定上
述那兩種檔案, 當然, 還有一些屬性要設定, 例
如為資料庫命名、設定檔案大小 ... 等等。詳
細情形, 待後面實際操作時就會明瞭了。
3
使用 SQL Server Management
Studio 管理工具建立資料庫
這一節我們先介紹在 SQL Server
Management Studio 管理工具中建立資料庫的
方法。
請啟動 SQL Server Management Studio, 連
上您要操作的 SQL Server, 如下建立資料庫:
4
使用 SQL Server Management
Studio 管理工具建立資料庫
5
使用 SQL Server Management
Studio 管理工具建立資料庫
6
使用 SQL Server Management
Studio 管理工具建立資料庫
資料檔案與記錄檔是 SQL Server 存放資料與
記錄用的檔案, 所以想當然耳, 資料量或記錄量
越多, 這兩個檔案所需的大小就會越大。
當您建立資料庫時, 必須設定這兩個檔案的初
始大小, 就像建立磁碟機 (C:、D:) 時, 必須指
定要分配多大的容量給磁碟機一樣。
7
使用 SQL Server Management
Studio 管理工具建立資料庫
您可能會擔心, 如果一開始設定的初始大小不
夠大怎麼辦?SQL Server 提供了自動成長的
功能, 當您的資料量太多, 導致檔案放不下的話,
SQL Server 會自動幫您擴大檔案的大小, 這樣
就不必擔心檔案不夠大的問題了。
不過, 讓資料庫的檔案大小自動成長雖然方便,
但成長後容易造成資料在磁碟中不連續存放,
亦會降低資料庫的效率, 所以還是建議先估算
資料庫所需容量, 然後在初始大小欄位中直接
設定適當大小。
8
使用 SQL Server Management
Studio 管理工具建立資料庫
至於自動成長的功能也有很多選項, 可以讓您
依照環境自行調整成長的方式。請在上述步驟
中, 按自動成長欄位內的 ... 鈕:
9
使用 SQL Server Management
Studio 管理工具建立資料庫
完成自動成長的設定後, 請按確定鈕回到新增
資料庫交談窗, 如下操作:
10
使用 SQL Server Management
Studio 管理工具建立資料庫
11
定序
當新增資料庫時, 若如下切換到選項頁面, 可以
看到一個名為定序的設定:
12
定序
定序是設定資料庫所要使用的字元集 (code
page) 以及字元資料排序的方式。
一開始安裝 SQL Server 時, 安裝程式便會依
據作業系統的區域設定, 選擇適當的定序, 例如
在台灣地區, SQL Server 預設的定序為
"Chinese_Taiwan_Stroke_CI_AS", 其中各項
目的說明如下:
13
定序
Chinese_Taiwan:表示台灣繁體中文。
Stroke:表示按照筆畫排序;若是 Bobomofo 則表
示按注音排序。
CI:表示 Case Insensitive, 與大小寫無關;CS 則
表示要區分大小寫。
AS:表示 Accent Sensitive, 要區分含重音節符號
的字元;AI 則表示不區分。
14
定序
從 SQL Server 2000 開始, 不僅伺服器本身,
就連資料庫、資料表的欄位 (限字串及
Unicode 字串類的資料型別) 都可以個別設定
定序。
不過, 除非有特殊需求, 例如想改用注音來排序、
要區分大小寫、欄位中有他國語言的資料...等
等, 否則建議保留預設的 <伺服器預設值> 設
定, 沿用SQL Server 的預設值就可以了。
15
6-2 用 CREATE DATABASE
敘述建立資料庫
用來建立資料庫的 SQL 敘述為 CREATE
DATABSE , 這個敘述用起來可說是收放自如,
我們馬上來小試身手一番。請如下操作:
16
用 CREATE DATABASE 敘
述建立資料庫
17
CREATE DATABASE 敘述完
整版
前面的示範是 CREATE DATABASE 敘述最簡
單的用法 ― 所有的設定皆使用預設值。
接著我們來看完整的 CREATE DATABASE 敘
述:
18
CREATE DATABASE 敘述完
整版
19
SQL 語法中的符號意義
在 SQL 語法中有的用中括號 [ ], 也有的用 < >
前後包夾, 它們分別代表了不同的意思, 底下我
們來說明各種符號代表的意義:
在 SQL 語法中, SQL 關鍵字我們一律用大寫字母
表示, 如 CREATE DATABASE;小寫字母的項目
則是要使用者代換為實際的值, 例如
database_name。
凡是可以省略的項目或參數, 就用 [ ] 括住, 例如
[PRIMARY]。
20
SQL 語法中的符號意義
如果有多個選項可以擇一使用, 則用 | 隔開, 例如
[arg1 | arg2], 表示可用 arg1 或 arg2, 但兩者不可
同時使用。
用 { } 括起來的則表示不可省略, 例如 {max_size |
UNLIMITED}。通常會與 | 符號搭配, 表示必須擇一
使用。
當某一項的內容太多, 需要另外說明的就以 < > 來
表示, 例如 < filespec > 與 < filegroup >, 而 ::= 後
的敘述即為該項目的語法。
項目後加上 [ ,...n ], 表示此項目可設定多個, 然後用
逗點做分隔, 例如 < filespec > [,...n] 表示
<filespec_1>, <filespec_2>, ...。
21
設定資料庫名稱
第一行的 CREATE DATABSE
database_name 在設定資料庫的名稱, 我們只
要將 database_name 換成實際的資料庫名稱
即可。
22
設定資料檔案 ― 資料庫的檔
案與檔案群組
ON 參數在設定資料庫所需的資料檔案, 在說
明其中的項目之前, 我們還是先對資料庫要使
用的檔案及檔案群組做個充分的了解。
檔案
之前提過, 在建立 SQL Server 的資料庫時, 需
為資料庫配置兩種檔案:資料檔案和記錄檔,
其中資料檔案又分為主資料檔和次資料檔。我
們現在就來弄清楚這 3 種檔案:
23
設定資料檔案 ― 資料庫的檔
案與檔案群組
24
設定資料檔案 ― 資料庫的檔
案與檔案群組
一個資料庫至少要包括一個主資料檔儲存資料,
以及一個記錄檔記錄異動資訊, 至於次資料檔
則不一定需要。
25
設定資料檔案 ― 資料庫的檔
案與檔案群組
另外, 上述那 3 種檔案的檔案名稱還有兩種表
達形式:
邏輯檔案名稱 (logical_file_name):SQL 敘述中要
參照某個檔案時所使用的名稱, 必須符合 SQL 識別
名稱的命名規則, 而且在資料庫中不可有重複的邏
輯檔案名稱出現。
實際檔案名稱 (os_file_name):檔案在作業系統
(如 Windows 98、NT、2000) 中的名稱, 必須符合
存放該檔案之作業系統的檔案命名規則。
26
設定資料檔案 ― 資料庫的檔
案與檔案群組
檔案規格設定參數
接著我們來看 CREATE DATABASE 敘述中用來設定
檔案規格的參數:
PRIMARY:指明其後所定義的檔案是主資料檔。若省略此
參數, 則第一個定義的檔案即為主資料檔。
NAME = logical_file_name:設定資料檔的邏輯檔案名稱。
FILENAME = 'os_file_name':設定資料檔在作業系統下的
存放路徑及實際檔案名稱, 存放路徑只要是在安裝 SQL
Server 的那部電腦上即可。例如:FILENAME = 'C:\DATA\
訂單資料檔_1.MDF'。
27
設定資料檔案 ― 資料庫的檔
案與檔案群組
SIZE = size:將 size 換成資料檔的起始大小, 可加
上單位, 包括 KB、MB (預設單位)、GB、TB。次
資料檔與紀錄檔的起始大小預設值為 1 MB。
MAXSIZE = max_size | UNLIMITED:若要設定檔
案的最大容量上限, 請將 max_size 換成實際的上
限值, 可加上單位, 包括 KB、MB (預設單位)、GB、
TB, 例如:MAXSIZE = 10 MB。若不想設定上限,
則可省略 MAXSIZE 參數, 或設定為 MAXSIZE =
UNLIMITED 。
28
設定資料檔案 ― 資料庫的檔
案與檔案群組
FILEGROWTH = grow_increment:當檔案容量不
足且尚未超過最大容量上限時, 檔案會自動成長, 此
參數即用來設定每次成長的數量。成長數量可用數
值或百分比來指定, 使用數值時, 可加上 KB、MB、
GB、TB 單位 (預設單位為 MB) 。若不想讓檔案自
動成長, 請設為 0。如果省略 FILEGROWTH 參數,
則資料檔預設會以 1 MB 成長, 而記錄檔預設以
10% 來成長。若此值小於 64 KB, 則會以 64 KB 來
成長。
29
設定資料檔案 ― 資料庫的檔
案與檔案群組
檔案群組 (filegroup)
當我們為資料庫設立多個資料檔案時, 可利用
檔案群組來加強資料的配置及存取效率。
例如一台主機中有 C、D、E 三台硬碟, 我們
可以建立一個檔案群組, 其中包含了 3 個資料
檔案, 這 3 個資料檔案分別存放在 3 台硬碟中,
由於 SQL Server 會自動將資料分散儲存在檔
案群組的各個檔案中, 因此可以有效地提升存
取效率 (因為 3 台硬碟可以同時運作)。
30
設定資料檔案 ― 資料庫的檔
案與檔案群組
SQL Server 的檔案群組可分為兩種:
主檔案群組:在建立資料庫時, SQL Server 會自動
產生主檔案群組, 名稱就叫 PRIMARY, 而主資料檔
則固定屬於主檔案群組, 不可更改。在為資料庫加
入其它的次資料檔時, 若未特別指定所屬的檔案群
組, 預設也會放入 PRIMARY 檔案群組中。
使用者自訂檔案群組:使用者自行建立的檔案群組,
稍後即會說明建立的方法。
31
設定資料檔案 ― 資料庫的檔
案與檔案群組
另外, 資料庫目前預設會使用的檔案群組稱為
預設檔案群組。
在建立新的資料庫物件 (如資料表、檢視表 ... )
時, 若未指定要放在哪一個檔案群組中, SQL
Server 就會做主將它們放到預設檔案群組裏。
SQL Server 預設會以 PRIMARY 檔案群組作
為預設檔案群組, 但我們可自行變更此設定。
32
設定資料檔案 ― 資料庫的檔
案與檔案群組
檔案群組的設定參數
在 CREATE DATABASE 敘述中, 可以利用
FILEGROUP 參數來建立使用者自訂檔案群組,
並指定要放入此檔案群組的次資料檔。例如:
33
設定資料檔案 ― 資料庫的檔
案與檔案群組
應用範例
底下我們舉幾個範例, 讓各位能夠確實了解檔
案及檔案群組設定參數的用法。
此例會建立產品資料庫, 並自己指定主資料檔的檔
案名稱及存放路徑 (其它參數皆使用預設值):
34
設定資料檔案 ― 資料庫的檔
案與檔案群組
此例會建立機密產品資料庫, 並自己指定主資料檔
的檔案規格, 包括檔案名稱、起始大小、最大容量
上限、以及每次檔案成長的數量:
35
設定資料檔案 ― 資料庫的檔
案與檔案群組
此例會建立銷售資料庫, 它總共包含 6 個資料檔案
和 3 個檔案群組:
36
設定資料檔案 ― 資料庫的檔
案與檔案群組
37
使用 SQL Server Management
Studio 管理工具建立檔案群組
若是使用 SQL Server Management Studio 管
理工具建立資料庫, 可用下面的方法新增檔案
群組:
38
使用 SQL Server Management
Studio 管理工具建立檔案群組
39
使用 SQL Server Management
Studio 管理工具建立檔案群組
40
設定交易記錄檔
如果希望自己指定交易記錄檔的檔案規格, 請
在 LOG ON 參數中設定, 設定的語法和資料檔
案是一樣的, 例如:
41
設定定序
利用 COLLATE 參數可為資料庫個別指定定序
(若省略此參數, 則資料庫會沿用 SQL Server
的定序設定), 例如:
42
設定定序
利用 COLLATE 參數設定定序比較辛苦, 因為
我們必須先去查閱定序的全名, 才能輸入。
SQL Server 2005 的定序分成兩大類:
Windows 定序和 SQL 定序, 後者是為了與舊
版的 SQL Server 相容而設的, 若沒有必要儘
量不用。
您可以執行如下的敘述, 列出所有的定序, 從中
查出您要使用的定序, 以便在 COLLATE 參數
中設定:
43
6-3 卸離與附加資料庫
為了避免 SQL Server 同時管理太多的資料庫,
耗用不必要的系統資源, 我們可以將暫時用不
著的資料庫從 SQL Server 中卸離, 即取消
SQL Server 與資料庫各個實體檔案的關係, 這
樣一來, SQL Server 可以稍微輕鬆一點兒。
如果後來要再使用到已卸離的資料庫, 沒關係,
只要再將該資料庫附加到 SQL Server 中就可
以了。
44
卸離資料庫
在 SQL Server Management Studio 管理工具
中若要卸離某資料庫, 方法很簡單, 之前我們建
立了不少資料庫, 就拿其中一個來示範吧:
45
卸離資料庫
現在您應該看不到剛才卸離的資料庫了。
46
卸離資料庫
另外, 我們還可以按下 SQL Server
Management Studio 視窗上的新增查詢
鈕
, 執行 sp_detach_db 預存程
序來卸離資料庫, 例如:
47
無法卸離資料庫
若資料庫還有使用者在連線使用中的話, 該資
料庫是無法卸離的:
48
無法卸離資料庫
此時如果您按下確定鈕, 會得到下面錯誤訊息:
49
無法卸離資料庫
您可以選擇過些時間, 等沒有人使用這個資料庫
後, 再進行卸離的動作。如果您沒有辦法等, 需要
立即執行卸離, 則可如下勾選卸除連接選項, 即可
中斷此資料庫目前所有連線:
50
附加資料庫
如果後來要將已經卸離的資料庫重新附加到
SQL Server, 或者想要將書附光碟的資料庫檔
案載入 SQL Server, 都可以如下操作 (假設我
們之前已將訂單資料庫卸離, 現在要將它附加
回來):
51
附加資料庫
52
附加資料庫
53
附加資料庫
54
附加資料庫
因主資料檔內存放了其它檔案的相關資訊, 所
以指明主資料檔後, 其它檔案的所在位置也就
知道了。
不過, 若在卸載資料庫後, 這些檔案曾經搬移或
重新命名過, 那麼就需要自己去修改目前的檔
案路徑, 否則可能會發生找不到檔案的錯誤。
55
附加資料庫
利用 CREATE DATEBASE 敘述中的 FOR
ATTACH 參數也可以將資料庫重新附加到
SQL Server 中:
56
附加資料庫
另外, 我們也可以用 sp_attach_db 預存程序來
附加資料庫, 其語法如下:
57
附加資料庫
同樣的, 只需指明主資料檔的路徑以及其他有
更動過位置的檔案路徑即可。
但 sp_attach_db 中最多只能列出 16 個檔案,
若您要列出的檔案超過 16 個, 請改用
CREATE DATABASE 的 FOR ATTACH 參數。
58
6-4 使用 SQL Server Management
Studio 管理工具修改資料庫設定
資料庫建好之後, 若覺得當初的設定不妥或設
立的資料檔案不夠用 ... 等, 我們都可以事後來
更改。利用 SQL Server Management Studio
管理工具修改資料庫的檔案及屬性設定。
開啟資料庫的屬性交談窗
一般頁面
檔案頁面
檔案群組頁面
選項頁面
權限頁面
59
開啟資料庫的屬性交談窗
若要使用 SQL Server Management Studio 管
理工具修改資料庫的屬性設定或檔案, 只要如
下打開資料庫的屬性交談窗即可:
60
開啟資料庫的屬性交談窗
61
一般頁面
一般頁面是純粹做觀賞用的, 在此頁次您可以
檢視資料庫的名稱、一般資訊, 以及使用的定
序 ... 等等:
62
一般頁面
63
檔案頁面
在檔案頁面可修改並新增資料庫的資料檔案與
記錄檔:
64
檔案群組頁面
在檔案群組頁面可指定預設檔案群組、以及調
整現有檔案群組的屬性:
65
檔
案
群
組
頁
面
66
選項頁面
選項頁面是一些比較進階的資料庫屬性設定,
這裏僅做簡介, 若看不懂可先略過:
67
選項頁面
68
選項頁面
定序
定序項目可以設定資料庫的字元集 (code
page) 以及字元資料排序方式。
復原模式
此項目指定資料庫的復原模式, 復原模式可決
定如何備份資料, 以及損失資料的風險。有下
列 3 種復原模式可選擇:
69
選項頁面
完整:此模式會備份所有執行過的交易命令, 所以
只要適度搭配資料庫完整備份與交易記錄備份, 就
可以讓資料庫復原到任何時間點。
簡單:簡單模式下一旦確認交易正確寫入後, 便會
清除交易的記錄。所以使用此模式的資料庫只能做
完整備份與差異式備份, 無法做交易記錄備份。
大量記錄:與完整模式類似, 但是大量匯入的交易
不會被記錄下來。所以這個模式下如果交易記錄備
份中有大量匯入的動作時, 還原時便無法還原到任
意時間點。
70
選項頁面
相容性層級
相容性可以設定資料庫與 SQL Server 各版本
的相容性。如果您的資料庫只會在 SQL
Server 2005 中使用, 選擇 SQL Server 2005
(90) 即可;若資料庫需要在其他版本中使用,
則依照版本選擇其他層級。
其他選項
其他重要選項的說明如下:
71
選項頁面
其他選項
其他重要選項的說明如下:
72
權限頁面
此頁面可以設定使用者對資料庫的權限:
73
權
限
頁
面
74
6-5 用 ALTER DATABASE
敘述修改資料庫
T-SQL 用來修改資料庫屬性及檔案設定的敘述
為 ALTER DATABASE 敘述, 其完整語法如
下:
75
用 ALTER DATABASE 敘述
修改資料庫
76
用 ALTER DATABASE 敘述
修改資料庫
ALTER DATABASE 敘述看起來洋洋灑灑一大
串, 但實際用起來不會這麼嚇人, 因為 ALTER
DATABASE 敘述一次只能修改一件事。
底下我們來看它的參數。
77
參數說明
ALTER DATABASE database:指定欲修改的
資料庫, 請將 database 換成要修改的資料庫
名稱。
ADD FILE < filespec > [ ,...n ] [ TO
FILEGROUP filegroup_name ]
ADD FILE 參數可以為資料庫新增資料檔案,
檔案規格 < filespec > 的語法如下 (由於內容
和在 CREATE DATABASE 敘述中建立資料檔
一樣, 所以此處不再重複說明):
78
參數說明
若不要讓新增的資料檔案放在預設檔案群組中,
則可加上 TO FILEGROUP 參數另外指定檔案
群組, 將 filegroup_name 換成實際的檔案群組
名稱即可。
79
參數說明
ADD LOG FILE < filespec > [ ,...n ]:為資料
庫新增記錄檔, 請將 < filespec > 換成實際的
檔案規格。
REMOVE FILE logical_file_name:刪除資料
庫的資料檔案或記錄檔, 請將
logical_file_name 換成欲刪除的邏輯檔案名稱。
刪除檔案有個先決條件, 即檔案內不能包含任
何資料, 否則無法刪除。
80
參數說明
ADD FILEGROUP fi legroup_name:為資料
庫新增自訂的檔案群組, 請將filegroup_name
換成實際的檔案群組名稱。
REMOVE FILEGROUP filegroup_name:刪
除資料庫現有的自訂檔案群組, 請將
filegroup_name 換成欲刪除的檔案群組名稱。
刪除檔案群組的先決條件是, 該檔案群組內不
能包含任何檔案, 否則無法刪除。
81
參數說明
MODIFY FILE < filespec >:修改資料庫檔案
(資料檔案或記錄檔) 的屬性設定, 例如 NAME、
SIZE、MAXSIZE ... 等, 但一次只能更改一項。
其 < filespec > 的內容如下:
82
列示資料庫現有的檔案及屬性:
sp_helpfile
在修改資料庫的檔案屬性之前, 您可能想先查
看資料庫目前有哪些檔案及屬性, 這時可利用
預存程序 sp_helpfile 來查詢, 其語法如下:
執行前, 記得先在工具列將目前使用的資料庫
切換為檔案所在的資料庫:
83
列示資料庫現有的檔案及屬性:
sp_helpfile
84
參數說明
MODIFY NAME = new_dbname:修改資料庫
的名稱。在修改某資料庫的名稱之前, 您必須
確定目前除了您之外, 沒有其它任何人在使用
該資料庫, 否則會失敗。下面為使用範例:
85
更改資料庫名稱:sp_renamedb
我們也可以用預存程序 sp_renamedb 來更改
資料庫名稱, 其語法如下:
86
參數說明
MODIFY FILEGROUP fi legroup_name
{filegroup_property | NAME
=new_filegroup_name}:修改檔案群組的屬性
或名稱, 一次只能更改一種。
檔案群組可設定的屬性如下:
87
參數說明
例如, 假設銷售資料庫有 3 個檔案群組:
PRIMARY (目前為預設檔案群組)、銷售資料
庫檔案群_1、銷售資料庫檔案群_2, 現要將銷
售資料庫檔案群_2 設為預設檔案群組:
88
列示資料庫現有的檔案群組:
sp _helpfilegroup
我們可利用預存程序 sp_helpfilegroup 來查詢
資料庫目前有哪些檔案群組, 其語法如下:
執行方式和 sp_helpfile 相同, 但請記得, 要先
在工具列將目前使用的資料庫切換為檔案所在
的資料庫。
89
參數說明
SET < optionspec > [ ,...n ] [ WITH < termination > ]:
變更資料庫的選項設定, 其功用和 6-4 節介紹的
選項頁面相同。< optionspec > 的語法如下:
90
參數說明
91
參數說明
92
參數說明
轉換資料庫的狀態時 (即變更 state_option),
可加上 WITH < termination > 參數, 其用意是
指定當轉換的動作無法完成時, 要何時復原 (即
取消轉換動作)。<termination > 的語法如下:
COLLATE < collation_name >:變更資料庫的
定序名稱。變更時, 您必須確定目前沒有其它
人在使用該資料庫。
93
應用範例
讓我們來看個 ALTER DATABASE 敘述的應用
範例。假設我們要為銷售資料庫新增 1 個記錄
檔銷售日誌_2:
94
6-6 刪除資料庫
當不再需要某個資料庫的時候, 我們可以將它
刪除。
使用 SQL Server Management Studio 管理工具刪
除資料庫
刪除資料庫 DROP DATABASE 敘述
95
使用 SQL Server Management
Studio 管理工具刪除資料庫
使用 SQL Server Management Studio 管理工
具刪除資料庫真是再簡單也不過了, 您只要在
物件總管窗格中選取欲刪除的資料庫, 然後如
下操作:(如下頁)
還有另一種方法是先使用滑鼠選取要刪除的資
料庫, 然後再按下鍵盤上的 Delete 鍵即可。
96
使用 SQL Server Management
Studio 管理工具刪除資料庫
97
使用 SQL Server Management
Studio 管理工具刪除資料庫
98
刪除資料庫
DROP DATABASE 敘述
在 T-SQL 中用來刪除資料庫的敘述是 DROP
DATABASE 敘述, 其語法如下:
您必須確定欲刪除的資料庫不在使用中, 否則無
法刪除。另外要提醒的是, 利用 DROP
DATABASE 敘述刪除資料庫不會出現確認訊息,
請小心使用。
99
列出 SQL Server 現有的資料庫:
sp_helpdb
如果您想知道目前 SQL Server 中有哪些資料
庫, 可以執行 sp_helpdb 預存程序來查詢:
100
列出 SQL Server 現有的資料庫:
sp_helpdb
101