今天就跟修改表这个操作干上了,虽然用的并不多,但是平时自己做实验的时候还是很有用滴。比如说这个添加和删除外键。
添加外键
分为两步:
1. 添加相应列
ALTER TABLE goods
ADD stuid INT;
2. 添加约束
ALTER TABLE goods
ADD CONSTRAINT fk_stu_goo
FOREIGN KEY(stuid)
REFERENCES stuinfo(id);
- 附加创建goods表的语句
DROP TABLE IF EXISTS goods;
CREATE TABLE IF NOT EXISTS goods(
id INT PRIMARY KEY auto_increment,
name VARCHAR(20) NOT NULL,
price DOUBLE DEFAULT 0
);
添加约束很简单,删除约束也是分为两步。
删除外键
如下
1.删除外键约束
ALTER TABLE goods DROP FOREIGN KEY fk_stu_goo;
2.删除键值约束
ALTER TABLE goods DROP INDEX fk_stu_goo;
注意:只执行步骤1看似没有删除成功,起始删除了foreign key的约束。但是还有一个key的申明附加在外键的申明中执行。
实行1之后的表创建语句如下:可以看到有申明KEY `fk_stu_goo` (`stuid`)
CREATE TABLE `goods` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`price` double DEFAULT '0',
`stuid` int DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_stu_goo` (`stuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
此时执行ALTER TABLE goods DROP stuid;
会失败。因此需要执行2删除index索引。
参考链接
- https://blog.csdn.net/u012430402/article/details/80337486
- https://blog.csdn.net/qq_35604488/article/details/90573415
庄周晓梦迷蝴蝶,望帝春心托杜鹃。 ——李商隐