第二部分:數據庫管理
單詞記憶: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)’,
??Size=n,
??MaxSize=n,
??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 ',
??? size = 5,
??? maxsize = 100,
??? filegrowth = 30%
),
filegroup G_Change
(
??? name = 'T607_n2dat',
??? filename = 'd:" T607_N2.ndf ',
??? size = 5,
??? maxsize = 100,
??? filegrowth = 30%
),
filegroup G_Index
(
??? name = 'T607_n3dat',
??? filename = 'd:" T607_N3.ndf ',
??? size = 5,
??? maxsize = 100,
??? filegrowth = 30%
),
filegroup G_Big
(
??? name = 'T607_n4dat',
??? filename = 'd:" T607_N4.ndf ',
??? size = 5,
??? maxsize = 100,
??? filegrowth = 30%
)
log on
(
??? name = 'T607_log1',
??? filename = 'd:" T607_L1.ldf ',
??? size = 5,
??? maxsize = 100,
??? filegrowth = 50%
),
(
??? name = 'T607_log2',
??? filename = 'd:" T607_L2.ldf ',
??? size = 5,
??? maxsize = 100,
??? filegrowth = 50%
)
?
二、數據庫狀態屬性修改練習
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”
alter database [T607_2006]
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”文件;
alter database [T607-2006]
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,如需轉載請自行聯系原作者