使用主鍵約束
主鍵不允許重復(fù)也不允許有空值
--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 用于強(qiáng)制非主鍵列的唯一性,我們可以將唯一約束定義在一個(gè)字段上也可以定義在多個(gè)字段上。
--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)
);
主鍵與唯一約束的相似點(diǎn)與不同點(diǎn):
相似點(diǎn):
在主鍵列或逐漸列的組合上不允許出現(xiàn)重復(fù)值,在被定義唯一性約束的列或列的組合上也不允許出現(xiàn)重復(fù)值,他們所在列都創(chuàng)建了一個(gè)唯一性索引。
不同點(diǎn):
在表里只能定義定義一個(gè)主鍵,但可以定義多個(gè)唯一約束,主鍵所在列不允許空值但唯一性約束列允許空值
使用非空約束
使用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
);
使用缺省約束
對(duì)有的字段可能不希望直接對(duì)其輸入值或者暫時(shí)不輸入,同時(shí)希望它自己能夠形成一個(gè)初始值或者有的字段值是取自其他地方這時(shí)候可以使用缺省約束。
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 '計(jì)算機(jī)及其相關(guān)'
);
使用檢查約束
為了避免輸入數(shù)據(jù)時(shí)候出現(xiàn)人為錯(cuò)誤,可以通過(guò)定義檢查約束的方法來(lái)解決(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值的長(zhǎng)度必須為
--userid值中最后一個(gè)字符必須 1、2、3或4
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注