唯一约束,其特点是:
不允许表中有重复记录;
允许表中有NULL记录;
创建唯一约束后,系统将自动创建唯一索引;
-- 创建数据表时添加列级唯一约束 CREATE TABLE t7( id SMALLINT UNSIGNED PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, email VARCHAR(30) NOT NULL UNIQUE KEY ); DESC t7;
-- 创建数据表时添加表级唯一约束 CREATE TABLE t8( id SMALLINT UNSIGNED PRIMARY KEY, username VARCHAR(20) NOT NULL, clASses VARCHAR(20) NOT NULL, UNIQUE KEY (username,clASses) ); DESC t8;
-- 创建表时,添加唯一约束 CREATE TABLE word05( id INT(8) PRIMARY KEY, name VARCHAR(30) UNIQUE, sex CHAR(3), age INT(3), email VARCHAR(50), address VARCHAR(50) ); DESC word05; INSERT INTO word05 VALUES(1,'rose','女',25,'rose@164.com','北京'); INSERT INTO word05 VALUES(2,'rose','男',20,'rose1@164.com','北京1');---错误 INSERT INTO word05(id,sex,age,email,address) VALUES(3,'男',20,'jack@164.com','上海');
语法格式:
ALTER TABLE 表名 ADD UNIQUE(列名1,列名2,.....列名n);
-- 修改word05表,对email列添加唯一约束,并验证 ALTER TABLE word05 ADD UNIQUE(email); DESC word05;
-- 修改word05表,对address列添加唯一约束,并验证 ALTER TABLE word05 ADD UNIQUE(address); DESC word05;
语法格式:
ALTER TABLE 表名 DROP INDEX KEY_name值;
-- 查看KEY_name值格式: SHOW KEYS FROM 表名;
-- 删除word05表中,name列上的唯一约束,并验证 -- (1) 查看name列对应的KEY_name值 SHOW KEYS FROM word05; --name -- (2)根据语法格式删除 ALTER TABLE word05 DROP INDEX name; -- (3)验证 DESC word05;
-- 删除word05表中,email列上的唯一约束,并验证 SHOW KEYS FROM word\G; -email ALTER TABLE word05 DROP INDEX email; DESC word05;
每张数据表只能有一个主键约束;但是可以存在多个唯一约束;
主键约束不能为空;唯一约束可以为空;