第二部分:資料庫管理
單詞記憶:transact:處理
create:建立
execute:執行、完成
一、 SQL Server的特性
1、 安裝簡便:為了便于安裝、使用和管理,SQL Server2000提供了一組管理和開發工具。
2、 伸縮性和有效性
3、 支援客戶/伺服器模式(C/S)
4、 多協定相容性
5、 資料倉庫
6、 遵從ANSI/ISO SQL-92标準:Micrsoft 還對其進行了語言擴充并命名為:“Transact-SQL”
7、 支援資料複制
8、 全文檢索
9、 聯機叢書
二、T-SQL簡介
Transact-SQL(或稱為T-SQL)是Micosoft的一個程式擴充集合。T-SQL為SQL增加了些功能,包括事務控制、異常錯誤處理和行處理。
Transact- SQL允許使用者在Transact- SQL對象中聲明和使用局部變量和常量,并且有資料類型。
三、SQL Server存儲體系構成
Ø 資料檔案
字尾為.MDF 檔案
–主資料檔案,一個資料庫隻有一個 MDF檔案,存放資料庫中各種資料實體的定義(資料字典),也可以存放其他資料,但要注意控制其大小。
字尾為.NDF檔案
–擴充資料檔案,一個資料庫可以有多個NDF檔案,存放各種資料
1. 資料規劃(組)
2. 資料擴充
3. 檔案仿真陣列
Ø 日志檔案
字尾為.LDF檔案
–日志檔案,一個資料庫可以有多個LDF檔案,存放聯機重做日志資料
• 注意:如果日志檔案已經填滿,SQL Server将自動停止運作并等待人工幹預,是以要經常監控日志的情況保證系統的穩定運作。
Ø 檔案組
FileGroup
–将MDF和NDF檔案在邏輯上進行分組,進行表規劃時候,隻需要指定表所需存放的組,就可以實作資料分離。
注意:系統預設的組為“PRIMARY”,不指定資料檔案所隸屬的組,則資料檔案自動劃分到“PRIMARY”組中;建立的表不指定所在的組,系統也自動配置設定該表到“PRIMARY”組中。
四、資料庫的建立
示例:
Create Database 資料庫名
On
(Name=‘邏輯名‘,
FileName=‘實體檔案完全路徑(*.mdf)’,
Size=n,
MaxSize=n,
FileGrowth=n)
FileGroup 組名字
(…….)
Log On
(Name=‘邏輯名‘,
FileName=‘實體檔案完全路徑(*.ldf)’,
FileGroup=n)
五、建立過程中需要注意的問題:
Ø 隻能為一個資料庫建立一個MDF檔案;
Ø 如果需要進行檔案分組,隻需要在檔案前加上FILEGROUP組名就可以了,但PRIMARY組中至少必須包含一個檔案;
Ø 如果Size和Max Size不指定機關,系統預設用“M”為機關;
Ø 如果不指定資料庫檔案的大小,系統預設為“1M”;
Ø 如果建立時沒有使用Log On字句,系統自動建立一個LDF檔案,大小為MDF檔案的1/4;
Ø 檔案的增長率FILEGROWTH應該根據實際需要設定大些,以保證系統不會頻繁擴容。
六、資料庫性能選項配置
Ø 選項設定
Exec Sp_Dboption ‘資料庫名’,‘選項‘,’值’
如:Exec Sp_Dboption ‘Pubs’,’AutoClose’,’False’
Ø 查詢所有可用選項
Exec Sp_Dboption
Ø 查詢資料庫已經開啟的選項
Exec Sp_Dboption ‘資料庫名’
如:Exec Sp_Dboption ‘Pubs’
七、資料庫的調整
1、設定資料庫隻讀取
Exec Sp_dboption ‘Pubs’,’Read_Only’,’True’
2、設定資料庫離線
Exec Sp_dboption ‘Pubs’,’Offline’,’True’
3、資料庫更名(Sp_RenameDb)
Exec Sp_dboption ‘Pubs’,’Single User’,’True’
Exec Sp_RenameDb ‘Pubs’,’Pubs_1’
Exec Sp_dboption ‘Pubs_1’,’Single User’,’False’
八、資料庫結構調整
1、調整資料庫結構
Alter Database 資料庫名
• Add File (檔案參數) To FileGroup 檔案組
• Add Log File (檔案參數)
• Remove File ‘邏輯資料庫檔案名字’
• Remove FileGroup ‘組名’
• Add FileGroup ‘組名’
• Modify File (檔案參數)
注意:
1、ADD FILE時如果不指定“TO FileGroup 檔案組”,系統自動将該檔案歸到“Primary”組中;
2、REMOVE FILEGROUP時,如果組中有資料,将無法删除。
九、資料規劃的實作
表的資料規劃的實作
Create Table Student
(Stu_Code Varchar(10) Primary Key
On G_Index,
Stu_Name Varchar(10) Not Null,
Stu_Sex Varchar(1) Not Null,
Stu_Pic Image)
On G_Normal
TextImage_On G_Big
規化重點:
1、将大資料(G_Big)和正常資料(G_Normal)分離;
2、将索引資料(G_Index)和表資料分離;
第二部分習題樣例
一、建立本班資料庫(T607),根據規劃原則将四大類資料分組,每組一個資料檔案5-100M,按30%增長,日志檔案2個,5-100M,按50%增長。
create database T607
on primary
(
name = 'T607_mdat',
filename = 'd:" T607_M.mdf ',
size = 5,
maxsize = 100,
filegrowth = 30%
),
filegroup G_Normal
name = 'T607_n1dat',
filename = 'd:" T607_N1.ndf ',
filegroup G_Change
name = 'T607_n2dat',
filename = 'd:" T607_N2.ndf ',
filegroup G_Index
name = 'T607_n3dat',
filename = 'd:" T607_N3.ndf ',
filegroup G_Big
name = 'T607_n4dat',
filename = 'd:" T607_N4.ndf ',
)
log on
name = 'T607_log1',
filename = 'd:" T607_L1.ldf ',
filegrowth = 50%
name = 'T607_log2',
filename = 'd:" T607_L2.ldf ',
二、資料庫狀态屬性修改練習
1、 将建立好的資料庫設定成自動“檔案自動關閉”和自動“檔案自動收縮”方式
檔案自動關閉:exec Sp_dboption ' T607',' autoclose ',' true '
檔案自動收縮:exec Sp_dboption ' T607',' autoshrink ',' true '
2、 将建立好的資料庫設定成“隻讀方式”
exec Sp_dboption ' T607',' read only ',' true '
3、 将建立好的資料庫設定成“離線狀态”後恢複
exec sp_dboption ' T607',' offline ',' true '
4、 将建立好的資料庫名稱改名為“T607-2006”
exec sp_dboption ' T607',' single user ',' true '
exec sp_renameDb ' T607',' T607_2006 '
exec sp_dboption ' T607-2006 ',' single user ',' false '
注意事項:首先必須把隻讀屬性取消
三、修改資料庫檔案屬性
将資料庫中的一個資料檔案屬性修改為10—無限大,增長比率為40%;
alter database [T607_2006]
modify file
name = T607_n1dat,
size = 10,
maxsize = unlimited,
filegrowth = 40%
注意事項:修改時,請勿指定實體名稱。
四、收縮資料庫檔案
将資料庫中的一個檔案收縮到3M;
dbcc shrinkfile(‘ T607_n2dat ‘, 3)
注意事項:必須先use T607_2006才能收縮
五、組的建立和維護
在資料庫中建立一個新的組“G_TEST”
add filegroup G_TEST
六、組中增加一個檔案
在資料庫中增加一個新的檔案“T607_TEST.ndf”,并自動加入到“G_TEST”組中;
alter database [T607-2006]
add file
name = 'T607_TEST',
filename = 'd:" T607_TEST.ndf'
to filegroup G_ TEST
七、向資料庫中增加日志檔案
在資料庫中增加一個新的日志檔案“T607_LOG_TEST”檔案;
add log file
name = 'T607_LOG_TEST',
filename = 'd:" T607_LOG_TEST.log'
八、資料庫的規劃方式
建立一個學生資料表,包含字段:
學生編碼、
學生名稱不允許重複
學生性别、
學生年齡 15—30、
學生生日、
學生位址、
學生國籍、
學生備注大量文本、
學生照片 JPG
根據表規劃及優化原則,建立該表:
create table 學生
學生編碼 smallint,
學生名稱 varchar(10) unique,
學生性别 nvarchar(1),
學生年齡 tinyint check(學生年齡>=15 and 學生年齡<=30),
學生生日 datetime,
學生位址 nvarchar(20),
學生國籍 varchar(10),
學生備注 text,
學生照片 image
on group1
textimage_on group2
九、删除資料庫
删除本練習中建立的資料庫
drop database T607-2006
本文轉自溫景良部落格園部落格,原文連結:http://www.cnblogs.com/wenjl520/archive/2008/11/01/1324393.html,如需轉載請自行聯系原作者