汽车冷知识网站推荐 汽车冷知识大全集
8512023-09-09
大家好,Oracle 唯一索引列允许为null吗相信很多的网友都不是很明白,包括唯一索引为什么不建议也是一样,不过没有关系,接下来就来为大家分享关于Oracle 唯一索引列允许为null吗和唯一索引为什么不建议的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
本文目录
1、概念不同
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
唯一索引上的字段的数据只能是唯一的,而普通索引可以有重复数据
2、查询过程不同
对于普通索引来说,查找到满足条件的第一个记录(5,500)后,需要查找下一个记录,直到碰到第一个不满足k=5条件的记录。
对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索
3、更新过程不同
对于唯一索引来说,需要将数据页读入内存,判断到没有冲突,插入这个值,语句执行结束;
对于普通索引来说,则是将更新记录在changebuffer,语句执行就结束了。
如果出现了索引记录不唯一的提示,那一定是设置了主索引或者候选索引了。主索引要求,记录不能重复,而且记录不能为空。候选索引也一样。如果设置了,空白记录只能有一条。第二条就认为重复了。除非把主索引或候选索引去除。
Oracle的唯一索引列是否允许为null,取决于创建唯一索引时是否指定了NULLSALLOWED或NOTNULLS参数:
1.指定NULLSALLOWED:
允许唯一索引列为null值。此时如果存在多个行的索引列都为null,不会违反唯一性约束。
语法:
sql
CREATEUNIQUEINDEX索引名
ON表名(索引列名)NULLSALLOWED;
2.指定NOTNULL或没有指定NULL属性:
不允许唯一索引列为null值。此时唯一索引列中只能包含一个null值,会违反唯一性要求。
语法:
sql
CREATEUNIQUEINDEX索引名
ON表名(索引列名)NOTNULL;
1.主索引是候选索引的特例,能唯一标识一条记录,只能由一个字段组成。一个表只能建立一个主索引。
2.候选索引也能唯一标识一条记录,但不一定只由一个字段组成,可以由两个或两个以上字段组成,一个表可以建立多个候选索引。
3.普通索引就没有任何限制了,不能唯一标识一条记录,可以任意建立,数量不限。建立普通索引的主要目的是为了加快查询速度和建立表之间的联系。
4.唯一索引已经淘汰不用了,它的唯一性是指索引项的唯一而不是字段值的唯一。
好了,文章到这里就结束啦,如果本次分享的Oracle 唯一索引列允许为null吗和唯一索引为什么不建议问题对您有所帮助,还望关注下本站哦!