项目场景:
当mysql表已经创建好时,忘了给表添加外键约束.
问题描述:
添加外键的方式:
方式一:还未创建表时:FOREIGN KEY (此表id) REFERENCES class(外表id)
CREATE TABLE student(
sid INT AUTO_INCREMENT,
sname VARCHAR(10),
s_cid INT,
PRIMARY KEY(sid),
FOREIGN KEY (s_cid) REFERENCES class(cid)
);
方式二:已经创建表:
ALTER TABLE 表1 ADD FOREIGN KEY (表1的键) REFERENCES tbl_dept(表2的键);
例如: ALTER TABLE tbl_emp ADD FOREIGN KEY (dep_id) REFERENCES tbl_dept(dept_id);
其它问题:
添加外键需要注意:外键和引用键中的相应列必须具有类似的数据类型。整数类型的大小和符号必须相同。字符串类型的长度不需要相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。InnoDB允许外键引用任何索引列或列组。但是,在引用的表中,必须有一个索引,其中引用的列以相同的顺序作为第一列列出。
添加索引:
alter table orders add constraint 主键的新名字 primary key (要改成主键的列的名字); alter table tbl_dept add constraint dept_id primary key (dept_id);