《SQL-Server2005程序設(shè)計(jì)語(yǔ)言》_第1頁(yè)
《SQL-Server2005程序設(shè)計(jì)語(yǔ)言》_第2頁(yè)
《SQL-Server2005程序設(shè)計(jì)語(yǔ)言》_第3頁(yè)
《SQL-Server2005程序設(shè)計(jì)語(yǔ)言》_第4頁(yè)
《SQL-Server2005程序設(shè)計(jì)語(yǔ)言》_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SQL Server 2005 數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言第6章 數(shù)據(jù)表教學(xué)目標(biāo)掌握創(chuàng)建、修改、刪除用戶表的方法掌握生成列值的方法掌握生成腳本的方法臨時(shí)表第6章 數(shù)據(jù)表數(shù)據(jù)表是數(shù)據(jù)庫(kù)中最重要的數(shù)據(jù)對(duì)象,數(shù)據(jù)庫(kù)中的數(shù)據(jù)全部保存在數(shù)據(jù)表中,用戶對(duì)數(shù)據(jù)的操作也主要集中在數(shù)據(jù)表上。在SQL Server 2005數(shù)據(jù)庫(kù)中,數(shù)據(jù)表分為:用戶定義數(shù)據(jù)表臨時(shí)表已分區(qū)表系統(tǒng)表。分區(qū)表概念 2005銷(xiāo)售訂單數(shù)據(jù)根據(jù)某個(gè)特定列中的一系列值進(jìn)行水平分區(qū) 2005已分區(qū)表涉及高級(jí)的數(shù)據(jù)管理 分區(qū)表概念 6.1 用CREATE TABLE語(yǔ)句創(chuàng)建表創(chuàng)建數(shù)據(jù)庫(kù)后,就可以在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表了。數(shù)據(jù)存儲(chǔ)于表中,表存儲(chǔ)于數(shù)據(jù)庫(kù)文件中

