主外键约束

主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

constraint  a_b foreign key(Kno) references  Key1

a_b约束名   ,  Kno外键    ,Key1 主键在的表

分insert , update ,alter 三大法则

insert 时 ,能插了主键的才能 插入 外键的

update时 ,主外键有相同的值时候,不能修改。没有时,主键可以改其他,外键可以改已经存在的主键值

delete时, 能 删除 外键的才能 删 主键的(有点倒过来的味道吧

约束的add 和 drop

alter table key2--消除了外键约束,上面的语句都可以执行
drop constraint K_k

alter table key2  --通过这个把外键约束加回来,上面的语句又不可以用了
add constraint K_k foreign key(Kno) references key1

 

全部测试代码如下

create table key1( --定义两个表
Kno int primary key,
Ksex char(5))

create table Key2(
Kmo int primary key,
Kno int,
constraint K_k foreign key(Kno) references key1)

insert   --抛出错误,有外键,不能直接插入,要在主键那里先插入
into Key2
values(12,12)

insert   --现在先执行了这行,然后执行上面那行就没有问题了
into Key1
values(12,'b')

update key2--修改无关的值,可以
set kmo=0

update key2--修改外键,不可以
set kno=2

update key1--修改主键,也不可以
set kno=2

alter table key2--消除了外键约束,上面的语句都可以执行
drop constraint K_k

alter table key2  --通过这个把外键约束加回来,上面的语句又不可以用了
add constraint K_k foreign key(Kno) references key1

delete --删除主键是不可以
from key1
where kno='12'

delete --删除外键的却可以
from key2
where kno='12'

 

posted on 2016-09-27 15:05  Kooing  阅读(893)  评论(1编辑  收藏  举报

导航