Oracle:主外键详解

一:简介

1、主键:唯一标识一条记录,不能有重复的,不允许为空;用来保证数据完整性;主键只能有一个。
2、外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值;用来和其他表建立联系用的;一个表可以有多个外键。
3、索引:该字段没有重复值,但可以有一个空值;是提高查询排序的速度;一个表可以有多个唯一索引。

二:创建主外键

1、表中创建主外键:

create table T_SCORE (
       EXAM_SCORE  number(5,2),
       EXAM_DATE   date,
       AUTOID      number(10)   not null,
       STU_ID      char(5),
       SUB_ID      char(3),
       constraint PK_T_SCORE primary key (AUTOID),
       constraint FK_T_SCORE_REFE foreign key (STU_ID) references T_STU (STU_ID)
)

 2、表外增添主外键:

-增加主键
alter table 表名 add constraint 主键名 primary key (字段名1);
 
-增加外键:
alter table 表名 add constraint 外键名 foreign key (字段名1) references 关联表 (字段名2);

 

三:主外键关联查询

  user_constraints    是表约束的视图。
  user_cons_columns    是表约束字段的视图
  (一般通过owner,constraint_name,table_name进行关联)

select a.owner 主键拥有者,
       a.table_name 主键表,
       c.column_name 主键列,
       a.constraint_name 主键名称,
       b.owner 外键拥有者,
       b.table_name 外键表,
       d.column_name 外键列,
       b.constraint_name 外键名称
  from user_constraints  a,
       user_constraints  b,
       user_cons_columns c,
       user_cons_columns d
 where a.constraint_type = 'P'
   and b.constraint_type = 'R'
   and a.constraint_name = c.constraint_name
   and b.constraint_name = d.constraint_name
   and a.owner = c.owner
   and b.owner = d.owner
   and a.table_name = c.table_name
   and b.table_name = d.table_name;

 

posted @ 2022-01-13 09:34  IT6889  阅读(1479)  评论(0编辑  收藏  举报