外键约束
约束的作用,是用于保证数据的完整性或者合理性的工具!
外键:foreign key,当前表内,指向其他表的主键的字段,称之为外键!
外键约束:用于限制相关联的记录在逻辑上保证合理性的约束称之为外键约束!
约束,不是字段。
应该注意的问题:
关于,外键约束,只能在当前的mysql的的innodb表类型(引擎)下才会生效!
增加外键
alter table 表名 add constraint 约束的名字 foreignkey 外键索引名字 (外键字段名) references 关联表名 (关联字段) [操作]
注意:如果当前的数据,已经不符合所见约束关联,则创建失败!
删除外键
alter table table_name drop foreign_key外键名字!
可以通过 show create table 查看约束的名字:
注意,外键约束与索引的关系:
如果需要在某个字段上,增加外键约束,那么需要该字段也同样有索引!如果该字段上,没有索引,此时,mysql会自动在该字段上增加一个普通索引!
可以选择指定外键约束的名字:
注意上面的外键约束自动建立的索引的名字,与外键的名字相同!
总结:在创建时:
1, 外键与相应关联表的主键类型
2, 已有数据,必须满足约束条件才可以!
3, 可以使用constraint 关键字,为外键约束起名字!
约束操作
在对父表(被关联的表)做操作时,有三种行为:
1, 严格限制,拒绝操作。restrict
2, 置 null,set null
3, 级联操作,cascade
以上三个行为操作,会在主表记录被删除或者更新时被使用!
on delete set null
on update cascade
更新时的级联操作:
只有在关联表的主键发生变化时,才会影响到从表的关联字段的变化!
主表:被关联的
从表:发出关联的!
外键,站在php程序的角度,用到的不多!
例子:
通过:
show create table student;
查看建表语句,可以看到多了一个外键
- 相关文章
- find_in_set在集合中查找
- sql查询自定义排序field函数
- sql显示表结构及索引
- sql修改表
- 添加、删除索引
- sql分组
- sql子查询
- sql多表更新
- sql建表同时插入数据
- sql多表删除
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- laravel页面静态化的方法
- centos7.4 64位下swoole安装及配置
- navicate连接mycat报1184错误
- curl设置超时不起作用(CURLOPT_TIM
- devops-jenkins容器为pending状态
- 好评文章
- phpexcel设置行高及列宽,背景颜色,
- php7中使用mongodb的aggregate进行
- intellij idea打开文件所在文件夹
- windows下使用MongoDB Compass Com
- win7中将文件拷贝到虚拟机linux下
- laravel 中悲观锁 & 乐观锁的使用
- 单点登录sso原理及php实现方式及de
- navicate连接mycat报1184错误
- rabbitmq无法启动
- laravel整合dingo/api方法步骤:jwt
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:623篇
- 浏览数:1303109