外键
来源:互联网 发布:卷发护发精油知乎 编辑:程序博客网 时间: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