




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、車 蕾 北京信息科技大學(xué)信息管理學(xué)院第第5 5章章 表的創(chuàng)建與管理表的創(chuàng)建與管理主要內(nèi)容主要內(nèi)容25.1 表的概述表的概述5.2 創(chuàng)建表創(chuàng)建表5.3 管理表管理表5.4 數(shù)據(jù)完整性約束的創(chuàng)建和管理數(shù)據(jù)完整性約束的創(chuàng)建和管理5.7 索引索引5.1 表的概述表的概述SQL Server中的表分為三類:中的表分為三類: 系統(tǒng)表系統(tǒng)表 用戶自定義表用戶自定義表 臨時(shí)表臨時(shí)表 3系統(tǒng)表系統(tǒng)表系統(tǒng)表是系統(tǒng)表是SQL Server數(shù)據(jù)庫引擎使用的表數(shù)據(jù)庫引擎使用的表。系統(tǒng)表中存儲(chǔ)了定義服務(wù)器配置及其所有系統(tǒng)表中存儲(chǔ)了定義服務(wù)器配置及其所有表的數(shù)據(jù)。表的數(shù)據(jù)。系統(tǒng)表的格式取決于系統(tǒng)表的格式取決于SQL Ser
2、ver內(nèi)部體系內(nèi)部體系結(jié)構(gòu)的要求。結(jié)構(gòu)的要求。系統(tǒng)表不允許用戶進(jìn)行修改的,但會(huì)隨著系統(tǒng)表不允許用戶進(jìn)行修改的,但會(huì)隨著SQL Server版本的不同而不同。版本的不同而不同。4用戶自定義表用戶自定義表用戶自定義表是指用戶創(chuàng)建的表,用戶自用戶自定義表是指用戶創(chuàng)建的表,用戶自定義表是定義表是SQL Server中最常見的表。中最常見的表。通常,該類表中的字段包含了用戶所需的通常,該類表中的字段包含了用戶所需的數(shù)據(jù)格式,而表中記錄的是用戶的數(shù)據(jù)。數(shù)據(jù)格式,而表中記錄的是用戶的數(shù)據(jù)。用戶可以根據(jù)所擁有的權(quán)限創(chuàng)建、修改和用戶可以根據(jù)所擁有的權(quán)限創(chuàng)建、修改和刪除用戶自定義表。刪除用戶自定義表。5臨時(shí)表臨時(shí)
3、表臨時(shí)表存儲(chǔ)在臨時(shí)表存儲(chǔ)在tempdb中,而不是存儲(chǔ)在中,而不是存儲(chǔ)在用戶的數(shù)據(jù)庫中。用戶的數(shù)據(jù)庫中。與用戶自定義表不同的是,臨時(shí)表會(huì)在用與用戶自定義表不同的是,臨時(shí)表會(huì)在用戶不再使用時(shí),自動(dòng)被戶不再使用時(shí),自動(dòng)被SQL Server刪除刪除。在在SQL Server 2008中,臨時(shí)表有兩種類中,臨時(shí)表有兩種類型,即本地臨時(shí)表和全局臨時(shí)表。型,即本地臨時(shí)表和全局臨時(shí)表。6本地臨時(shí)表本地臨時(shí)表 在在SQL Server中,創(chuàng)建本地臨時(shí)表和普中,創(chuàng)建本地臨時(shí)表和普通表相同。通表相同。本地臨時(shí)表的名稱以本地臨時(shí)表的名稱以“#”開頭。開頭。 對(duì)于創(chuàng)建本地臨時(shí)表的用戶來說,本地臨時(shí)對(duì)于創(chuàng)建本地臨時(shí)表的
4、用戶來說,本地臨時(shí)表是可見的,而其他用戶卻不能訪問和使用表是可見的,而其他用戶卻不能訪問和使用該本地臨時(shí)表;該本地臨時(shí)表; 當(dāng)用戶從當(dāng)用戶從SQL Server實(shí)例斷開連接時(shí),所實(shí)例斷開連接時(shí),所創(chuàng)建的本地臨時(shí)表也將被創(chuàng)建的本地臨時(shí)表也將被SQL Server刪除刪除。 7全局臨時(shí)表全局臨時(shí)表在在SQL Server中,創(chuàng)建全局臨時(shí)表和普通表相中,創(chuàng)建全局臨時(shí)表和普通表相同。同。全局臨時(shí)表的名稱以全局臨時(shí)表的名稱以“#”開頭。開頭。全局臨時(shí)表對(duì)所有連接的用戶都是可見的:全局臨時(shí)表對(duì)所有連接的用戶都是可見的: 本地臨時(shí)表僅對(duì)表的創(chuàng)建者可見;本地臨時(shí)表僅對(duì)表的創(chuàng)建者可見; 只有使用該全局臨時(shí)表的所
5、有用戶都斷開連接時(shí),只有使用該全局臨時(shí)表的所有用戶都斷開連接時(shí),SQL Server才能自動(dòng)刪除該全局臨時(shí)表。才能自動(dòng)刪除該全局臨時(shí)表。全局臨時(shí)表和本地臨時(shí)表的區(qū)別在于本地臨時(shí)表全局臨時(shí)表和本地臨時(shí)表的區(qū)別在于本地臨時(shí)表只和創(chuàng)建該表的用戶相關(guān),而全局臨時(shí)表卻與使只和創(chuàng)建該表的用戶相關(guān),而全局臨時(shí)表卻與使用該表的所有用戶有關(guān)。用該表的所有用戶有關(guān)。85.2 創(chuàng)建表創(chuàng)建表創(chuàng)建表就是定義表中各個(gè)列的結(jié)構(gòu):列名、數(shù)創(chuàng)建表就是定義表中各個(gè)列的結(jié)構(gòu):列名、數(shù)據(jù)類型、約束等據(jù)類型、約束等創(chuàng)建表的三種方式:創(chuàng)建表的三種方式: 使用使用SQL Server Management Studio創(chuàng)建表創(chuàng)建表 使用模
6、板創(chuàng)建表使用模板創(chuàng)建表 使用使用T-SQLT-SQL語句創(chuàng)建表語句創(chuàng)建表9表的結(jié)構(gòu)表的結(jié)構(gòu)列名:列的名稱是人們?yōu)榱腥〉拿至忻毫械拿Q是人們?yōu)榱腥〉拿?SQL Server中支持中文和英文名中支持中文和英文名 數(shù)據(jù)類型:數(shù)據(jù)類型: 系統(tǒng)數(shù)據(jù)類型系統(tǒng)數(shù)據(jù)類型 用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型約束:約束: 主關(guān)鍵字約束主關(guān)鍵字約束 外部關(guān)鍵字約束外部關(guān)鍵字約束 取值范圍約束取值范圍約束 列取值是否允許為空;列取值是否允許為空; 列取值是否允許重復(fù);列取值是否允許重復(fù); 列取值是否有默認(rèn)值。列取值是否有默認(rèn)值。 列取值是否唯一。列取值是否唯一。101.使用使用SQL Server Manag
7、ement Studio創(chuàng)創(chuàng)建表建表122.使用模板創(chuàng)建表使用模板創(chuàng)建表13 3.使用使用T-SQL語句創(chuàng)建表語句創(chuàng)建表CREATE TABLE ( , ,.n ,.n)14使用使用T-SQL語句創(chuàng)建語句創(chuàng)建BankT (銀行表銀行表)、LegalEntityT(法人表)和(法人表)和LoanT(貸款(貸款表)的代碼如下:表)的代碼如下:USE LoanDB -指定數(shù)據(jù)庫指定數(shù)據(jù)庫go-創(chuàng)建銀行表創(chuàng)建銀行表CREATE TABLE BankT( Bno char(5) PRIMARY KEY, -使用列級(jí)約束定義主關(guān)鍵字,也可以使用表級(jí)約束定義使用列級(jí)約束定義主關(guān)鍵字,也可以使用表級(jí)約束定義B
8、name nvarchar(10) NOT NULL, -非空非空Btel char(8) ) go15-創(chuàng)建法人表創(chuàng)建法人表CREATE TABLE LegalEntityT(Eno char(3) ,Ename nvarchar(15),Enature nchar(2), Ecapital int,Erep nchar(4),PRIMARY KEY(Eno) -使用表級(jí)約束定義主關(guān)鍵字,也可以使用列級(jí)約束定義使用表級(jí)約束定義主關(guān)鍵字,也可以使用列級(jí)約束定義)go16-創(chuàng)建貸款表創(chuàng)建貸款表CREATE TABLE LoanT(Eno char(3),Bno char(5),Ldate sma
9、lldatetime,Lamount int,Lterm smallint,PRIMARY KEY(Eno,Bno,Ldate) -對(duì)多列做主關(guān)鍵字的情況只能用表級(jí)約束定義對(duì)多列做主關(guān)鍵字的情況只能用表級(jí)約束定義)go175.3 管理表管理表修改表結(jié)構(gòu)修改表結(jié)構(gòu)刪除表刪除表重命名表重命名表19 使用SQL Server Management Studio修改表結(jié)構(gòu) 使用T-SQL語句修改表結(jié)構(gòu)ALTER TABLE ADD | ADD | DROP COLUMN | DROP | ALTER COLUMN 5.3.1 5.3.1 修改表結(jié)構(gòu)修改表結(jié)構(gòu)5.3.2 刪除表刪除表刪除表的順序刪除表的
10、順序使用使用SQL Server Management Studio刪刪除表除表使用使用T-SQL語言刪除表語言刪除表20格式:格式:DROP TABLE 例:例:DROP TABLE LoanDB5.4 數(shù)據(jù)完整性約束的創(chuàng)建和管理數(shù)據(jù)完整性約束的創(chuàng)建和管理數(shù)據(jù)完整性是指保證數(shù)據(jù)正確的特性數(shù)據(jù)完整性是指保證數(shù)據(jù)正確的特性 。22列級(jí)約束列級(jí)約束表級(jí)約束表級(jí)約束5.4.1 實(shí)現(xiàn)數(shù)據(jù)完整性約束實(shí)現(xiàn)數(shù)據(jù)完整性約束實(shí)現(xiàn)方法實(shí)現(xiàn)方法 T-SQL SQL Server Management Studio245.4.1.1 實(shí)體完整性約束實(shí)體完整性約束實(shí)體完整性的目的實(shí)體完整性的目的是要保證關(guān)系中的每個(gè)元組
11、都是要保證關(guān)系中的每個(gè)元組都是可識(shí)別和唯一的。是可識(shí)別和唯一的。PRIMARY KEY定義主關(guān)鍵字約束要注意:定義主關(guān)鍵字約束要注意: 每個(gè)表只能有一個(gè)每個(gè)表只能有一個(gè)PRIMARY KEY約束;約束; 用用PRIMARY KEY約束的列的取值必須是不重復(fù)的約束的列的取值必須是不重復(fù)的(對(duì)于由多列構(gòu)成的主關(guān)鍵字,是這些主關(guān)鍵字列(對(duì)于由多列構(gòu)成的主關(guān)鍵字,是這些主關(guān)鍵字列組合起來的取值不能重復(fù)),并且不允許為空值。組合起來的取值不能重復(fù)),并且不允許為空值。251、創(chuàng)建表時(shí)定義主關(guān)鍵字、創(chuàng)建表時(shí)定義主關(guān)鍵字 列級(jí)約束的定義語法格式為:列級(jí)約束的定義語法格式為: CREATE TABLE ( C
12、ONSTRAINT約束名約束名 PRIMARY KEY .)表級(jí)約束的定義語法格式為:表級(jí)約束的定義語法格式為: CREATE TABLE (, . CONSTRAINT約束名約束名 PRIMARY KEY (,.n)262、修改表時(shí)添加主關(guān)鍵字、修改表時(shí)添加主關(guān)鍵字 語法格式為:語法格式為: ALTER TABLE 表名表名 ADD CONSTRAINT約束名約束名 PRIMARY KEY ( , n)假如假如LoanT表在創(chuàng)建時(shí)沒有定義主關(guān)鍵字(表在創(chuàng)建時(shí)沒有定義主關(guān)鍵字(Eno,Bno,Ldate),請(qǐng)為其添加。),請(qǐng)為其添加。 ALTER TABLE LoanT ADD PRIMARY
13、 KEY(Eno,Bno,Ldate)273、在、在SQL Server Management Studio中設(shè)置主關(guān)鍵字中設(shè)置主關(guān)鍵字 284、系統(tǒng)對(duì)實(shí)體完整性約束的檢查、系統(tǒng)對(duì)實(shí)體完整性約束的檢查插入操作插入操作 ?刪除操作刪除操作 ?更新操作更新操作 ?2.參照完整性約束參照完整性約束參照完整性的參照完整性的目的目的是要保證外部關(guān)鍵字的取值是要保證外部關(guān)鍵字的取值不超出所參照的主關(guān)鍵字的取值范圍。不超出所參照的主關(guān)鍵字的取值范圍。FOREIGN KEY定義定義FOREIGN KEY約束時(shí)要注意:外部關(guān)鍵約束時(shí)要注意:外部關(guān)鍵字列參照的列必須是有字列參照的列必須是有PRIMARY KEY約
14、束或約束或者者UNIQUE約束的列。約束的列。 30創(chuàng)建表時(shí)定義外部關(guān)鍵字創(chuàng)建表時(shí)定義外部關(guān)鍵字 列級(jí)約束的定義語法格式為:列級(jí)約束的定義語法格式為:CREATE TABLE (. CONSTRAINT約束名約束名 FOREIGN KEY REFERENCES 被參照表表名被參照表表名() ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT . )31創(chuàng)建表時(shí)定義外部關(guān)鍵字創(chuàng)建表時(shí)定義外部關(guān)鍵字 表級(jí)約束的定義語法格式為:表級(jí)約
15、束的定義語法格式為: CREATE TABLE (, . CONSTRAINT約束名約束名 FOREIGN KEY () REFERENCES被參照表表名被參照表表名() ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT)32例:創(chuàng)建例:創(chuàng)建LoanT表時(shí)定義外部關(guān)鍵字。其中表時(shí)定義外部關(guān)鍵字。其中Bno為參照為參照BankT表的外部關(guān)鍵字,表的外部關(guān)鍵字,Eno為參照為參照LegalEntityT表表的外部關(guān)鍵字。的外部關(guān)鍵
16、字。CREATE TABLE LoanT(Eno char(3),Bno char(5),Ldate smalldatetime ,Lamount int,Lterm smallint,PRIMARY KEY(Eno,Bno,Ldate), -只能用表級(jí)約束只能用表級(jí)約束FOREIGN KEY(Bno) REFERENCES BankT(Bno), -表級(jí)約束,也可以放在列級(jí)表級(jí)約束,也可以放在列級(jí)FOREIGN KEY(Eno) REFERENCES LegalEntityT(Eno) -表級(jí)約束,也可以放在列級(jí)表級(jí)約束,也可以放在列級(jí))33修改表時(shí)添加外部關(guān)鍵字修改表時(shí)添加外部關(guān)鍵字語法格
17、式為:語法格式為: ALTER TABLE ADD CONSTRAINT約束名約束名 FOREIGN KEY () REFERENCES被參照表表名被參照表表名() ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT )34假設(shè)創(chuàng)建假設(shè)創(chuàng)建LoanT表時(shí)未定義外部關(guān)鍵字(如表時(shí)未定義外部關(guān)鍵字(如5.2.3 節(jié)),請(qǐng)為其添加。其中節(jié)),請(qǐng)為其添加。其中Bno為參照為參照BankT表表的外部關(guān)鍵字,的外部關(guān)鍵字,Eno為參照為參照
18、LegalEntityT表的表的外部關(guān)鍵字。外部關(guān)鍵字。 ALTER TABLE LoanT ADD FOREIGN KEY(Bno) REFERENCES BankT(Bno) ALTER TABLE LoanT ADD FOREIGN KEY(Eno) REFERENCES LegalEntityT(Eno)在在SQL Server Management Studio中設(shè)中設(shè)置外部關(guān)鍵字置外部關(guān)鍵字 3637測(cè)試(測(cè)試(SQL Server2008)部門號(hào)部門號(hào)部門名部門名B1XB2YB3Z職工號(hào)職工號(hào) 職工名職工名 部門號(hào)部門號(hào)Z1AB1Z2CB238強(qiáng)制外強(qiáng)制外鍵約束鍵約束刪除刪除/更
19、新更新規(guī)則規(guī)則被參照表(刪除、更新被外部關(guān)鍵字引用的值被參照表(刪除、更新被外部關(guān)鍵字引用的值的記錄操作)的記錄操作)否否無操作無操作層疊層疊設(shè)置空設(shè)置空設(shè)置默認(rèn)設(shè)置默認(rèn)值值系統(tǒng)不檢查參照完整性約束;系統(tǒng)不檢查參照完整性約束;執(zhí)行操作執(zhí)行操作是是無操作無操作系統(tǒng)檢查參照完整性約束;系統(tǒng)檢查參照完整性約束;不執(zhí)行操作不執(zhí)行操作層疊層疊系統(tǒng)檢查參照完整性約束;系統(tǒng)檢查參照完整性約束;被參照表和參照表級(jí)聯(lián)更新或刪除被參照表和參照表級(jí)聯(lián)更新或刪除設(shè)置空設(shè)置空系統(tǒng)檢查參照完整性約束;系統(tǒng)檢查參照完整性約束;被參照表更新或刪除;參照表相應(yīng)字段設(shè)置為被參照表更新或刪除;參照表相應(yīng)字段設(shè)置為空??铡TO(shè)置默認(rèn)設(shè)
20、置默認(rèn)值值系統(tǒng)檢查參照完整性約束;系統(tǒng)檢查參照完整性約束;被參照表更新或刪除;參照表相應(yīng)字段設(shè)置為被參照表更新或刪除;參照表相應(yīng)字段設(shè)置為默認(rèn)值。默認(rèn)值。系統(tǒng)對(duì)參照完整性約束的檢查系統(tǒng)對(duì)參照完整性約束的檢查對(duì)參照表的操作對(duì)參照表的操作 插入操作插入操作 ? 更新操作更新操作 ? 刪除操作刪除操作 ?對(duì)被參照表的操作對(duì)被參照表的操作 插入操作插入操作 ? 更新操作更新操作 ? 刪除操作刪除操作 ?3.唯一值約束唯一值約束唯一值約束的唯一值約束的目的目的是保證在非主關(guān)鍵字的是保證在非主關(guān)鍵字的一列或多列組合中不輸入重復(fù)的值。一列或多列組合中不輸入重復(fù)的值。UNIQUE定義定義UNIQUE約束時(shí)注意
21、如下事項(xiàng):約束時(shí)注意如下事項(xiàng): 允許有一個(gè)空值;允許有一個(gè)空值; 在一個(gè)表中可以定義多個(gè)在一個(gè)表中可以定義多個(gè)UNIQUE約束;約束; 可以在一個(gè)列或者多個(gè)列上定義可以在一個(gè)列或者多個(gè)列上定義UNIQUE約約束。束。40創(chuàng)建表時(shí)定義創(chuàng)建表時(shí)定義UNIQUE約束約束 列級(jí)約束的定義語法格式為:列級(jí)約束的定義語法格式為: CREATE TABLE (. CONSTRAINT約束名約束名 UNIQUE . )表級(jí)約束的定義語法格式為:表級(jí)約束的定義語法格式為: CREATE TABLE (, . CONSTRAINT約束名約束名 UNIQUE ( , n) )41例:要求例:要求LegalEntit
22、yT表中的表中的Ename(法人名稱)不能(法人名稱)不能取重復(fù)值,請(qǐng)?jiān)趧?chuàng)建取重復(fù)值,請(qǐng)?jiān)趧?chuàng)建LegalEntityT表時(shí)實(shí)現(xiàn)此約束。表時(shí)實(shí)現(xiàn)此約束。CREATE TABLE LegalEntityT(Eno char(3) ,Ename nvarchar(15) UNIQUE, -取值唯一取值唯一Enature nchar(2), Ecapital int,Erep nchar(4),PRIMARY KEY(Eno) -使用表級(jí)約束定義主關(guān)鍵字使用表級(jí)約束定義主關(guān)鍵字)42修改表時(shí)定義修改表時(shí)定義UNIQUE約束約束語法格式為:語法格式為:ALTER TABLE 表名表名 ADD CONST
23、RAINT 約束名約束名 UNIQUE (, n)例:要求例:要求LegalEntityT表中的表中的Ename(法人名稱)不(法人名稱)不能取重復(fù)值(假設(shè)創(chuàng)建能取重復(fù)值(假設(shè)創(chuàng)建LegalEntityT表時(shí)未定義此約表時(shí)未定義此約束)。束)。 ALTER TABLE LoanT ADD UNIQUE(Ename)43在在SQL Server Management Studio中設(shè)中設(shè)置置UNIQUE約束約束 44系統(tǒng)對(duì)唯一值約束的檢查系統(tǒng)對(duì)唯一值約束的檢查插入操作插入操作 ?更新操作更新操作 ?刪除操作刪除操作 ?4.默認(rèn)值約束默認(rèn)值約束默認(rèn)值約束的默認(rèn)值約束的目的目的是為列提供默認(rèn)值。即當(dāng)
24、在是為列提供默認(rèn)值。即當(dāng)在表中插入數(shù)據(jù)時(shí),如果沒有為默認(rèn)值約束的列表中插入數(shù)據(jù)時(shí),如果沒有為默認(rèn)值約束的列提供值,則系統(tǒng)自動(dòng)使用默認(rèn)值約束定義的默提供值,則系統(tǒng)自動(dòng)使用默認(rèn)值約束定義的默認(rèn)值。認(rèn)值。 DEFAULT使用使用DEFAULT約束時(shí)要注意:約束時(shí)要注意: 只在向表中插入數(shù)據(jù)時(shí)才檢查只在向表中插入數(shù)據(jù)時(shí)才檢查DEFAULT約束;約束; 每個(gè)列只能有一個(gè)每個(gè)列只能有一個(gè)DEFAULT約束;約束; 允許使用系統(tǒng)提供的值作為默認(rèn)值;允許使用系統(tǒng)提供的值作為默認(rèn)值; 不能與不能與IDENTITY屬性一起使用。屬性一起使用。46創(chuàng)建表時(shí)定義創(chuàng)建表時(shí)定義DEFAULT約束約束列級(jí)約束定義語法格式為
25、:列級(jí)約束定義語法格式為: CREATE TABLE (. CONSTRAINT約束名約束名 DEFAULT 默認(rèn)值默認(rèn)值 . )47例:要求例:要求LoanT表中的表中的Ldate(貸款日期)的默認(rèn)值為當(dāng)前日期,(貸款日期)的默認(rèn)值為當(dāng)前日期,請(qǐng)?jiān)趧?chuàng)建請(qǐng)?jiān)趧?chuàng)建LoanT表時(shí)實(shí)現(xiàn)此約束。表時(shí)實(shí)現(xiàn)此約束。CREATE TABLE LoanT(Eno char(3),Bno char(5),Ldate smalldatetime DEFAULT GETDATE(), -只能用列級(jí)只能用列級(jí)約束約束Lamount int,Lterm smallint,PRIMARY KEY(Eno,Bno,Ldat
26、e), -只能用表級(jí)約只能用表級(jí)約束束FOREIGN KEY(Bno) REFERENCES BankT(Bno), -表級(jí)約束,也可以放在列級(jí)表級(jí)約束,也可以放在列級(jí)FOREIGN KEY(Eno) REFERENCES LegalEntityT(Eno) -表級(jí)約束,也可以放在列級(jí)表級(jí)約束,也可以放在列級(jí))48修改表時(shí)定義修改表時(shí)定義DEFAULT約束約束語法格式為:語法格式為: ALTER TABLE 表名表名 ADD CONSTRAINT 約束名約束名 DEFAULT默認(rèn)值默認(rèn)值 FOR 列名列名例:要求例:要求LoanT表中的表中的Ldate(貸款日期)的默認(rèn)值(貸款日期)的默認(rèn)值為
27、當(dāng)前日期,假設(shè)創(chuàng)建為當(dāng)前日期,假設(shè)創(chuàng)建LoanT表時(shí)未定義此約束,請(qǐng)表時(shí)未定義此約束,請(qǐng)為其添加。為其添加。 ALTER TABLE LoanT ADD DEFAULT GETDATE() FOR Ldate 49在在SQL Server Management Studio中設(shè)中設(shè)置置DEFAULT約束約束 50系統(tǒng)對(duì)默認(rèn)值約束的檢查系統(tǒng)對(duì)默認(rèn)值約束的檢查插入操作?插入操作?更新操作?更新操作?刪除操作?刪除操作?5.檢查約束檢查約束檢查約束目的是限制列的取值范圍。檢查約束目的是限制列的取值范圍。CHECK使用使用CHECK約束時(shí)須注意:約束時(shí)須注意: 在執(zhí)行在執(zhí)行INSERT語句和語句和UP
28、DATE語句時(shí)系統(tǒng)語句時(shí)系統(tǒng)自動(dòng)檢查自動(dòng)檢查CHECK約束;約束; CHECK約束可以限制一個(gè)列的取值范圍,約束可以限制一個(gè)列的取值范圍,也可以限制同一個(gè)表中多個(gè)列之間的取值約也可以限制同一個(gè)表中多個(gè)列之間的取值約束關(guān)系。束關(guān)系。52創(chuàng)建表時(shí)定義創(chuàng)建表時(shí)定義CHECK約束約束列級(jí)約束的定義語法格式為:列級(jí)約束的定義語法格式為:CREATE TABLE (. CONSTRAINT約束名約束名 CHECK(邏輯表達(dá)式邏輯表達(dá)式) . )表級(jí)約束的定義語法格式為:表級(jí)約束的定義語法格式為: CREATE TABLE (, . CONSTRAINT約束名約束名 CHECK(邏輯表達(dá)式邏輯表達(dá)式) )5
29、3例:要求例:要求LegalEntityT表中的表中的Enature(經(jīng)濟(jì)性質(zhì))列的取值(經(jīng)濟(jì)性質(zhì))列的取值范圍為范圍為國營,私營,集體,三資國營,私營,集體,三資,請(qǐng)?jiān)趧?chuàng)建,請(qǐng)?jiān)趧?chuàng)建LegalEntityT表表時(shí)實(shí)現(xiàn)此約束。時(shí)實(shí)現(xiàn)此約束。CREATE TABLE LegalEntityT(Eno char(3) ,Ename nvarchar(15) UNIQUE, -取值唯一取值唯一Enature nchar(2) CHECK(Enature IN(國營國營,私營私營,集體集體,三資三資) ), -列級(jí)約束列級(jí)約束Ecapital int,Erep nchar(4),PRIMARY KEY
30、(Eno) ) -使用表級(jí)約束定義主關(guān)鍵字使用表級(jí)約束定義主關(guān)鍵字或者或者CREATE TABLE LegalEntityT(Eno char(3) ,Ename nvarchar(15) UNIQUE, -取值唯一取值唯一Enature nchar(2) , Ecapital int,Erep nchar(4),PRIMARY KEY(Eno), -使用表級(jí)約束定義主關(guān)鍵字使用表級(jí)約束定義主關(guān)鍵字CHECK(Enature IN(國營國營,私營私營,集體集體,三資三資) ) -表級(jí)約束表級(jí)約束)54例:已知關(guān)系模式:工作(工作證號(hào),最高工資,最低工資例:已知關(guān)系模式:工作(工作證號(hào),最高工資
31、,最低工資),限制最低工資必須小于等于最高工資,請(qǐng)按要求創(chuàng)建對(duì)),限制最低工資必須小于等于最高工資,請(qǐng)按要求創(chuàng)建對(duì)應(yīng)的工作表。應(yīng)的工作表。CREATE TABLE 工作表工作表 ( 工作證號(hào)工作證號(hào) char(4) PRIMARY KEY, 最低工資最低工資 int, 最高工資最高工資 int, CHECK (最低工資最低工資= 最高工資最高工資) -多列之間的約束只能在表約束處定義多列之間的約束只能在表約束處定義 )55修改表時(shí)定義修改表時(shí)定義CHECK約束約束語法格式為:語法格式為: ALTER TABLE 表名表名 ADD CONSTRAINT 約束名約束名 CHECK(邏輯表達(dá)式邏輯表
32、達(dá)式)例:要求例:要求LegalEntityT表中的表中的Enature(經(jīng)濟(jì)性質(zhì))(經(jīng)濟(jì)性質(zhì))列的取值范圍為列的取值范圍為國營,私營,集體,三資國營,私營,集體,三資(假設(shè)創(chuàng)(假設(shè)創(chuàng)建建LegalEntityT表時(shí)未定義此約束)。表時(shí)未定義此約束)。 ALTER TABLE LegalEntity ADD CHECK(Enature IN(國營國營,私營私營,集體集體,三資三資) )56在在SQL Server Management Studio中設(shè)中設(shè)置置CHECK約束約束 57系統(tǒng)對(duì)檢查約束的檢查系統(tǒng)對(duì)檢查約束的檢查插入操作?插入操作?刪除操作?刪除操作?更新操作?更新操作?58管理數(shù)據(jù)
33、完整性約束管理數(shù)據(jù)完整性約束查看已定義的約束查看已定義的約束刪除約束刪除約束實(shí)現(xiàn)數(shù)據(jù)完整性匯總實(shí)現(xiàn)數(shù)據(jù)完整性匯總創(chuàng)建表時(shí)創(chuàng)建表時(shí)_列級(jí)列級(jí)創(chuàng)建表時(shí)創(chuàng)建表時(shí)_表級(jí)表級(jí)在已創(chuàng)建表上添加在已創(chuàng)建表上添加系統(tǒng)對(duì)完整性約束的檢查系統(tǒng)對(duì)完整性約束的檢查PRIMARY KEYPRIMARY KEY(只適合于單屬性主關(guān)鍵字只適合于單屬性主關(guān)鍵字)PRIMARY KEY(主關(guān)主關(guān)鍵字屬性集鍵字屬性集)ALTER TABLE ADD PRIMARY KEY(主主關(guān)鍵字屬性集關(guān)鍵字屬性集)INSERTUPDATEUNIQUEUNIQUEUNIQUE(列名集列名集)ALTER TABLE ADD UNIQUE(列名集
34、列名集)INSERTUPDATEFOREIGN KEYFOREIGN KEY(外部關(guān)鍵外部關(guān)鍵字字) REFERENCES 被參照被參照表表(主關(guān)鍵字主關(guān)鍵字)FOREIGN KEY(外部外部關(guān)鍵字關(guān)鍵字) REFERENCES 被參被參照表照表(主關(guān)鍵字主關(guān)鍵字)ALTER TABLE ADD FOREIGN KEY(外外部關(guān)鍵字部關(guān)鍵字) REFERENCES 被參照表被參照表(主關(guān)鍵字主關(guān)鍵字)參照表參照表:INSERTUPDATE被參照表被參照表:DELETE(4種選擇)種選擇)UPDATE (4種選擇)種選擇)DEFAULT DEFAULT 默認(rèn)值默認(rèn)值A(chǔ)LTER TABLE ADD
35、 DEFAULT 默認(rèn)值默認(rèn)值 FOR 列名列名INSERTCHECKCHECK(邏輯表達(dá)式邏輯表達(dá)式)(只適合于單列只適合于單列)CHECK(邏輯表達(dá)式邏輯表達(dá)式) ALTER TABLE ADD CHECK(邏輯表達(dá)邏輯表達(dá)式式)INSERTUPDATE索引索引在一個(gè)數(shù)據(jù)庫表中檢索數(shù)據(jù)時(shí),如果采取逐行在一個(gè)數(shù)據(jù)庫表中檢索數(shù)據(jù)時(shí),如果采取逐行掃描的方式對(duì)這個(gè)表中的所有記錄進(jìn)行檢查,掃描的方式對(duì)這個(gè)表中的所有記錄進(jìn)行檢查,就如同在一本厚厚的書中查找某個(gè)特定的詞語就如同在一本厚厚的書中查找某個(gè)特定的詞語一樣,搜索效率十分低下。一樣,搜索效率十分低下。如果在一個(gè)數(shù)據(jù)庫中建立一個(gè)有效的索引,用如果在
36、一個(gè)數(shù)據(jù)庫中建立一個(gè)有效的索引,用select語句檢索數(shù)據(jù)時(shí)不用掃描整個(gè)表就能夠語句檢索數(shù)據(jù)時(shí)不用掃描整個(gè)表就能夠找到所需要的記錄,還能提高找到所需要的記錄,還能提高update和和delete語句的執(zhí)行速度,使數(shù)據(jù)庫的性能得到改善。語句的執(zhí)行速度,使數(shù)據(jù)庫的性能得到改善。61索引索引索引的作用索引的作用625970164216索引表數(shù)據(jù)表由于索引頁比較小,所以處理速度快,可以提高查詢效率。索引鍵可以是表中的單個(gè)字段,也可以是索引鍵可以是表中的單個(gè)字段,也可以是由多個(gè)字段組合而成。由多個(gè)字段組合而成。63索引為數(shù)據(jù)庫管理帶來的優(yōu)勢(shì)索引為數(shù)據(jù)庫管理帶來的優(yōu)勢(shì)提高查詢速度提高查詢速度提高連接、提高連接、order by和和 group by執(zhí)行的執(zhí)行的速度速度查詢優(yōu)化器依靠索引起作用查詢優(yōu)化器依靠索引起作用強(qiáng)制實(shí)施行的唯一性強(qiáng)制實(shí)施行的唯一性64索引的分類索引的分類Sql server的索引主要分為兩類:聚集索的索引主要分為兩類:聚集索引和非聚集索引。引和非聚集索引。按照其他一些特性,還可以分為唯一索引按照其他一些特性,還可以分為唯一索引、視圖索引等類別。、視圖索引等類別。65聚集索引聚集索引
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師自我評(píng)估與發(fā)展計(jì)劃
- 探索閱讀與藝術(shù)融合的展示活動(dòng)計(jì)劃
- 重癥監(jiān)護(hù)室工作總結(jié)與改進(jìn)措施計(jì)劃
- 星際冒險(xiǎn)學(xué)校宇航社團(tuán)計(jì)劃
- 律師行業(yè)個(gè)人發(fā)展計(jì)劃
- 不同安全事件處理的經(jīng)驗(yàn)總結(jié)計(jì)劃
- 非遺體驗(yàn)游的策劃藝術(shù)西安全新路線的創(chuàng)新實(shí)踐
- 創(chuàng)新住院部管理模式的工作計(jì)劃
- 手術(shù)室安全管理體系的建設(shè)與實(shí)踐計(jì)劃
- 跨境貿(mào)易物流風(fēng)險(xiǎn)管理及優(yōu)化方案探討
- 腸系膜上動(dòng)脈栓塞護(hù)理查房課件
- DL∕T 2528-2022 電力儲(chǔ)能基本術(shù)語
- 產(chǎn)品研發(fā)指導(dǎo)專家聘用協(xié)議書
- 【正版授權(quán)】 IEC 60268-5:2003/AMD1:2007 EN-FR Amendment 1 - Sound system equipment - Part 5: Loudspeakers
- 2024年晉中職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試題庫完整參考答案
- DL-T5493-2014電力工程基樁檢測(cè)技術(shù)規(guī)程
- 二年級(jí)數(shù)學(xué)下冊(cè)混合運(yùn)算計(jì)算100題(含詳細(xì)答案)
- 小學(xué)體育小課題研究
- 新能源汽車故障診斷與排除實(shí)訓(xùn)工單
- 民族文化傳承與創(chuàng)新魯班工坊揚(yáng)州三把刀建設(shè)方案
- 14J936《變形縫建筑構(gòu)造》
評(píng)論
0/150
提交評(píng)論