唯一约束

唯一约束

唯一约束的特点是在某一个列上的内容不允许出现重复,例如:现在要收集用户信息,假设包含编号、姓名、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);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RBnzIdgq-1580913595555)(C:\Users\016322605\Desktop\csdn\Oracle\捕获225.PNG)]

此时的代码出现了错误,错误提示为:

违反唯一约束条件(SCOTT.SYS_C0011856)

在Oracle之中约束本身也称为一个对象,只要你设置了约束,Oracle会自动创建与之相关的约束对象信息。既然是对象,那么所有的对象都会在数据字典之中进行保存,用户的约束的数据字典应该使用:

user_constains。

范例:查询user_constains数据字典

select owner,constraint_name,table_name from user_constraints;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w5m2p1W6-1580913595556)(C:\Users\016322605\Desktop\csdn\Oracle\捕获226.PNG)]

可以发现“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;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Tl4FHVx-1580913595557)(C:\Users\016322605\Desktop\csdn\Oracle\捕获228.PNG)]

所以,进行数据表的创建时,约束一定要设置名字。约束的名字绝对不能重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值