數據庫的創建、修改和刪除
導讀:數據庫是企業管理數據信息的一種手段,保護好自己的信息,以防被對手知道。數據庫的出現,也大大簡便了工作人員的工作,工作人員用數據庫可以很輕松的將數據保存而且方便下次查找,下面為大家重點介紹一下數據庫的創建、修改和刪除。
一、創建數據庫
創建數據庫需要一定的許可,在默認情況下,只有系統管理員和數據庫擁有者可以創建數據庫。當然,也可以授權其他用戶這種許可。數據庫被創建后,創建數據庫的用戶自動成為該數據庫的所有者。
每個數據庫都由以下幾個部分的數據庫對象所組成:關系圖、表、視圖、存儲過程、用戶、角色、規則、默認、用戶自定義數據類型和用戶自定義函數。SQLServer使用這樣一個公共模板來創建數據庫,每個服務器中最多可以創建32767個數據庫。
創建數據庫的過程實際上就是為數據庫設計名稱、設計所占用的存儲空間和存放文件位置的過程。數據庫的基本信息存儲在Master數據庫中的sysdatabases系統表中,因而可以使用SELECT語句來查詢數據庫信息。
創建數據庫的方法有以下三種:使用向導創建數據庫、使用企業管理器(Enterprise Manager)創建數據庫和使用Transact-SQL語句創建數據庫。
(a)使用向導
(b)使用企業管理器
(c)使用Transact-SQL語句
使用CREATE DATABASE命令來創建數據庫的語法如下:
CREATE DATABASE database_name
[ON [PRIMARY] [<filespec>[,..n] [,<filegroupspec> [,..n] ] ]
[LOG ON {<filespec>[,..n]} ]
[FOR RESTORE]
<filespec>::= ([NAME=logicol_file_name,]
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size | UNLIMITED}]
[,FILEGROWTH=growth_increment] ) [,..n]
<filegroupspec>::=FILEGROUP filegroup_name <filespec> [,..n]
各參數說明如下:
database_name:數據庫的名稱,最長為128個字符;單個SQL Server系統可以管理的數據庫最多為32767個。
PRIMARY:該選項是一個關鍵字,指定主文件組中的文件。主文件組不僅包含數據庫系統表中的全部內容,而且還包含用戶文件組中沒有包含的全部對象。一個數據庫只能有一個主文件,默認情況下,如果不指定時,則在命令中列出的***個文件將被默認為主文件。
LOG ON:指明事務日志文件的明確定義。如果沒有時,則系統會自動產生一個文件名前綴與數據庫名相同,容量為所有數據庫文件大小1/4的事務日志文件。
NAME:指定數據庫的邏輯名稱,這是在SQL Server系統中使用的名稱,是數據庫在SQL Server中的標識符。
FILENAME:指定數據庫所在文件的操作系統文件名稱和路徑,該操作系統文件名和NAME的邏輯名稱一一對應。
SIZE:指定數據庫的初始容量大小。若沒有指定主文件的大小,則SQL Server默認其與模板數據庫中的主文件大小一致,其他數據庫文件和事務日志文件則默認為1MB。指定大小的數字可以使用KB、MB、GB和TB為后綴,默認為MB。不能使用小數,最小值為512KB,默認為1MB。主文件的size不能小于模板數據庫中的主文件。
MAXSIZE:指定操作系統文件可以增長到的***尺寸。沒有指定時,則文件可以不斷增長,直至充滿磁盤。
FILEGROWTH:指定文件每次增加容量的大小,當指定為0時,表示文件不增加。增加量可以確定為以KB、MB作后綴的字節數或以%作后綴的被增加容量文件的百分比來表示。默認后綴為MB。如果沒有指定時,則默認值為10%,每次擴容的最小值為64KB。
使用CREATE DATABASE命令創建數據庫的過程中,SQLServer用模板數據庫來初始化新建的數據庫。在模板數據庫中的所有用戶定義的對象和數據庫的設置都會被復制到新數據庫中。理想的情況下,只有有限的用戶被授權可創建數據庫。系統安裝后,只有系統管理員有這個特權,系統管理員可以通過GRANT CREATE DATABASE語句將這個特權授予其他用戶。數據庫的創建者被默認為數據庫的所有者,可以通過系統存儲過程sp_changedbowner來更改數據庫所有者。
例:創建了一個Company數據庫,該數據庫的主數據文件邏輯名稱為Company_data,物理名稱為Company.mdb,初始大小為10MB,***尺寸為無限,增長速度為10%;數據庫的日志文件邏輯名稱為Company_log,物理文件名為Company.ldf,初始大小為1MB,***尺寸為5MB,增長速度為1MB。
程序如下:
create database company on primary
(name=company_data,filename='d:\mssql7\data\company.mdf',
size=10,
maxsize=unlimited,
filegrowth=10%)
log on
(name=company_log,
filename='d:\mssql7\data\company.ldf',
size=1,
maxsize=5,
filegrowth=1)
輸出為:
The CREATE DATABASE process is allocating 10.00 MB on disk 'company_data'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'company_log'.
例:創建一個指定多個數據文件和日志文件的數據庫。該數據庫名稱為employees,有1個10MB和1個20MB的數據文件和2個10MB的事務日志文件。數據文件邏輯名稱為employee1和employee2,物理文件名為employee1.mdf和employee2.mdf。主文件是employee1,由primary指定,兩個數據文件的***尺寸分別為無限大和100MB,增長速度分別為10%和1MB。事務日志文件的邏輯名為employeelog1和employeelog2,物理文件名為employeelog1.ldf和employeelog2.ldf,***尺寸均為50MB,文件增長速度為1MB。
程序如下:
create database employees on primary
(name=employee1,
filename='d:\mssql7\data\employee1.mdf',
size=10,
maxsize=unlimited,
filegrowth=10%),
(name=employee2,
filename='d:\mssql7\data\employee2.mdf',
size=20,
maxsize=100,
filegrowth=1)
log on
(name=employeelog1,
filename='d:\mssql7\data\employeelog1.ldf',
size=10,
maxsize=50,
filegrowth=1),
(name=employeelog2,
filename='d:\mssql7\data\employeelog2.ldf',
size=10,
maxsize=50,
filegrowth=1)
輸出結果為:
The CREATE DATABASE process is allocating 10.00 MB on disk 'employee1'.
The CREATE DATABASE process is allocating 20.00 MB on disk 'employee2'.
The CREATE DATABASE process is allocating 10.00 MB on disk 'employeelog1'.
The CREATE DATABASE process is allocating 10.00 MB on disk 'employeelog2'.
#p#
二、修改數據庫
數據庫創建以后,可以在企業管理器中利用數據庫的屬性設置,來更改創建時的某些設置和創建時無法設置的屬性。也可以用ALTER DATABASE語句來修改數據庫。
(a)利用企業管理器修改數據庫
在企業管理器中,右擊所要修改的數據庫,從彈出的快捷菜單中選擇“屬性”選項,出現如圖所示的數據庫屬性設置對話框。各頁面內容如下:
常規頁框中,可以看到數據庫的狀態、所有者、創建日期、大小、可用空間、備份和維護等信息。
數據文件和事務日志兩個頁框中,可以看到類似于創建數據庫時的對話框,此時可以象在創建數據庫時那樣重新指定數據庫文件和事務文件的名稱、存儲位置、初始容量大小等屬性。
文件組頁框中,可以添加或刪除文件組,但是如果文件組中的文件不為空時,則不能被刪除,必須先將文件移出文件組后再刪除。
選項頁框中,可以設置數據庫的很多屬性,如訪問、故障還原、兼容性等。其中限制訪問屬性中的“db_owner,dbcreator或sysadmin的成員”選項表示只有數據庫的所有者、數據庫創建者和系統管理員才有權使用數據庫。“單用戶”表示數據庫在同一時間只能供一個用戶使用。其中的各項說明如下:
ANSI NULL默認設置:允許在數據庫表中的每一列缺省值為空值。
遞歸觸發器:控制是否允許在觸發器中啟動其他觸發器。
自動更新統計信息:任何***化查詢所需的統計數據過期后,會在***化時自動更新。
殘缺頁檢測:允許自動檢測有損壞的分頁。頁是數據庫內容的基本存儲單位,每個頁的大小為8KB。由于SQL Server對頁的讀寫單位是大小為512字節的扇區,當每個頁的***個扇區被成功寫入后,系統認為此頁已成功寫入。但若寫完***個扇區后發生突發事件,產生有損壞的頁,則需要通知備份來恢復數據庫。
自動關閉:當數據庫中無用戶使用時,自動關閉該數據庫,并將所占用的資源交還給操作系統。對那些不間斷使用的數據庫不要使用此選項,否則增加系統的開銷。
自動收縮:允許定期對數據庫進行檢查,當數據庫文件或日志文件中未用空間超過其大小的25%時,系統將會自動縮減文件的大小,使其未用空間等于25%。當文件大小沒有超過其建立時的初始大小時,不會縮減文件。縮減后的文件不小于初始值。
自動創建統計信息:任何***化查詢所需的統計數據丟失后,會在***化時自動重新建立。
使用被引用的標識符:使用的標識符必須用雙引號括起來,單引號中的文字表示字符串。
權限頁框中,可以設置用戶對該數據庫的使用權限,有關的權限設置將在后面的單節中詳細介紹。
(b)使用語句ALTER DATABASE修改數據庫
ALTER DATABASE語句可以增加和刪除數據庫中的文件,也可以修改數據庫文件的屬性。但必須注意,只有數據庫管理員或具有CREATE DATABASE權限的數據庫所有者才有權執行該語句。語法形式如下:
ALTER DATABASE databasename
{ add file <filespec>[,..n] [to filegroup filegroupname]
| add log file <filespec>[,..n]
| remove file logical_file_name [with delete]
| modify file <filespec>
| modify name=new_databasename
| add filegroup filegroup_name
| remove filegroup filegroup_name
| modify filegroup filegroup_name
{filegroup_property | name=new_filegroup_name}
}
這個語句允許創建和修改數據庫文件、事務日志文件和文件組。三個子句add file,remove file和modify file分別指定創建、刪除和修改已有的文件。此外,也可以使用to filegroup選擇項把新文件賦給已有的文件組。add filegroup子句創建新的文件組,而remove filegroup從系統中刪除文件組。add log file子句創建新的事務日志并將其添加到已有的數據庫事務日志中。Filespec,..n表示文件說明,它包含像文件邏輯名和物理名這樣的進一步選擇項。
例:為sales數據庫新增一個邏輯名為“saledata2”的數據文件,其大小及其***值分別為10MB和50MB。輸入的SQL語句和執行結果如下:
Alter Database sales
ADD FILE(
NAME=saledata2,
FILENAME='d:\mssql7\data\saledata2.mdf',沈陽數據恢復,
Size=10MB,
Maxsize=50MB,
Filegrowth=5MB
)
例:將一個包含兩個數據文件的文件組和一個事務日志文件添加到employees數據庫中。
程序清單如下:
Alter database employees
Add filegroup data1
Alter database employees
add file
(name=employee3,
filename='d:\mssql7\data\employee3.ndf',
size=1,
maxsize=50,
filegrowth=1),
(name=employee4,
filename='d:\mssql7\data\employee4.ndf',
size=2,
maxsize=50,
filegrowth=10%)
to filegroup data1
Alter database employees
add log file
(name=employeelog3,
filename='d:\mssql7\data\employeelog3.ldf',
size=1,
maxsize=50,
filegrowth=1)
輸出結果為:
Extending database by 1.00 MB on disk 'employee3'.
Extending database by 2.00 MB on disk 'employee4'.
Extending database by 1.00 MB on disk 'employeelog3'.
三、刪除數據庫
對于不再需要的數據庫,可以刪除它,釋放其在磁盤上所占用的空間。刪除數據庫有兩種方式,即使用企業管理器和使用Drop語句。
(a)利用企業管理器刪除數據庫
在企業管理器中,右擊所要刪除的數據庫,從彈出的快捷菜單中選擇“刪除”或直接按下鍵盤上的Delete按鈕即可刪除數據庫,也可以選擇數據庫文件夾或圖標后單擊工具欄中的圖標來刪除數據庫。
刪除數據庫時一定要慎重,因為系統無法輕易恢復被刪除的數據,除非做過數據庫的備份。每次只能刪除一個數據庫。
(b)利用Drop語句刪除數據庫
Drop語句可以從SQL Server中一次刪除一個或多個數據庫。語法如下:
DROP DATABASE database_name[,..n]
例:刪除創建的數據庫Company
輸出結果為:
Deleting database file 'd:\mssql7\data\company.ldf'.
Deleting database file 'd:\mssql7\data\company.mdf'.
并不是所有的數據庫在任何時候都是可以被刪除,只有處于正常狀態下的數據庫,才能使用Drop語句刪除。當數據庫處于以下狀態時不能被刪除:數據庫正在使用;數據庫正在恢復;數據庫包含用于復制的已經出版的對象。
以上就是我要為大家介紹的有關數據庫的創建、修改和刪除的全部內容,希望能對大家學習數據庫有用。
【編輯推薦】