一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索引来实施完整性约束。
接下来我们看看数据库中的主键约束、唯一键约束和唯一索引的区别。
SQL> select * from
v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise
Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 -
Production
CORE
11.2.0.1.0
Production
TNS for Linux: Version 11.2.0.1.0 -
Production
NLSRTL Version 11.2.0.1.0 -
Production
SQL> create table
test (
2 id int,
3 name
varchar2(20),
4 constraint
pk_test
primary
key(id))
5 tablespace
users;
Table created.
SQL> select
constraint_name, constraint_type from user_constraints;
CONSTRAINT_NAME
C
------------------------------
-
PK_TEST
P
在test表中,我们指定了ID列作为主键,Oracle数据库会自动创建一个同名的唯一索引:
SQL> select
index_name, index_type, uniqueness, tablespace_name
2 from
user_indexes
3 where
table_owner=SCOTT
4 and table_name =
TEST;
INDEX_NAME
INDEX_TYPE
UNIQUENES TABLESPACE_NAME
--------------------
-------------------- ---------
------------------------------
PK_TESTNORMAL