使用主鍵約束
主鍵不允許重復也不允許有空值
--1單字段主鍵
IF OBJECT_ID ('testtable', 'U') IS NOT NULL DROP TABLE testtable;
CREATE TABLE testtable
(
col1 varchar(10),
col2 int,
col3 datetime,
col4 numeric(10,2),
col5 xml,
col6 image,
primary key(col1)
);
--2多字段主鍵 IF OBJECT_ID ('testtable', 'U') IS NOT NULL DROP TABLE testtable;
CREATE TABLE testtable
(
col1 varchar(10),
col2 int,
col3 datetime,
col4 numeric(10,2),
col5 xml,
col6 image,
primary key(col1,col2,col3)
);
使用唯一性約束
唯一unique 用于強制非主鍵列的唯一性,我們可以將唯一約束定義在一個字段上也可以定義在多個字段上。
--1單字段唯一約束
IF OBJECT_ID ('testtable', 'U') IS NOT NULL DROP TABLE testtable;
CREATE TABLE testtable
(
col1 char(10),
col2 int,
col3 float,
unique(col1)
);
--2多字段唯一約束
IF OBJECT_ID ('testtable', 'U') IS NOT NULL DROP TABLE testtable;
CREATE TABLE testtable
(
col1 char(10),
col2 int,
col3 float,
unique(col1,col2)
);
主鍵與唯一約束的相似點與不同點:
相似點:
在主鍵列或逐漸列的組合上不允許出現重復值,在被定義唯一性約束的列或列的組合上也不允許出現重復值,他們所在列都創建了一個唯一性索引。
不同點:
在表里只能定義定義一個主鍵,但可以定義多個唯一約束,主鍵所在列不允許空值但唯一性約束列允許空值
使用非空約束
使用NOT NULL約束的字段其值不允許為空(NULL)
IF OBJECT_ID ('testtable', 'U') IS NOT NULL DROP TABLE testtable;
CREATE TABLE testtable
(
col1 char(10)NOT NULL UNIQUE, -- 非空約束和唯一性約束
col2 int NOT NULL, -- 非空約束
col3 float
);
使用缺省約束
對有的字段可能不希望直接對其輸入值或者暫時不輸入,同時希望它自己能夠形成一個初始值或者有的字段值是取自其他地方這時候可以使用缺省約束。
IF OBJECT_ID ('usertable', 'U') IS NOT NULL DROP TABLE usertable;
CREATE TABLE usertable
(
username varchar(20),
loginuser varchar(10) DEFAULT user,
logintime datetime DEFAULT getdate(),
uservocation varchar(50) DEFAULT '計算機及其相關'
);
使用檢查約束
為了避免輸入數據時候出現人為錯誤,可以通過定義檢查約束的方法來解決(check)
IF OBJECT_ID ('testtable', 'U') IS NOT NULL DROP TABLE testtable;
CREATE TABLE testtable
(
userid varchar(10) CHECK(userid LIKE '[a-z]%[1-4]' AND DATALENGTH(userid)=5),
-- age值不能為0
--userid值的長度必須為
--userid值中最后一個字符必須 1、2、3或4
新聞熱點
疑難解答