SQL Server 約束大全

2021-09-13 23:40:44 字數 2548 閱讀 7202

約束的作用:主要用來保證資料的正確性和完整性。

sql server的主要約束有:主鍵約束(primary key constraint)、唯一性約束(unique constraint)、檢查性約束(check constraint)、預設約束(default constraint)和外來鍵約束(foreign key constraint)。

①     主鍵約束

主鍵約束指的是我們可以在表中定義乙個字段作為表的主要關鍵字,主鍵是表中記錄的唯一性標識,每個表中只允許乙個primary key 約束,並且作為primary key約束的字段不允許空值。如果乙個表中有著多個列作為主鍵約束,則一列中的值可以是重複的,但是被主鍵約束列中的組合值一定要是唯一存在的。

操作圖:

②     唯一性約束

用唯一性約束防止重複資料

唯一性約束(unique)可以確保資料表在除主鍵列中字段的唯一性。例如在員工資訊表中需要錄入所有員工的手機號碼,然而並不可能有兩位員工的手機號碼是相同的,此時我們可以對手機號碼進行唯一性約束的設定。使用唯一性約束要注意幾點要素:

a.    unique約束是允許空值的。

b.    unique約束可以在乙個資料表中設立多個。

c.    使用unique約束的字段會建立唯一性索引。

d.    在預設情況下unique約束建立的是非聚集索引。

操作圖:

③     檢查性約束

檢查性約束是對錄入到資料表中的資料所設定的檢查條件,以限制輸入值,用於保證資料庫的完整性。通過邏輯表示式來對字段的值進行輸入內容的限定,例如,在員工表中定義了乙個age欄位,我們需要把這個欄位所錄入的內容限定在乙個合理及合法的範圍內,比如18到70歲之間,我們可以通過邏輯表示式age > 18 and age <= 70來進行判斷,邏輯表示式會返回true或false兩個值,用來表示符合約束條件和不符合約束條件兩種情況。使用檢查約束要注意幾點:

a.    在對列進行約束限制時只能與字段有關;在對錶進行約束限定時只能與限制表中的字段有關。

b.    在資料表中可以對多個列進行檢查約束的設定。

c.    在使用create table 時只能對每個字段設定乙個檢查約束。

d.    在表中對多個字段進行的檢查約束則為表級約束。

e.    檢查約束將在資料表進行insert和update操作時對資料進行驗證。

f.    設定檢查約束的時候不能包含子查詢。

操作圖:

注意:包括隱式或顯示資料型別轉換的約束可能會導致某些資料操作失敗。例如:為表定義的作為分割槽切換的源的此類約束可能會導致alter table...switch操作失敗。在約束定義中避免資料型別轉換。

④     預設約束

預設約束是指當某一欄位沒有提供資料內容時,系統自動給該字段賦予乙個設定好的值。當必須向表中載入一行資料單不知道某一字段值的值,或該值不存在時可以使用預設約束。預設約束可以使用常量、函式、空值作為預設值。使用預設約束時需要注意以下幾點:

a.    每個字段只能有乙個預設約束。

b.    如果預設約束設定的值大於欄位所允許的長度,則擷取到字段允許長度。

c.    不能加入到帶有identity屬性或timestamp的字段上。

d.    如果欄位的資料型別為使用者自定義型別,而且已有預設值繫結在此資料型別上,則不允許再次使用預設值。

⑤     外來鍵約束

外來鍵約束是在兩個表中的資料之間建立和加強鏈結的一列或多列的組合,可控制在外鍵表中儲存的資料。在外鍵引用中,當包含乙個表的主鍵值的乙個或多個列被另乙個表中的乙個或多個列引用時,就在這兩個表之間建立了鏈結。使用外來鍵約束注意以下幾點:

a.    外來鍵約束是對字段參照完整性的設定

b.    外來鍵約束不支援自動建立索引,需要手動建立

c.    表中最多可以使用31個外來鍵約束

d.    臨時表中不能建立外來鍵約束

e.    主鍵和外來鍵的資料型別必須嚴格匹配

Sql Server 約束查詢

主鍵約束 select tab.name as 表名 idx.name as 主鍵名稱 col.name as 主鍵列名 from sys.indexes idx join sys.index columns idxcol on idx.object id idxcol.object id and ...

新增sql server約束

新增主鍵約束 alter table 表名 add constraint 約束名 primary key 主鍵 新增唯一約束 alter table 表名 add constraint 約束名 unique 字段 新增預設約束 alter table 表名 add constraint 約束名 de...

sql server 約束 查詢

fk 外來鍵 主鍵約束 select tab.name as 表名 idx.name as 主鍵名稱 col.name as 主鍵列名 from sys.indexes idx join sys.index columns idxcol on idx.object id idxcol.object ...