SqlServer基礎 約束

2022-02-16 18:01:30 字數 1351 閱讀 6415

為了減少輸入錯誤和保證資料庫資料的完整性,可以對欄位設定約束,例如考試成績,其範圍應該為0-100。約束是為了保證資料的完整性而實現的一套機制,約束包括:主鍵約束、外來鍵約束、unique約束、check約束、預設值和允許空六種機制。

主鍵約束:這個不用多說了,設定主鍵就是保證列中的值的唯一不重複。

外來鍵約束:外來鍵的目的就是為了限制取值。

例如:分類表category(nid-主鍵,categoryname),產品表product(nid,productname,categoryid-外來鍵),設定後product表中的categoryid的取值只能是category表中的nid的值。

如上圖,如果在product表中插入一條:insert into product values('綠茶',9),則報錯:

insert 語句與 foreign key 約束"fk_product_product"衝突。該衝突發生於資料庫"interview",表"dbo.category", column 'nid'。

語句已終止。

unique約束:是指定該欄位列裡的資料不允許出現重複。例如在部門表裡,部門名稱是不能重複的,那麼將部門表裡的「部門名稱」設定為unique約束。

設定方法如下:在表設計器窗格裡右擊空白處,在彈出的快捷選單中選擇【索引與鍵】選項,點選【新增】就會在左邊的框中新增乙個名為ix_表名的選項,然後在右邊的框中的【型別】選為唯一鍵,【列】設定為要約束的列,關閉,儲存即可。

unique約束與主鍵的區別:unique約束可以輸入null值,主鍵不能;在乙個表中可以定義多個unique約束的字段,而主鍵字段只能有乙個。

check約束:check約束可以用來限制欄位裡的值在某個允許的範圍內。例如員工通訊錄表中的生日,其輸入範圍應該是1940到1990之間。

設定check約束的方法如下:展開表選項,在約束上右鍵新建約束,然後在表示式中新增邏輯關係,如:(member>10) and (member<20),關閉,儲存!

預設值約束:預設值就不用解釋了,就是當沒有明確的去插入資料時,預設填充的值。

設定方法如下:開啟表設計,選中列,在下面的列屬性中有【預設值或繫結】,填寫值即可;

允許空約束:就是在設計表時,每乙個項最後的是否允許為空了啦

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 ...