MySQL外键添加时细节提醒
1.建表时的公式:
CREATE TABLE tea(
tid INT(4) PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(12)
);
CREATE TABLE stu(
sid INT(4) PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(12),
st INT(4),
FOREIGN KEY(st) REFERENCES tea(tid)
);
2.建表后再添加外键的公式:
ALTER TABLE cou ADD ct INT(4);-- 添加一列属性后
ALTER TABLE cou ADD FOREIGN KEY(ct) REFERENCES tea(tid);-- 再设为外键
3.对于多对多关系的外键添加:
学生与选课的关系是多对多
CREATE TABLE stu(
sid INT(4) PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(12),
st INT(4),
FOREIGN KEY(st) REFERENCES tea(tid)
);
CREATE TABLE cou(
cid INT(4) PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(12)
);
此时需要新建一个表,放两个表主键所对应的外键
CREATE TABLE temp(
sid INT(4),
cid INT(4),
PRIMARY KEY(sid,cid),
FOREIGN KEY(sid) REFERENCES stu(sid),
FOREIGN KEY(cid) REFERENCES cou(cid)
);
4.温馨提示(个人初学时常犯错误):
- 主表必须要有主键,并且其数据类型与外键完全相同,包括长度
- 外键可以作为主键,这多用于多对多关系中
- 注意表名拼写不要出错
- 设计表的最后一列字段结尾不要 ‘ ,’
5.外键设计记住口诀:
对应关系,如一对多,多对多。多的那一方里面设外键,属于从表,一的那一方属于主表。而多对多关系里,新表与其他两个表的对于关系是多对一,所以新表是从表,里面设外键,其他两个表相对于新表是主表。