数据库通过主外键关联关系来体现表与表之间的关联关系
DROP TABLE IF EXISTS cls;
CREATE TABLE cls(
`number` INT(11) AUTO_INCREMENT NOT NULL PRIMARY KEY COMMENT '班级编号,主键',
name VARCHAR(20) NOT NULL COMMENT '班级名称',
grade VARCHAR(20) NOT NULL COMMENT '年级'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='班级表';
DROP TABLE IF EXISTS student;
CREATE TABLE student(
`number` INT(11) AUTO_INCREMENT NOT NULL COMMENT '学号,主键',
name VARCHAR(20) NOT NULL COMMENT '姓名',
sex VARCHAR(2) DEFAULT '男' COMMENT '性别',
age TINYINT(3) DEFAULT 0 COMMENT '年龄',
cls_number INT(11) NOT NULL COMMENT '所属班级',
--指定number 为主键
PRIMARY KEY(number),
FOREIGN KEY(cls_number) REFERENCES cls(number)
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';
另外,在student表中number 这个字段不要加PRIMARY KEY ,因为与下面的PRIMARY(number)重了,出现ERROR 1068 (42000): Multiple primary key defined的错误。
所以只写其中一个就好了。
FOREIGN KEY(cls_number) REFERENCES cls(number) 体现数据库表与表之间的关系,指定cls_number为外键,关联(references)cls表中的主键number。