使用主键约束
主键不允许重复也不允许有空值
--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
新闻热点
疑难解答