2、,任何擁有創(chuàng)建數(shù)據(jù)庫(kù)權(quán)限的用戶都可以進(jìn)行該操作。在SQL Server 2005數(shù)據(jù)庫(kù)系統(tǒng)中,可以使用CREATE TABLE語(yǔ)句創(chuàng)建表。6.1.1 一個(gè)創(chuàng)建表的小實(shí)例(P81 表6.1 )CREATE TABLE Employees(EmployeeID int NOT NULL,Name nvarchar(50) NOT NULL,Title nvarchar(30),BirthDate datetime,HireDate datetime,Address nvarchar(60),City nvarchar(15),Region nvarchar(15),PostalCode nvarc

3、har(10),Country nvarchar(15),HomePhone nvarchar(24),Photo image,Memo nvarchar(50), CONSTRAINT PK_Employees PRIMARY KEY CLUSTERED(EmployeeID ASC )創(chuàng)建表列的排序規(guī)則 可為同一表中的各個(gè)列指定不同的排序規(guī)則指定 NULL 或者 NOT NULL 確定列值是否可為空 默認(rèn)按照會(huì)話或者數(shù)據(jù)庫(kù)的默認(rèn)值設(shè)定保留關(guān)鍵字避免使用保留關(guān)鍵字作為對(duì)象名稱。6.1 用CREATE TABLE語(yǔ)句創(chuàng)建表分隔標(biāo)識(shí)符命名規(guī)則:保留字,如 table、create、select

4、等,不能作為對(duì)象標(biāo)識(shí)符不符合標(biāo)識(shí)符格式規(guī)則的標(biāo)識(shí)符必須使用分隔符兩種分隔標(biāo)識(shí)符 括在括號(hào)中的標(biāo)識(shí)符:用方括號(hào)分隔 被引用的標(biāo)識(shí)符:用雙引號(hào)分隔僅當(dāng) QUOTED_IDENTIFIER 選項(xiàng)設(shè)置為 ON 時(shí),被引用的標(biāo)識(shí)符才有效SET QUOTED_IDENTIFIER ON 6.1 用CREATE TABLE語(yǔ)句創(chuàng)建表CREATE TABLE table_name ( | ,.n ) := column_name data_type DEFAULT constant_expression | IDENTITY ( seed , increment ) ROWGUIDCOL .n := CONS

5、TRAINT constraint_name NULL | NOT NULL | PRIMARY KEY | UNIQUE | REFERENCES ref_table ( ref_column ) 6.1.2 基本語(yǔ)法 := CONSTRAINT constraint_name PRIMARY KEY | UNIQUE ( column ,.n ) | FOREIGN KEY ( column ,.n ) REFERENCES ref_table ( ref_column ,.n ) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO A

6、CTION 6.1.2 基本語(yǔ)法示例CREATE TABLE MyCustomers (CustID int IDENTITY (100,1) PRIMARY KEY, CompanyName nvarchar (50)CREATE TABLE MyCustomers2 (CustID int CONSTRAINT pkCustId PRIMARY KEY)CREATE TABLE MyOrders (OrderID int, CustID int REFERENCES MyCustomers(CustID)使用 Identity 屬性,創(chuàng)建自動(dòng)編號(hào)列使用 NEWID 函數(shù)和 uniqueid

7、entifier 數(shù)據(jù)類(lèi)型6.1.3 生成列值1、使用 Identity 屬性使用 Identity 屬性的要求每個(gè)表只能有一個(gè)標(biāo)識(shí)列 數(shù)據(jù)類(lèi)型必須是int、bigint、smallint、tinyint 或decimal,或者是小數(shù)位數(shù)為0 的numeric 數(shù)據(jù)類(lèi)型,并且約束為不可為空。標(biāo)識(shí)列不能進(jìn)行更新操作標(biāo)識(shí)列不允許空值如何引用標(biāo)識(shí)列可以使用$IDENTITY引用該列還可通過(guò)列名引用該列1、使用 Identity 屬性(續(xù))檢索 Identity 屬性的信息函數(shù) IDENT_SEED():返回種子值 函數(shù)IDENT_INCR():返回增量值管理 Identity 屬性設(shè)置 IDENTI

8、TY_INSERT 為 ON,可在 INSERT 中為標(biāo)識(shí)列顯式地插入用戶提供的值IF OBJECT_ID (dbo.table_test_6_1, U) IS NOT NULL DROP TABLE table_test_6_1GOCREATE TABLE table_test_6_1( id_num int IDENTITY(1,1), fname varchar (20), minit char(1), lname varchar(30)INSERT table_test_6_1 (fname, minit, lname) VALUES (Karin, F, Josephs)INSERT

9、 table_test_6_1 (fname, minit, lname) VALUES (Pirkko, O, Koskitalo)GO-1.查找并刪除已經(jīng)存在的數(shù)據(jù)表IF OBJECT_ID (dbo.table_test_6_2, U) IS NOT NULL DROP TABLE table_test_6_2GO-2.創(chuàng)建數(shù)據(jù)表,并插入數(shù)據(jù)CREATE TABLE table_test_6_2 (id_num int IDENTITY(1,1), company_name sysname)INSERT table_test_6_2(company_name) VALUES (Test

10、1)INSERT table_test_6_2(company_name) VALUES (Test 2)INSERT table_test_6_2(company_name) VALUES (Test 3)INSERT table_test_6_2(company_name) VALUES (Test 4)GO返回架構(gòu)范圍內(nèi)對(duì)象的數(shù)據(jù)庫(kù)對(duì)象標(biāo)識(shí)符-3.查看table_test_6_2數(shù)據(jù)表,將看到4條數(shù)據(jù)SELECT * FROM table_test_6_2GO-4.刪除中斷的號(hào)DELETE FROM table_test_6_2 WHERE id_num = 3-5.查看table_te

11、st_6_2數(shù)據(jù)表,將看到3條數(shù)據(jù),標(biāo)識(shí)列記錄分別為1,2,4SELECT * FROM table_test_6_2GO-6.查找最小標(biāo)識(shí)號(hào),結(jié)果為3- SET IDENTITY_INSERT ON and use in table_test_6_2 table.SET IDENTITY_INSERT table_test_6_2 ONDECLARE minidentval smallintDECLARE nextidentval smallintSELECT minidentval = MIN($IDENTITY) FROM table_test_6_2 IF minidentval =

12、IDENT_SEED(table_test_6_2) SELECT nextidentval = -7.賦值語(yǔ)句 MIN($IDENTITY) + IDENT_INCR(table_test_6_2) FROM table_test_6_2 t1 WHERE ($IDENTITY BETWEEN IDENT_SEED(table_test_6_2) AND 32766) AND ( NOT EXISTS (SELECT * FROM table_test_6_2 t2 WHERE t2.$IDENTITY = t1.$IDENTITY + IDENT_INCR(table_test_6_2)

13、) ELSE SELECT nextidentval = IDENT_SEED(table_test_6_2)PRINT nextidentval -輸入查找到的值SET IDENTITY_INSERT table_test_6_2 OFF2、使用 NEWID 函數(shù)和 uniqueidentifier 數(shù)據(jù)類(lèi)型作用:確保 ID 的全局惟一性u(píng)niqueidentifier 數(shù)據(jù)類(lèi)型:存儲(chǔ) GUIDNEWID 函數(shù):產(chǎn)生一個(gè) GUID兩者常常和 DEFAULT 約束配合使用 CREATE TABLE Customer (CustID uniqueidentifier NOT NULL DEFAU

14、LT NEWID(), CustName char(30) NOT NULL)6.1.4 創(chuàng)建非空列列是否為空決定表中的行是否可為該列包含空值??罩挡煌诹?,也不同于空白或長(zhǎng)度為零的字符串。NULL(空)的意思是沒(méi)有輸入,出現(xiàn)NULL通常表示值未知或未定義。6.1.4 創(chuàng)建非空列CREATE TABLE table_test_6_3( id_num int IDENTITY(1,1), fname varchar (20) NOT NULL, -1.設(shè)置為非空列 minit char(1), lname varchar(30)INSERT table_test_6_3 (fname, mini

15、t, lname) VALUES (K, F, Jose) -2.以下不能執(zhí)行成功 INSERT table_test_6_3 (minit, lname) VALUES (F, Jose) 如果一個(gè)列的值在 INSERT 語(yǔ)句中沒(méi)有指定,DEFAULT 約束將自動(dòng)輸入一個(gè)值,可以是預(yù)先指定的常量、NULL 或者一個(gè)系統(tǒng)函數(shù)運(yùn)行時(shí)的值語(yǔ)法:CONSTRAINT 約束名 DEFAULT 約束表達(dá)式 創(chuàng)建 DEFAULT 約束的兩種方法創(chuàng)建一個(gè)默認(rèn)(CREATE DEFAULT),然后使用存儲(chǔ)過(guò)程 sp_bindefault 將默認(rèn)綁定到一個(gè)列CREATE TABLE 或 ALTER TABLE

16、時(shí)使用 DEFAUTL 約束6.1.5 字段的默認(rèn)值6.1.5 字段的默認(rèn)值語(yǔ)法: 創(chuàng)建:CREATE DEFAULT 默認(rèn)值 AS 常量表達(dá)式 刪除:DROP DEFAULT 默認(rèn)值 ,.n 綁定一個(gè)默認(rèn):sp_bindefault 解除默認(rèn)值綁定:sp_unbindefault字段的默認(rèn)值CREATE TABLE table_test_6_4 (keycol smallint, process_id smallint DEFAULT SPID, -定義默認(rèn)值 date_ins datetime DEFAULT getdate(), -定義默認(rèn)值 mathcol smallint DEFAU

17、LT 10 * 2, -定義默認(rèn)值 char1 char(3), char2 char(3) DEFAULT xyz) -定義默認(rèn)值GO字段的默認(rèn)值CREATE DEFAULT abc_const AS abc;GOsp_bindefault abc_const, table_test_6_4.char1;GO6.1.6 選擇表存放文件組不同的數(shù)據(jù)表可以保存在不同文件組中,這為用戶提供了非常有用的策略。將不同重要程度的數(shù)據(jù)表,保存在不同的磁盤(pán)的不同的文件組中,這不僅有利于提高數(shù)據(jù)表的讀寫(xiě)性能,更加有利于根據(jù)文件的重要程度實(shí)施保存和備份策略。CREATE DATABASE Table_test_

18、6_5ON PRIMARY ( NAME=Table_test_6_5_Primary, FILENAME=c:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLdataTable_test_6_5_Prm.mdf, SIZE=4MB, MAXSIZE=10MB, FILEGROWTH=1MB),FILEGROUP Table_test_6_5_FG1 -輔助數(shù)據(jù)文件 ( NAME = Table_test_6_5_FG1_Dat1, FILENAME =c:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLdat

19、aTable_test_6_5_FG1_1.ndf, SIZE = 1MB, MAXSIZE=10MB, FILEGROWTH=1MB), LOG ON ( NAME=Table_test_6_5_log, FILENAME =c:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLdataTable_test_6_5.ldf, SIZE=1MB, MAXSIZE=10MB, FILEGROWTH=1MB);GO-2.修改文件組為默認(rèn)ALTER DATABASE Table_test_6_5 MODIFY FILEGROUP Table_test_6_5_

20、FG1 DEFAULT;GO-3.在用戶定義的文件組中創(chuàng)建數(shù)據(jù)表USE Table_test_6_5;CREATE TABLE MyTable ( cola int PRIMARY KEY, colb char(8) )ON Table_test_6_5_FG1;-4指定文件組GO6.1.7 使用Check約束創(chuàng)建表時(shí),用戶可以創(chuàng)建CHECK約束作為表定義的一部分。如果表已經(jīng)存在,則可以添加CHECK約束,表和列可以包含多個(gè)CHECK約束。-創(chuàng)建數(shù)據(jù)表USE AdventureWorks;GOCREATE TABLE Table_test_6_6( id int PRIMARY KEY, cn

21、ame char(50), address char(50), memo char(50), CONSTRAINT id CHECK (id BETWEEN 0 and 10000 )PRIMARY KEY 約束PRIMARY KEY 約束在表中定義了一個(gè)惟一標(biāo)識(shí)每一行的主鍵語(yǔ)法:CONSTRAINT 約束名 PRIMARY KEY CLUSTERED | NONCLUSTERED (列,.n)應(yīng)用 PRIMARY KEY 約束的注意事項(xiàng)每張表只能有一個(gè) PRIMARY KEY 約束輸入的值必須是惟一的不允許空值將在指定列上創(chuàng)建惟一索引PRIMARY KEY 約束(續(xù))PRIMARY KEY

22、約束示例在 Customers 表上創(chuàng)建 PRIMARY KEY 約束,指明表的主鍵值是 CustomerID,并且創(chuàng)建非聚集索引以強(qiáng)制約束USE NorthwindALTER TABLE dbo.Customers ADD CONSTRAINT PK_Customers PRIMARY KEY NONCLUSTERED (CustomerID)UNIQUE 約束UNIQUE 約束指明列中的任意兩行不能有相同的值語(yǔ)法:CONSTRAINT 約束名 UNIQUE CLUSTERED | NONCLUSTERED (列,.n )UNIQUE 約束示例在 Suppliers 表的公司名列上創(chuàng)建 UN

23、IQUE 約束USE NorthwindALTER TABLE dbo.Suppliers ADD CONSTRAINT U_CompanyName UNIQUE NONCLUSTERED (CompanyName)應(yīng)用 UNIQUE 約束的注意事項(xiàng)允許空值在一個(gè)表上允許多個(gè) UNIQUE 約束可在一個(gè)或者多個(gè)列上定義是通過(guò)一個(gè)惟一索引強(qiáng)制約束的UNIQUE 約束(續(xù))UNIQUE 約束(續(xù))PRIMARY KEY 和 UNIQUE 約束聲明 PRIMARY KEY 或 UNIQUE 約束的結(jié)果是自動(dòng)創(chuàng)建了一個(gè)指定列上的惟一索引,通過(guò)惟一索引來(lái)確保值的惟一性可空性PRIMARY KEY 的各個(gè)

24、列必須聲明為 NOT NULL,而 UNIQUE 的各個(gè)列可以聲明為允許 NULL 值在惟一索引中,認(rèn)為所有的 NULL 值是相等的選擇關(guān)鍵詞關(guān)鍵詞的長(zhǎng)度盡可能短不要使用 float 或 real 數(shù)據(jù)類(lèi)型的列作為主鍵UNIQUE約束CREATE TABLE HumanResources.Employee(EmployeeID int IDENTITY(1,1) NOT NULL,NationalIDNumber nvarchar(15) NOT NULL UNIQUE NONCLUSTERED,)FOREIGN KEY 約束FOREIGN KEY 約束:定義到同表或其他表中具有 PRIMAR

25、Y KEY 或者 UNIQUE 約束的列的引用語(yǔ)法:CONSTRAINT 約束名 FOREIGN KEY (列,n)REFERENCES 引用表 (引用列 ,n)具有 FOREIGN KEY 約束的列的取值范圍只能是被引用的列的列值FOREIGN KEY 約束(續(xù))FOREIGN KEY 約束的示例使用 FOREIGN KEY 約束,確保 Orders 表中的客戶標(biāo)識(shí)與 Customers 表中的有效的客戶標(biāo)識(shí)相關(guān)聯(lián)USE NorthwindALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (Custom

26、erID) REFERENCES dbo.Customers(CustomerID)FOREIGN KEY 約束(續(xù))應(yīng)用 FOREIGN KEY 約束的注意事項(xiàng)提供了單列或多列的引用完整性。FOREIGN KEY 子句中指定的列的個(gè)數(shù)和數(shù)據(jù)類(lèi)型必須和 REFERENCES 子句中指定的列的個(gè)數(shù)和數(shù)據(jù)類(lèi)型匹配修改數(shù)據(jù)的時(shí)候,用戶必須在被 FOREIGN KEY 約束引用的表上具有 SELECT 或 REFERENCES 權(quán)限若引用的是同表中的列,那么可只用 REFERENCES 子句而省略 FOREIGN KEY 子句級(jí)聯(lián)引用完整性FOREIGN KEY 約束包含一個(gè) CASCADE 選項(xiàng),允

27、許對(duì)一個(gè)定義了 UNIQUE 或者 PRIMARY KEY 約束的列的值的修改自動(dòng)傳播到引用它的外鍵上,這個(gè)動(dòng)作稱為級(jí)聯(lián)引用完整性語(yǔ)法:CONSTRAINT 約束名 FOREIGN KEY (列,n)REFERENCES 引用表 (引用列 ,n). ON DELETE CASCADE | NO ACTION| SET NULL | SET DEFAULT ON UPDATE CASCADE | NO ACTION| SET NULL | SET DEFAULT 級(jí)聯(lián)引用完整性 Cascade 選項(xiàng)UPDATE 行為DELETE 行為NO ACTION(Default)引發(fā)錯(cuò)誤;回滾操作CASC

28、ADE在引用表中更新外鍵在引用表中刪除行SET NULL在引用表中設(shè)置外鍵為NULLSET DEFAULT在引用表中設(shè)置外鍵為DEFAULT值FOREIGN KEY 約束包含一個(gè) CASCADE 選項(xiàng) 示例向order表中添加FOREIGN KEY約束,該表級(jí)聯(lián)任何對(duì)customer中cust_id的更新,但是不允許在customer中刪除任何被引用的行CREATE TABLE orders ( order_id int NOT NULL IDENTITY PRIMARY KEY cust_id int NOT NULL REFERENCES Customer(cust_id ) ON UPD

29、ATE CASCADE ON DELETE NO ACTION ) 級(jí)聯(lián)引用完整性(續(xù))約束檢查的注意事項(xiàng) 為約束指定有意義的名稱無(wú)需刪除以及重新創(chuàng)建表,即可創(chuàng)建、更改或刪除約束在你的應(yīng)用程序和事務(wù)中執(zhí)行錯(cuò)誤檢查禁用 CHECK 和 FOREIGN KEY 約束:當(dāng)運(yùn)行大型批處理作業(yè)時(shí)提高性能當(dāng)向表中添加新的約束的時(shí)候避免檢查已經(jīng)存在的數(shù)據(jù)6.1.8 設(shè)置字段的排序規(guī)則排序規(guī)則是根據(jù)特定語(yǔ)言和區(qū)域設(shè)置的標(biāo)準(zhǔn),指定對(duì)字符串?dāng)?shù)據(jù)進(jìn)行排序和比較的規(guī)則。用戶可以在CREATE TABLE語(yǔ)句中設(shè)置字段的排序規(guī)則。USE AdventureWorksGO-在CREATE TABLE過(guò)程中設(shè)計(jì)字段的排序規(guī)

30、則CREATE TABLE Table_test_6_7 (col1 int PRIMARY KEY, col2 varchar(10) COLLATE French_CI_AS NOT NULL )GO使用ALTER TABLE通過(guò)更改、添加或刪除列和約束,或者啟用或禁用約束和觸發(fā)器,從而修改表的定義,SQL Server 2005數(shù)據(jù)庫(kù)的ALTER TABLE語(yǔ)句提供了豐富的參數(shù)項(xiàng),本節(jié)中僅列出常用的語(yǔ)法結(jié)構(gòu)。6.2 用ALTER TABLE語(yǔ)句修改表ALTER TABLE database_name . schema_name . | schema_name . table_name A

31、LTER COLUMN column_name type_schema_name. type_name ( precision , scale | xml_schema_collection ) NULL | NOT NULL COLLATE collation_name | WITH CHECK | NOCHECK ADD | ,.n | DROP CONSTRAINT constraint_name WITH ( ,.n ) | COLUMN column_name ,.n | WITH CHECK | NOCHECK CHECK | NOCHECK CONSTRAINT ALL | co

32、nstraint_name ,.n | ENABLE | DISABLE TRIGGER ALL | trigger_name ,.n 6.2.2 修改字段屬性示例:本節(jié)列舉一個(gè)示例,使用ALTER TABLE ALTER COLUMN修改數(shù)據(jù)表中的字段的數(shù)據(jù)類(lèi)型,由int型更改為decimal型,具體操作步驟請(qǐng)參考如下過(guò)程。USE AdventureWorksGOCREATE TABLE Table_test_6_8 ( column_a INT );-創(chuàng)建表GOINSERT INTO Table_test_6_8 (column_a)VALUES (10) ; -插入數(shù)據(jù)GOSELECT

33、* FROM Table_test_6_8;GOALTER TABLE Table_test_6_8 ALTER COLUMN column_a DECIMAL (5, 2) ;GOSELECT * FROM Table_test_6_8;GO6.2.3 添加字段示例:本節(jié)列舉一個(gè)示例,使用ALTER TABLE ADD修改數(shù)據(jù)表,添加一個(gè)允許空值的列USE AdventureWorksGOCREATE TABLE Table_test_6_9 ( column_a INT) ;GOALTER TABLE Table_test_6_9 ADD column_b VARCHAR(20) NULL

34、 ; -1GOEXEC sp_help Table_test_6_9 ; -2GO6.2.4 刪除字段示例:本節(jié)列舉一個(gè)示例,使用ALTER TABLE DROP COLUMN修改數(shù)據(jù)表,從表中刪除一個(gè)數(shù)據(jù)列,具體操作請(qǐng)參考如下步驟。USE AdventureWorksGOCREATE TABLE Table_test_6_10 ( column_a INT, column_b VARCHAR(20) NULL) ;GOALTER TABLE Table_test_6_10 DROP COLUMN column_b ; GOEXEC sp_help Table_test_6_10 ; GODR

35、OP TABLE Table_test_6_10GO6.2.5 添加約束本節(jié)列舉多個(gè)示例分別使用ALTER TABLE為數(shù)據(jù)庫(kù)加入CHECK約束、DEFAULT約束等特性。1添加CHECK約束的示例2添加一個(gè)DEFAULT約束的示例3添加多個(gè)包含約束列的示例4添加FOREIGN KEY約束的示例添加CHECK約束CREATE TABLE Table_test_6_11 ( column_a INT) ;GOINSERT INTO Table_test_6_11 VALUES (-1) ; GOALTER TABLE Table_test_6_11 WITH NOCHECKADD CONSTRA

36、INT exd_check CHECK (column_a 1) ;GO添加DEFAULT約束-Table_test_6_12CREATE TABLE Table_test_6_12 ( column_a INT, column_b INT) ; GOINSERT INTO Table_test_6_12 (column_a) VALUES ( 7 ) ; GOALTER TABLE Table_test_6_12 ADD CONSTRAINT col_b_def DEFAULT 50 FOR column_b ; GO添加多個(gè)包含約束列CREATE TABLE Table_test_6_13

37、 ( column_a INT CONSTRAINT column_a_un UNIQUE) ;GOALTER TABLE Table_test_6_13 ADD column_b INT IDENTITY CONSTRAINT column_b_pk PRIMARY KEY, column_c INT NULL CONSTRAINT column_c_fk REFERENCES Table_test_6_13(column_a),column_d VARCHAR(16) NULL CONSTRAINT column_d_chk CHECK (column_d LIKE 0-90-90-9-0

38、-90-90-90-9 OR column_d LIKE (0-90-90-9) 0-90-90-9-0-90-90-90-9),column_e DECIMAL(3,3) CONSTRAINT column_e_default DEFAULT .222 ;GO添加FOREIGN KEY約束CREATE TABLE Table_test_6_14 (ContactID int) ;GOALTER TABLE Table_test_6_14 ADD CONSTRAINT FK_ContactBacup_Contact FOREIGN KEY (ContactID) REFERENCES Pers

39、on.Contact (ContactID) ; -1.增加FOREIGN KEY約束ALTER TABLE Table_test_6_14 DROP CONSTRAINT FK_ContactBacup_Contact ; -刪除該約束GO6.2.6 禁用/啟用CHECK約束在執(zhí)行一些特定操作(例如INSERT操作、UPDATE操作和復(fù)制處理)時(shí),實(shí)現(xiàn)禁用現(xiàn)有的CHECK約束,將極大提高導(dǎo)入數(shù)據(jù)等操作的執(zhí)行效率。USE AdventureWorks ;GOCREATE TABLE Table_test_6_15 ( id INT NOT NULL, name VARCHAR(10) NOT

40、NULL, salary MONEY NOT NULL CONSTRAINT salary_cap CHECK (salary 100000)- 1.驗(yàn)證插入數(shù)據(jù)INSERT INTO Table_test_6_15 VALUES (1,Joe Brown,65000)INSERT INTO Table_test_6_15 VALUES (2,Mary Smith,75000)- 2.違反約束.INSERT INTO Table_test_6_15 VALUES (3,Pat Jones,105000)- 3.禁用約束,并重試插入數(shù)據(jù)ALTER TABLE Table_test_6_15 NOCHECK CONSTRAINT salary_capINSERT INTO Table_test_6_15 VALUES (3,Pat Jones,105000)- 4.啟用約束,并重試插入數(shù)據(jù).ALTER TABLE Table_test_6_15 CHECK CONSTRAINT salary_capINSERT INTO Table_test_6_15 VALUES (4,Eric James,110

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論

0/150

提交評(píng)論