扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
外键约束对父表的含义:
创新互联主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、自适应网站建设、程序开发、网站优化、微网站、成都小程序开发等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都做网站、成都网站设计、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下
. cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用
. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null
On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用
. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
这个是ANSI SQL-92标准,从mysql4.0.8开始支持
. Restrict方式
同no action, 都是立即检查外键约束
不知道这文章对你有没有帮助!
定义外键的方法和详细的操作步骤如下:
1、第一步,创建一个主从表,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,选择主表,然后单击设计表进入表设计界面,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,单击外键进入外键的设置界面,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,设置外键名称,然后选择主表的外键字段,如下图所示,然后进入下一步。
5、随后,完成上述步骤后,设置与数据库,表名称和从属表的单词相对应的外键字段,如下图所示,然后进入下一步。
6、最后,完成上述步骤后,单击保存即可,如下图所示。这样,问题就解决了。
create
table
tb_orderItem
(
orderItemId
int
primary
key
auto_increment,
orderId
int,
bookId
int,
bookName
varchar(50),
price
float,
bookNum
int,
foreign
key(orderId)
references
tb_order(orderId),
foreign
key(bookId)
references
tb_book(bookId)
);
这是我设置外键的一个例子,供你参考。
通过工具NAVICAT 设计表时进行设计
打开NAVICAT,连接数据库
右键目标表,选择设计表
打开后选择外键菜单,具体如图:
分别设置外键名,字段,关联数据库、表、字段,以及删除时操作,更新时操作方式然后点击保存按钮即可
也可以通过SQL方式完成对表外键的添加,如:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
1、只有InnoDB类型的表才可以使用外键。mysql默认是MyISAM,这种类型不支持外键约束
2、外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。
3、外键的作用:
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值。
4、建立外键的前提:
两个表必须是InnoDB表类型。
使用在外键关系的域必须为索引型(Index)。
使用在外键关系的域必须与数据类型相似。
5、创建的步骤
指定主键关键字: foreign key(列名)。
引用外键关键字: references 外键表名(外键列名)。
6、事件触发限制:on delete和on update , 可设参数cascade(跟随外键改动)。
restrict(限制外表中的外键改动),set
Null(设空值),set Default(设默认值)。
[默认]no action
7、举例
outTable表 主键 id 类型 int
创建含有外键的表:
代码如下:
create table temp(
id int,
name
char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。
代码如下:
create table temp( id int, name char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
1.外键的作用,主要有两个:
一个是让数据库自己通过外键来保证数据的完整性和一致性
一个就是能够增加ER图的可读性
2.外键的配置
1)先创建一个主表,代码如下:
#创建表student,并添加各种约束
create table student
(
id int primary key , #主键约束
name varchar(20) , #唯一约束
age int NOT NULL, #非空约束
sex varchar(2) ,
address varchar(20) default '重庆' #默认约束
) ;
再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:
#创建分数表
create table score
(
id int primary key ,
sid int ,
china int ,
history int,
english int,
constraint FK_sid foreign key(sid) references student(id) #通过外键创建链接
) ;
创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表
删除外键:
alter table drop foreign key '外键名'.
注意:
只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除
主键是唯一标示这一行的,就好像你的身份证号一样,每个人只有一个,也是唯一能证明你是你的东西。外键是别人执行你的东西。也就是说如果一个人想和你有点关系怎么办,那就要关联起来,怎么关联起来,就通过外键啊
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流