1. 程式人生 > 實用技巧 >SqlServer學習(1)--約束

SqlServer學習(1)--約束

1.主鍵 (PRIMARY KEY)

  語法: 

ALTER TABLE dbo.Employees
ADD CONSTRAINT PK_Employee
PRIMARY KEY(employid)

  注意事項:

    1.每個表只能定義一個主鍵

    2.主鍵不能為null

    3.主鍵值是唯一的,不能有重複.建立主鍵時,SqlServer會在幕後建立一個唯一索引(unique index).唯一索引是Sql Server為了實施唯一約束而採用的一種物理機制.也可以用索引(不一定是唯一索引)來加速查詢的處理,避免對整個表進行不必要的掃描(類似於圖書的索引).

2.外來鍵(FOREIGN KEY)

  語法:

ALTER TABLE dbo.Orders
ADD CONSTRAINT FR_Orders_Employee
FOREIGN KEY(employid)
REFERENCES dbo.Employees(employeeid)

  注意事項:

    1.外來鍵的目的是為了將外來鍵的值域限定為被引用列中的現有值.

    2.引用表中的關聯列必須為主鍵或者唯一約束的列,就是列必須唯一.

    3.當試圖刪除被引用表的的行,或更新被引用的候選鍵時,如果引用表中存在相關的行,則禁止操作.

3.唯一約束(UNIQUE CONTRAINT)

  語法:

ALTER TABLE dbo.Employees
ADD CONSTRAINT UNQ_Employee
UNIQUE(ssn)

  注意事項:

    1.一列(或一組列)資料唯一.

    2.與主鍵不同,可以為多個列設定唯一約束,且列沒要求為not null.

4.檢查約束(Check)

  語法:

ALTER TABLE dbo.Employees
ADD CONSTRAINT Check_Employee_Salary
check(salary > 5000)

  注意事項:

    1.目的是為了向表中插入一條資料或者修改資料之前,必須滿足一定的謂詞條件.  

5.DEFAULT約束

  語法:

ALTER TABLE dbo.Employees
ADD CONSTRAINT DEF_Employee_CREATETIME
DEFAULT(CURRENT_TIMESTAMP) FOR CTEATETIME
--CURRENT_TIMESTAMP就是獲取當前的時間

  注意事項:

    1.當插入一條資料時,沒有屬性的話,設定為預設值