Mysql添加外键的方式
Mysql添加外键的几种方式
注意:添加外键是给从表添加(即子表)
父表是主表
方法一:
创建表之前:
FOREIGN KEY (子表id) REFERENCES 关联表名(外主表id)
例如
create table emp( e_id int auto_increment primary key, ename varchar(50) not null, age int, job varchar(20),salary int, entrydate date, managerid int, dept_id int,FOREIGN KEY (dept_id) REFERENCES dept(id) );
方法二:
创建表后添加:
ALTER TABLE 表1 ADD FOREIGN KEY (从表的外键) REFERENCES dept(主表的主键);
例如:ALTER TABLE emp ADD FOREIGN KEY (dep_id) REFERENCES dept(id);
注意:
主表(dept)存在从表(emp),从表引用了外键,不能直接删除(主表)
DROP TABLE dept; --删除失败
在删除表的时候,如果存在外键引用,则必须先删除从表(也就是把存在相关外键约束的表全部删掉),才能删除主表。
以上的外键都是物理外键,属于数据库级别的引用,不推荐使用,使用这个会造成数据耦合度大大增加。
主键:
是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性
外键:
是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。
注意:
1、外键字段在创建的时候就应该与主表的类型完全一致(长度等等),否则创建外键会报错;
2、外键表是不能插入主表不存在的数据(该数据指的是与主表主键或从表外键的数据)。–例如部门号只有1,2,3,4,从表插入数据时外键值为5就会产生错误
——>即外键表的外键约束不能随意取值3、当修改了主表的数据后,关联的外键表的外键约束已经实现了自动修改。
加constraint和不加的区别
当不加constraint,系统将自动给约束起名字,不好记住。 加constraint,可以按照自己的意图给约束起名字。
Mysql添加外键的方式相关推荐
- mysql na加外键,mysql添加外键
mysql添加外键无法成功的原因 最近很忙,碰到很多问题都忘了发上来做个记录,现在又忘了,FUCK,现在碰到一个问题, 就是mysql添加外键总是无法成功,我什么都试了,就是没注意signed和uns ...
- mysql 添加外键 完整_详解mysql添加外键的方法
本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...
- Mysql 添加外键的两种方式
第一种方式:通过创建表的过程中进行添加外键,和其他表的字段进行联系. create table teacher(id int unsigned auto_increment,name varchar( ...
- mysql添加外键约束的语法_Mysql添加外键约束.
最近学习遇到一条添加外键约束的语句,记录下来. alter table selection add constraint FK_Reference_1 foreign key(course) refe ...
- mysql添加外键语句
sql语句格式: 1. 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key (从表外键字段) references 主表( ...
- mysql添加外键出现1452错误_MySQL添加外键失败ERROR 1452的解决
今天在学习数据库添加外键的时候,遇到了问题 我先创建了两个表 orders 和 order_items ,存储引擎都是InnoDB, 且都有orderid这个属性(类型完全一样), 但是我使用命令 ...
- 关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个可能解决方法...
今天给设计好的班级表和专业表以及院系表添加外键时,报了这样一个错误 ** 1215 Cannot add the foreign key constraint ** 去百度搜了一圈,说可能时因为字段类 ...
- mysql 添加外键约束
创建表时添加约束 create table table_name( id int primary key auto_increment, #设为主键且自动增长 name not null unique ...
- Navicat mysql添加外键
亲测可用,若有疑问请私信 外键条件 在我们使用外键的时候,应该遵循如下条件: 1外键要存在,首先必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成 ...
最新文章
- Flask-RESTful之响应处理
- 警方建立了一个人工智能来预测暴力犯罪,它有严重缺陷
- php dedecms 记录访问者ip,dedecms实现显示访问者ip地址的办法
- ssl1056-金明的预算方案【dp之有依赖的背包】
- windows下安装mysql教程
- [react] componentWillUpdate可以直接修改state的值吗
- OFDM系统MATLAB仿真
- iOS开发之UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
- pandas nat_利用pandas爬取研招网信息
- 2021最新H3CSE认证备考练习题,错过等明年!
- Python 函数的嵌套
- 页号P与页内偏移地址W的计算
- 字符串处理工具类,主要是针对内容txt对标点符号进行处理-java处理字符串符号工具类实现逻辑
- ESP车身电子稳定系统
- 喜获5亿元D2轮融资,星环科技谋求更多发展!
- Window Server 2012许可证过期解决方法
- 让前辈再次激励我不断进步
- 用openAI写个js的排序算法(快速排序算法)
- h5网页服务器选择,h5制作选择虚拟主机还是服务器
- React路由404页面配置
热门文章
- 安卓NumberPicker数字选择器用法
- 司铭宇讲师:上海某科技企业《从技术专才走向管理精英》内训项目
- Android Sdk和安卓各个版本的匹配
- 抖音小店无货源——新手如何变成大佬?手把手带你成功
- 物流运输无法透明,需求供给难匹配,这家公司靠可视化实现了透明
- 中国三氟乙醇行业研究与投资预测报告(2022版)
- 基于FireBeetle 2 ESP32-E开发板的LVGL移植及传感器显示(Arduino+TFT_eSPI+LVGL)
- 爬虫selenium-java
- 你知道你的电脑1秒钟能做多少事情吗?(转)
- VMware中NAT模式和桥接模式的区别(虚拟机上网设置)