目录
参考源
- 简单教程
- 菜鸟教程
SQL unique 约束
-
SQL
unique
约束
用于防止一个表中出现重复记录
-
unique
和
primary key
约束均为列或列集合提供了唯一性的保证 -
primary key
约束会自动定义一个
unique
约束,或者说
primary key
是一种特殊的
unique
约束但二者是有明显区别的:
每个表可以有多个
unique
约束,但只能有一个
primary key
约束
create table时的 SQL not null 约束
在创建表结构时,可以使用
unique
关键字给表添加
unique
约束
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE lesson (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(32) default '',
views int(11) NOT NULL default 0,
created_at DATETIME,
UNIQUE(name)
);
如果想要多加多列,可以在括号内添加列,并使用逗号 (
,
) 分隔
CREATE TABLE lesson (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(32) default '',
views int(11) NOT NULL default '0',
created_at DATETIME,
UNIQUE(name,id)
);
如果还想给
unique
约束命名,可以使用
constraint
关键字
CREATE TABLE lesson (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name varchar(32) default '',
views int(11) NOT NULL default '0',
created_at DATETIME,
CONSTRAINT uniq_lession_name UNIQUE(name,id)
);
alter table 时的 SQL not null 约束
如果表已经被创建,而又想添加
unique
约束,可以使用
alter table add
命令
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE lesson ADD UNIQUE (name);
当然了,
unique
可以包含多列,添加方法就和建表时添加多列是同样的
ALTER TABLE lesson ADD UNIQUE (id,name);
如果还想给
unique
约束命名,可以使用
constraint
关键字
ALTER TABLE lesson ADD CONSTRAINT uniq_lesson_name UNIQUE (id,name);
删除 unique 约束
如果想要删除
unique
约束,可以使用
alter table drop
命令
MySQL
ALTER TABLE lesson DROP {INDEX | key} uniq_lesson_name;
SQL Server / Oracle / MS Access
ALTER TABLE lesson DROP CONSTRAINT uniq_lesson_name;