欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-06 08:48:43
...

创建外键

*创建外键的三种方式*
方式一:
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语句查找,将查找到的内容复制到出来,即可看到外键名称

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

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;//删除字段
相关标签: mysql基础