SqlServer學習(1)--約束
阿新 • • 發佈:2020-09-10
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.當插入一條資料時,沒有屬性的話,設定為預設值