浅谈约束和索引
概念
约束 全称完整性约束,它是关系数据库中的对象,用来存放插入到一个表中一列数据的规则,用来确保数据的准确性和一致性。
索引 数据库中用的最频繁的操作是数据查询,索引就是为了加速表中数据行的检索而创建的一种分散的数据结构。可以把索引类比成书的目录,有目录的肯定比没有目录的书,更方便查找。
唯一约束 保证在一个字段或者一组字段里的数据都与表中其它行的对应数据不同。和主键约束不同,唯一约束允许为 NULL,只是只能有一行。
唯一索引 不允许具有索引值相同的行,从而禁止重复的索引或键值。
实践
mysql:
1、创建表t1和唯一约束:
CREATE TABLE t1 ( col1 INT(11), col2 VARCHAR(20), CONSTRAINT t1_uq UNIQUE (col1) );
2、创建表t2和唯一索引:
CREATE TABLE t2 ( col1 INT(11), col2 VARCHAR(20) ); CREATE UNIQUE INDEX t2_idx ON t2 (col1);
3、唯一约束和唯一索引只是概念不同,实质是相同的:
oracle:
直接说结论:1、索引是索引,约束是约束。创建唯一约束时,会自动创建唯一索引;创建唯一索引时,不会创建唯一约束。
2、允许在约束上建立外键,不允许在索引上建立外键。