前言: 作为一个非开发出身的DBA刚开始对数据库的主键、外键等一系列的词很是困惑,到后面对主键(primary key)和唯一索引(Unique Index)又迷糊了很久,后面终于陆续整理清楚了,总结和大家分享下;
一、相似之处
- 创建主键的同时会创建一个唯一索引;
二、区别
- 主键是一种约束,目的是对这个表的某一列进行限制;
- 唯一索引是一种索引,索引是数据库表的一个冗余结构,目的是为了更好的查询;
- 主键列不允许为空值,而唯一性索引列允许空值;
- 一个表最多只能一个主键,但是可以包含多个唯一索引;
三、测试
测试步骤:
3.1 创建一个表
脚本:create table john as select * from dba_objects where 1=0;(拷贝表的结构)
3.2 创建主键,检查是否产生唯一索引和约束
脚本:ALTER TABLE john ADD CONSTRAINT john_PrimaryKey PRIMARY KEY (object_id); CREATE UNIQUE INDEX john_UniqueKey ON john (owner);
查找语句:
SELECT table_name,table_type,index_name,index_type,uniqueness
FROM DBA_INDEXES
WHERE TABLE_NAME='JOHN';
3.3 测试再创建唯一索引和主键
ALTER TABLE john ADD CONSTRAINT john_PrimaryKey_2 PRIMARY KEY (namespace); ---会报错误ORA-02260: 表只能具有一个主键
CREATE UNIQUE INDEX john_UniqueKey_2 ON john (timestamp); -----可以创建
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文作者:JOHN
ORACLE技术博客:ORACLE 猎人笔记 数据库技术群:367875324 (请备注ORACLE管理 )
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++