oracle 主键和外键的区别

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

alter table 表名 add constraint 主键名 primary key(字段名1,字段名2,......字段名n);

外键(foreign key)是用于表达两个表数据之间的关系,将表中主键字段添加到另一个表中,再创建两个表之间的约束关系,这些字段就成为第二个表的外键。

外键的作用

合理的数据结构设计,表中的数据一定有一致性约束,使用外键,让数据库去约束数据的一致,不给任何人出错的机会。不用外键会怎样?不用也不会怎么样,如果不用外键,在程序中要写代码进行判断,手工操作数据时也必须处处小心。
外键约束

当对从表进行操作时,数据库会:

向从表插入新记录时,如果外键值在主表中不存在,阻止插入。

修改从表的记录时,如果外键的值在主表中不存在,阻止修改。

当对主表进行修改操作时,数据库会:

主表修改主键值时,旧值在从表里存在便阻止修改。

当对主表进行删除操作时,数据库会(三选一):

a)主表删除行时,其主键值在从表里存在便阻止删除。

b)主表删除行时,连带从表的相关行一起删除。

c)主表删除行时,把从表相关行的外键字段置为null。

创建外键

alter table 从表名
   add constraint 外键名 foreign key (从表字段列表)
      references 主表名 (主表字段列表)
      [on delete cascade|set null];

删除外键

alter table 从表名 drop constraint 外键名;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值