17-mysql --外键创建和删除

创建外键

*创建外键的三种方式*
方式一:
ALTER TABLE Person ADD FOREIGN KEY(job_id) REFERENCES jobs(id);
方式二:
ALTER TABLE Person ADD CONSTRAINT FOREIGN KEY(job_id) REFERENCES jobs(id);
方式三:
ALTER TABLE Person ADD CONSTRAINT person_job_FK FOREIGN KEY(job_id) REFERENCES jobs(id);

以上三种方式都可以为Person表的job_id栏位添加外键约束,不同的是前两种方式没有为外键起名字,方式三为外键起了名字。

删除外键

删除外键需要执行的两步操作:
1.外键解绑
2.删除外键字段
重要:外键解绑需要知道外键的名称,方式一和方式二没有声明外键名称,只有方式三添加外键名称

先对方式三外键解绑,删除:

1 外键解绑,外键声明时,外键名称为 person_job_FK 
ALTER TABLE Person DROP FOREIGN KEY person_job_FK;
2 删除字段
ALTER TABLE Person DROP COLUMN job_id;

那么方式一和方式二没有外键名称该怎么办呢?
其实我们在添加外键约束的时候如果没有定义外键名称mysql会自动为我们添加外键名称,
通过 show create table Person语句查找,将查找到的内容复制到出来,即可看到外键名称

在这里插入图片描述

CREATE TABLE `person` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT '20',
  `country` varchar(30) NOT NULL,
  `isMarried` tinyint(1) DEFAULT '0',
  `job_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `job_id` (`job_id`),
  CONSTRAINT `person_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我们看到外键名称为:person_ibfk_1
此时就可以解绑和删除了

ALTER TABLE Person DROP FOREIGN KEY person_ibfk_1;//解绑外键约束
ALTER TABLE Person DROP COLUMN job_id;//删除字段

猜你喜欢

转载自blog.csdn.net/weixin_40719943/article/details/106883188