当我们在表创建好的情况下创建外键,都知道使用如下简单方便:
alter table <tablename1> add foreign key (column_name) references tablename2(column_name);
一般我们不会使用CONSTRAINT 增加一个约束名:
alter table <tablename1> constraint fk_St add foreign key (column_name) references tablename2(column_name);
------------------------------------------------------------------------------------------------------------------------
那么我们删除外键的时候是不是没办法使用
ALTER TABLE Orders DROP FOREIGN KEY fk_St;
为此我查了很多答案,使用 "show table student create;"可以看到表结构中的外键默认名:
| student | CREATE TABLE `student` (
`sno` int(11) NOT NULL,
`sname` char(4) NOT NULL,
`sage` int(11) DEFAULT NULL,
`sex` char(1),
`idcard` int(11) DEFAULT NULL,
PRIMARY KEY (`sno`),
KEY `idcard` (`idcard`),
CONSTRAINT `student_ibfk_1` FOREIGN KEY (`idcard`) REFERENCES `stud
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
原来即使我们不设置外键,系统也会自动为它命名,所以为了方便还是设置外键吧,不然这样看一下很麻烦。