版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、5.2.2 創(chuàng)建約束,約束是SQL Server提供的自動保持數(shù)據(jù)庫完整性的一種方法,它通過限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來保證數(shù)據(jù)的完整性。在SQL SERVER中,對于基本表的約束分為列約束和表約束。 列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;表約束與列定義相互獨立,不包括在列定義中,通常用于對多個列一起進行約束,與列定義用,分隔,定義表約束時必須指出要約束的那些列的名稱。 完整性約束的基本語法格式為: CONSTRAINT constraint_name(約束名) 約束不指定名稱時,系統(tǒng)會給定一個名稱。 在SQL Ser
2、ver 2005中有6種約束:主鍵約束(primary key constraint)、惟一性約束(unique constraint)、檢查約束(check constraint)、默認約束(default constraint)、外部鍵約束(foreign key constraint)和空值(NULL)約束。,5.2.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 PRIMARY KEY約束用于定義基本表的主鍵,它是惟一確定表中每一條記錄的標識符,其值不能為NULL,也不能重復,以此來保證實體的完整性。PRIMARY KEY與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取
3、值的唯一性,但它們之間存在著很大的區(qū)別: 在一個基本表中只能定義一個PRIMARY KEY約束,但可定義多個UNIQUE約束; 對于指定為PRIMARY KEY的一個列或多個列的組合,其中任何一個列都不能出現(xiàn)空值,而對于UNIQUE所約束的唯一鍵,則允許為空。 注意:不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。 PRIMARY KEY既可用于列約束,也可用于表約束。,5.2.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 主鍵的創(chuàng)建操作方法有兩種:SQL Server管理平臺操作法和Transact-SQL語句操作法。 (1) SQL Server管理平臺
4、操作法,如圖5-7所示。,圖5-7 選擇多個字段共同做為主鍵對話框,5.2.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 (2)使用Transact-SQL語句操作法設(shè)置主鍵約束,其語法形式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column_name) PRIMARY KEY用于定義表約束時,即將某些列的組合定義為主鍵,其語法格式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column_name,n),5.
5、2.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 例5-5 建立一個SC表,定義SNO,CNO共同組成SC的主鍵 程序清單如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL, CNO CHAR(5) NOT NULL, SCORE NUMERIC(3), CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO),5.2.2 創(chuàng)建約束,2. 惟一性約束 惟一性約束用于指定一個或者多個列的組合值具有惟一性,以防止在列中輸入重復的值。定義了UNIQUE約束的那些列稱為唯一鍵,系統(tǒng)自動為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一性。 當使用惟一
6、性約束時,需要考慮以下幾個因素: 使用惟一性約束的字段允許為空值; 一個表中可以允許有多個惟一性約束; 可以把惟一性約束定義在多個字段上; 惟一性約束用于強制在指定字段上創(chuàng)建一個惟一性索引; 默認情況下,創(chuàng)建的索引類型為非聚集索引。,5.2.2 創(chuàng)建約束,2. 惟一性約束 創(chuàng)建惟一性約束的方法有兩種:通過SQL Server管理平臺可以完成創(chuàng)建和修改惟一性約束的操作;使用Transact-SQL語句完成惟一性約束的操作。 (1)通過SQL Server管理平臺可以完成創(chuàng)建和修改惟一性約束的操作,如圖5-8所示。,圖5-8 創(chuàng)建惟一性約束對話框,5.2.2 創(chuàng)建約束,2. 惟一性約束 (2)使用
7、Transact-SQL語句完成惟一性約束的操作,其語法形式如下: CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED (column_name,n) 例5-6創(chuàng)建一個學生信息表,其中name字段具有惟一性。 程序清單如下: Create table student( id char(8), name char(10), sex char(2), constraint pk_id primary key(id), constraint uk_identity unique(name) ),5.2.2 創(chuàng)建約束,3. 檢查約束 檢查約
8、束對輸入列或者整個表中的值設(shè)置檢查條件,以限制輸入值,保證數(shù)據(jù)庫數(shù)據(jù)的完整性。 當使用檢查約束時,應(yīng)該考慮和注意以下幾點: 一個列級檢查約束只能與限制的字段有關(guān);一個表級檢查約束只能與限制的表中字段有關(guān); 一個表中可以定義多個檢查約束; 每個CREATE TABLE語句中每個字段只能定義一個檢查約束; 在多個字段上定義檢查約束,則必須將檢查約束定義為表級約束; 當執(zhí)行INSERT語句或者UPDATE語句時,檢查約束將驗證數(shù)據(jù); 檢查約束中不能包含子查詢。,5.2.2 創(chuàng)建約束,3. 檢查約束 創(chuàng)建檢查約束常用的操作方法有如下兩種 :使用SQL Server管理平臺創(chuàng)建檢查約束;用Transac
9、t-SQL語句創(chuàng)建檢查約束。 (1)使用SQL Server管理平臺創(chuàng)建檢查約束,如圖5-9所示。,圖5-9 創(chuàng)建檢查約束對話框,5.2.2 創(chuàng)建約束,3. 檢查約束 (2)用Transact-SQL語句創(chuàng)建檢查約束。 用Transact-SQL語句創(chuàng)建檢查約束。其語法形式如下: CONSTRAINT constraint_name CHECK NOT FOR REPLICATION (logical_expression) 例5-8 建立一個SC表,定義SCORE 的取值范圍為0到100之間。 程序清單如下: CREATE TABLE SC (SNO CHAR(5), CNO CHAR(5)
10、, SCORE NUMERIC(5,1) CONSTRAINT SCORE_CHK CHECK(SCORE=0 AND SCORE =100),5.2.2 創(chuàng)建約束,4. 默認(DEFAULT)約束 默認約束指定在插入操作中如果沒有提供輸入值時,則系統(tǒng)自動指定值。默認約束可以包括常量、函數(shù)、不帶變元的內(nèi)建函數(shù)或者空值。 使用默認約束時,應(yīng)該注意以下幾點: (1)每個字段只能定義一個默認約束; (2)如果定義的默認值長于其對應(yīng)字段的允許長度,那么輸入到表中的默認值將被截斷; (3)不能加入到帶有IDENTITY屬性或者數(shù)據(jù)類型為timestamp的字段上; (4)如果字段定義為用戶定義的數(shù)據(jù)類型
11、,而且有一個默認綁定到這個數(shù)據(jù)類型上,則不允許該字段有默認約束。,5.2.2 創(chuàng)建約束,4. 默認(DEFAULT)約束 創(chuàng)建默認約束常用的操作方法有如下兩種:使用SQL Server管理平臺創(chuàng)建默認約束;創(chuàng)建默認約束的Transact-SQL語句操作法。 (1)使用SQL Server管理平臺創(chuàng)建默認約束,如圖5-10所示。,圖5-10 創(chuàng)建默認約束對話框,5.2.2 創(chuàng)建約束,4. 默認(DEFAULT)約束 (2)創(chuàng)建默認約束的Transact-SQL語句操作法。其語法形式如下: CONSTRAINT constraint_name DEFAULT constraint_expressi
12、on FOR column_name 例5-10為 dept字段創(chuàng)建默認約束。 程序清單如下: constraint con_dept default 計算機 for dept,5.2.2 創(chuàng)建約束,5. 外部鍵約束 外鍵 (FOREIGN KEY) 是用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列。外部鍵約束用于強制參照完整性。 當使用外部鍵約束時,應(yīng)該考慮以下幾個因素: 外部鍵約束提供了字段參照完整性; 外部鍵從句中的字段數(shù)目和每個字段指定的數(shù)據(jù)類型都必須和REFERENCES從句中的字段相匹配; 外部鍵約束不能自動創(chuàng)建索引,需要用戶手動創(chuàng)建; 用戶想要修改外部鍵約束的數(shù)據(jù),必須有對外部鍵
13、約束所參考表的SELECT權(quán)限或者REFERENCES權(quán)限; 參考同一表中的字段時,必須只使用REFERENCES子句,不能使用外部鍵子句; 一個表中最多可以有31個外部鍵約束; 在臨時表中,不能使用外部鍵約束; 主鍵和外部鍵的數(shù)據(jù)類型必須嚴格匹配,5.2.2 創(chuàng)建約束,5. 外部鍵約束 創(chuàng)建外部鍵約束常用的操作方法有如下兩種:在SQL Server管理平臺中添加外部鍵約束;使用Transact-SQL語句設(shè)置外部鍵約束。 (1)在SQL Server管理平臺中添加外部鍵約束,在SQL Server管理平臺中添加外部鍵約束。如圖5-11,5-12所示。,圖5-11 選擇創(chuàng)建外鍵約束的字段,圖5
14、-12 創(chuàng)建外鍵約束對話框,5.2.2 創(chuàng)建約束,5. 外部鍵約束 (2)使用Transact-SQL語句設(shè)置外部鍵約束 ,其語法形式如下: CONSTRAINT constraint_name FOREIGN KEY (column_name,n) REFERENCES ref_table (ref_column,n) 例5-11 建立一個SC表,定義SNO,CNO為SC的外部鍵。 程序清單如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO), CNO CHAR(5)
15、 NOT NULL CONSTRAINT C_FORE FOREIGN KEY REFERENCES C(CNO), SCORE NUMERIC(3), CONSTRAINT S_C_PRIM PRIMARY KEY (SNO,CNO),5.2.2 創(chuàng)建約束,6. 空值(NULL)約束 空值(NULL)約束用來控制是否允許該字段的值為NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不確定”或“沒有數(shù)據(jù)”的意思。 當某一字段的值一定要輸入才有意義的時候,則可以設(shè)置為NOT NULL。如主鍵列就不允許出現(xiàn)空值,否則就失去了唯一標識一條記錄的作用。
16、空值(NULL)約束只能用于定義列約束。 創(chuàng)建空值(NULL)約束常用的操作方法有如下兩種: (1)在SQL Server管理平臺中添加空值(NULL)約束; (2)使用Transact-SQL語句設(shè)置空值(NULL)約束。,5.2.2 創(chuàng)建約束,6. 空值(NULL)約束 (1)在SQL Server管理平臺中添加空值(NULL)約束。如圖5-14所示。,圖5-14設(shè)置空值(NULL)約束對話框,5.2.2 創(chuàng)建約束,6. 空值(NULL)約束 (2)使用Transact-SQL語句設(shè)置空值(NULL)約束, 其語法形式如下: CONSTRAINT NULL|NOT NULL 例5-13 建
17、立一個S表,對SNO字段進行NOT NULL約束。 程序清單如下: CREATE TABLE S (SNO CHAR(10) CONSTRAINT S_CONS NOT NULL, SN VARCHAR(20), AGE INT, SEX CHAR(2) DEFAULT 男 , DEPT VARCHAR(20),5.2.3 修改表,當數(shù)據(jù)庫中的表創(chuàng)建完成后,可以根據(jù)需要改變表中原先定義的許多選項,以更改表的結(jié)構(gòu)。用戶可以增加、刪除和修改列,增加、刪除和修改約束,更改表名以及改變表的所有者等。 1、修改列屬性 修改列屬性包括以下一些內(nèi)容: (1)修改列的數(shù)據(jù)類型; (2)修改列的數(shù)據(jù)長度; (3)修改列的精度; (4)修改列的小數(shù)位數(shù); (5)修改列的為空性。,5.2.3 修改表,2、添加和刪除列 在SQL Server 2005中,如果列允許空值或?qū)α袆?chuàng)建 DEFAULT 約束,則可以將列添加到現(xiàn)有表中。將新列添加到表時,SQL Server 2005數(shù)據(jù)庫引擎在該列為表中的每個現(xiàn)有數(shù)據(jù)行插入一個值。因此,在向表中添加列時向列添加DEFAULT定義會很有用。如果新列沒有 DEFAULT定義,則必須指定該列允許空值。數(shù)據(jù)庫引擎將空值插入該列,如果新列不允許空值,則返回錯誤。 反之,可以刪除現(xiàn)有表中的列,但具有下列特征的列不能被刪除: (1)用于索引; (2)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級上學期語文第一次月考試卷-6
- 楚雄彝族自治州八年級上學期語文期末試題
- 雇人干活免責協(xié)議書(2篇)
- 音樂課件制作教學課件
- 統(tǒng)計分析軟件模擬試題二及答案
- 南京工業(yè)大學浦江學院《太極推手》2022-2023學年第一學期期末試卷
- XX制藥活動中心消防水施工組織設(shè)計
- 飛向藍天的恐龍說課稿
- 《自相矛盾》說課稿
- 《因式分解》說課稿
- 消防安全培訓內(nèi)容
- 2024-2030年辣椒種植行業(yè)市場深度分析及發(fā)展策略研究報告
- 變電站綠化維護施工方案
- 校園展美 課件 2024-2025學年人美版(2024)初中美術(shù)七年級上冊
- 2024版《糖尿病健康宣教》課件
- ktv保安管理制度及崗位職責(共5篇)
- 腦出血試題完整版本
- 義務(wù)教育信息科技課程標準(2022年版)考試題庫及答案
- 建筑施工安全生產(chǎn)責任書
- 新員工三級安全教育考試試題參考答案
- 公司年會策劃及執(zhí)行服務(wù)合同
評論
0/150
提交評論