唯一约束
唯一约束的特点是在某一个列上的内容不允许出现重复,例如:现在要收集用户信息,假设包含编号、姓名、email邮箱,很明显email的数据不可能重复,所以就可以使用UNIQUE约束完成。
范例:使用唯一约束
范例:保存正确的数据
INSERT INTO member(mid,name,email) values (5,'貂蝉',hello@qq.com);
范例:保存重复的数据
INSERT INTO member(mid,name,email) values (6,'鲁班',hello@qq.com);
此时的代码出现了错误,错误提示为:
违反唯一约束条件(SCOTT.SYS_C0011856)
在Oracle之中约束本身也称为一个对象,只要你设置了约束,Oracle会自动创建与之相关的约束对象信息。既然是对象,那么所有的对象都会在数据字典之中进行保存,用户的约束的数据字典应该使用:
user_constains。
范例:查询user_constains数据字典
select owner,constraint_name,table_name from user_constraints;
可以发现“user_constraints”数据字典只是告诉用户约束属于那张表,并没有告诉用户约束具体属于哪个列,此时利用另外一个数据字典:“user_cons_columns”
范例:查询"user_cons_columns"数据字典
select owner,constraint_name,table_name,column_name from user_cons_columns;
唯一约束并不能像非空约束那样,可以很明确的告诉用户是哪个列上出现问题,可以采用“约束简写_字段”,例如:唯一约束的简写是:“UK”,那么现在是在email字段上设置了唯一约束,所以可以使用“uk_email”来作为约束的名字,如果要指定名字,则必须在约束创建的时候完成,利用:CONSTRAINT关键字定义。
范例:创建唯一约束,同时设置约束名称
--删除数据表
DROP TABLE member PURGE;
--清空回收站
PURGE RECYCLEBIN;
--创建数据表
CREATE TABLE member(
mid NUMBER,
name VARCHAR2(20) NOT NULL,
eamil VARCHAR2(20),
CONSTRAINT uk_email UNIQUE(email)
);
--测试数据
INSERT INTO member(mid,name) values (1,'韩信');
INSERT INTO member(mid,name) values (2,'李白');
--提交事务
COMMIT;
所以,进行数据表的创建时,约束一定要设置名字。约束的名字绝对不能重复。