外键

来源:互联网 发布:卷发护发精油知乎 编辑:程序博客网 时间:2024/05/16 17:25

1、外键:如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的。

例如:create table t_group (       id int not null,       name varchar(30),       primary key (id)   );  insert into t_group values (1, 'Group1');   insert into t_group values (2, 'Group2');create table t_user (       id int not null,       name varchar(30),       groupid int,       primary key (id),       foreign key (groupid) references t_group(id) on delete cascade on update cascade  );  insert into t_user values (1, 'qianxin', 1); --可以插入   insert into t_user values (2, 'yiyu', 2);    --可以插入   insert into t_user values (3, 'dai', 3);    --错误,无法插入,用户组3不存在,与参照完整性约束不符 insert into t_user values (1, 'qianxin', 1);   insert into t_user values (2, 'yiyu', 2);   insert into t_user values (3, 'dai', 2);   delete from t_group where id=2;              --导致t_user中的2、3记录级联删除   update t_group set id=2 where id=1;          --导致t_user中的1记录的groupid级联修改为2 
2、外键表、主键表
如:
表1属性有:typeid(主键),type表2属性有:goodid(主键),typeid(外键,引用表1中的typeid)
表1是主键表、表1的主键字段在表2中做外键、而表1自己却没有外键表2是外键表有一个依赖表1typeid的字段、作为外键、取值必须是其依赖主键表表1中主键字段有的值
3、主键和外键的作用:

   外键取值规则:空值或参照的主键值。

(1)插入非空值时,如果主键表中没有这个值,则不能插入。

(2)更新时,不能改为主键表中没有的值。

(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。

(4)更新主键记录时,同样有级联更新和拒绝执行的选择。

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

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

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

5、主键、外键和索引的区别

定义:

 主键--唯一标识一条记录,不能有重复的,不允许为空

 外键--表的外键是另一表的主键外键可以有重复的可以是空值

 索引--该字段没有重复值,但可以有一个空值

 作用:

 主键--用来保证数据完整性

 外键--用来和其他表建立联系用的

 索引--是提高查询排序的速度

 个数:

 主键--主键只能有一个

 外键--一个表可以有多个外键

 索引--一个表可以有多个唯一索引

附:sql建立外键的步骤

http://jingyan.baidu.com/article/5225f26b05a25de6fa0908ae.html

0 0
原创粉丝点击