MySQL 8.x从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

2.5.7 删除表的外键约束

对于数据库中定义的外键,如果不再需要,可以将其删除。一旦删除外键,就会解除主表和从表间的关联关系,MySQL中删除外键的语法格式如下:

     ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>

“外键约束名”指在定义表时CONSTRAINT关键字后面的参数,详细内容可参考2.3.3节。

【例2.27】删除数据表tb_emp9中的外键约束。

首先创建表tb_emp9,创建外键deptId关联tb_dept1表的主键id,SQL语句如下:

     CREATE TABLE tb_emp9
     (
     id INT PRIMARY KEY,
     name VARCHAR(25),
     deptId INT,
     salary FLOAT,
     CONSTRAINT fk_emp_dept  FOREIGN KEY (deptId) REFERENCES tb_dept1(id)
     );

使用SHOW CREATE TABLE查看表tb_emp9的结构,结果如下:

     mysql> SHOW CREATE TABLE tb_emp9 \G
     *** 1. row ***
          Table: tb_emp9
     Create Table: CREATE TABLE `tb_emp9` (
       `id` INT NOT NULL,
       `name` varchar(25) DEFAULT NULL,
       `deptId` INT DEFAULT NULL,
       `salary` float DEFAULT NULL,
       PRIMARY KEY (`id`),
       KEY `fk_emp_dept` (`deptId`),
       CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
     1 row in set (0.00 sec)

可以看到,已经成功添加了表的外键,下面删除外键约束,SQL语句如下:

     ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;

执行完毕之后,将删除表tb_emp9的外键约束。使用SHOW CREATE TABLE再次查看表tb_emp9结构,结果如下:

     mysql> SHOW CREATE TABLE tb_emp9 \G
     *** 1. row ***
          Table: tb_emp9
     Create Table: CREATE TABLE `tb_emp9` (
       `id` INT NOT NULL,
       `name` varchar(25) DEFAULT NULL,
       `deptId` INT DEFAULT NULL,
       `salary` float DEFAULT NULL,
       PRIMARY KEY (`id`),
       KEY `fk_emp_dept` (`deptId`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
     1 row in set (0.00 sec)

可以看到,tb_emp9中已经不存在FOREIGN KEY,原有的名称为fk_emp_dept的外键约束删除成功。