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添加外键的方式相关推荐

  1. mysql na加外键,mysql添加外键

    mysql添加外键无法成功的原因 最近很忙,碰到很多问题都忘了发上来做个记录,现在又忘了,FUCK,现在碰到一个问题, 就是mysql添加外键总是无法成功,我什么都试了,就是没注意signed和uns ...

  2. mysql 添加外键 完整_详解mysql添加外键的方法

    本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助. 为已经添加好的数据表添加外键: 语法:alter table 表名 add constrai ...

  3. Mysql 添加外键的两种方式

    第一种方式:通过创建表的过程中进行添加外键,和其他表的字段进行联系. create table teacher(id int unsigned auto_increment,name varchar( ...

  4. mysql添加外键约束的语法_Mysql添加外键约束.

    最近学习遇到一条添加外键约束的语句,记录下来. alter table selection add constraint FK_Reference_1 foreign key(course) refe ...

  5. mysql添加外键语句

    sql语句格式: 1. 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key (从表外键字段) references 主表( ...

  6. mysql添加外键出现1452错误_MySQL添加外键失败ERROR 1452的解决

    今天在学习数据库添加外键的时候,遇到了问题 我先创建了两个表  orders 和 order_items  ,存储引擎都是InnoDB, 且都有orderid这个属性(类型完全一样), 但是我使用命令 ...

  7. 关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个可能解决方法...

    今天给设计好的班级表和专业表以及院系表添加外键时,报了这样一个错误 ** 1215 Cannot add the foreign key constraint ** 去百度搜了一圈,说可能时因为字段类 ...

  8. mysql 添加外键约束

    创建表时添加约束 create table table_name( id int primary key auto_increment, #设为主键且自动增长 name not null unique ...

  9. Navicat mysql添加外键

    亲测可用,若有疑问请私信 外键条件 在我们使用外键的时候,应该遵循如下条件: 1外键要存在,首先必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成 ...

最新文章

  1. Flask-RESTful之响应处理
  2. 警方建立了一个人工智能来预测暴力犯罪,它有严重缺陷
  3. php dedecms 记录访问者ip,dedecms实现显示访问者ip地址的办法
  4. ssl1056-金明的预算方案【dp之有依赖的背包】
  5. windows下安装mysql教程
  6. [react] componentWillUpdate可以直接修改state的值吗
  7. OFDM系统MATLAB仿真
  8. iOS开发之UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
  9. pandas nat_利用pandas爬取研招网信息
  10. 2021最新H3CSE认证备考练习题,错过等明年!
  11. Python 函数的嵌套
  12. 页号P与页内偏移地址W的计算
  13. 字符串处理工具类,主要是针对内容txt对标点符号进行处理-java处理字符串符号工具类实现逻辑
  14. ESP车身电子稳定系统
  15. 喜获5亿元D2轮融资,星环科技谋求更多发展!
  16. Window Server 2012许可证过期解决方法
  17. 让前辈再次激励我不断进步
  18. 用openAI写个js的排序算法(快速排序算法)
  19. h5网页服务器选择,h5制作选择虚拟主机还是服务器
  20. React路由404页面配置

热门文章

  1. 安卓NumberPicker数字选择器用法
  2. 司铭宇讲师:上海某科技企业《从技术专才走向管理精英》内训项目
  3. Android Sdk和安卓各个版本的匹配
  4. 抖音小店无货源——新手如何变成大佬?手把手带你成功
  5. 物流运输无法透明,需求供给难匹配,这家公司靠可视化实现了透明
  6. 中国三氟乙醇行业研究与投资预测报告(2022版)
  7. 基于FireBeetle 2 ESP32-E开发板的LVGL移植及传感器显示(Arduino+TFT_eSPI+LVGL)
  8. 爬虫selenium-java
  9. 你知道你的电脑1秒钟能做多少事情吗?(转)
  10. VMware中NAT模式和桥接模式的区别(虚拟机上网设置)