表格的参数可以自己取,也可以去网上搜索一个练习(如果和博主一样是一个取名困难者),本文中的表格的参数是搜索的一个模板。
cid | caption |
---|---|
1 | 三年二班 |
2 | 一年三班 |
3 | 三年一班 |
sid | sname | gender | class_id |
---|---|---|---|
1 | 钢蛋 | 女 | 1 |
2 | 铁锤 | 女 | 1 |
3 | 山炮 | 男 | 2 |
cid | cname | teacher_id |
---|---|---|
1 | 生物 | 1 |
2 | 体育 | 1 |
3 | 物理 | 2 |
tid | tname |
---|---|
1 | 波多 |
2 | 苍空 |
3 | 饭岛 |
sid | student_id | course_id | number |
---|---|---|---|
1 | 1 | 1 | 60 |
2 | 1 | 2 | 59 |
3 | 2 | 2 | 100 |
以上就是全部的表格。
首先浏览5个表格,在其中寻找之间的联系,我们可以发现class表和teacher表最简单,没有受到其他表格的影响,也就是没有外键,所以优先建立这两个表格。
CREATE TABLE `class`(
#将cid设为主键并自增
`cid` INT PRIMARY KEY AUTO_INCREMENT,
`caption` VARCHAR(80) NOT NULL UNIQUE
);
CREATE TABLE `teacher`(
#将tid设为主键并自增
`tid` INT PRIMARY KEY AUTO_INCREMENT,
`tname` VARCHAR(80) NOT NULL
);
将两个表格建立好后,浏览剩下的三个表格,发现student表和course表都只涉及一个外键,分别和class表的编号与teacher表的编号有关联,跟随这两个参数变化,说明各自涉及一个外键。
CREATE TABLE `student`(
#将sid设为主键,自增
`sid` INT PRIMARY KEY AUTO_INCREMENT,
`sname` VARCHAR(80) NOT NULL,
`gender` ENUM('男','女') DEFAULT'男',
`class_id` INT,
#根据表的列,将各自的列设置好后,再添加外键
FOREIGN KEY (`class_id`) REFERENCES `class`(`cid`)
);
与上表同理:
CREATE TABLE `course`(
`cid` INT PRIMARY KEY AUTO_INCREMENT,
`cname` VARCHAR(80) NOT NULL UNIQUE,
`teacher_id` INT,
FOREIGN KEY (`teacher_id`) REFERENCES `teacher`(`tid`)
);
最后只有一个表了:
CREATE TABLE `score`(
`sid` INT PRIMARY KEY AUTO_INCREMENT,
`student_id` INT,
`course_id` INT,
`number` INT UNSIGNED,
#将两个外键添加
FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`),
FOREIGN KEY (`course_id`) REFERENCES `course` (cid)
);
#添加数据
INSERT `class` (`caption`) VALUES ('三年二班');
INSERT `class` (`caption`) VALUES ('一年三班');
INSERT `class` (`caption`) VALUES ('三年一班');
INSERT `student` (`sname`,`gender`,`class_id`) VALUES ('钢蛋','女',1);
INSERT `student` (`sname`,`gender`,`class_id`) VALUES ('铁锤','女',1);
INSERT `student` (`sname`,`gender`,`class_id`) VALUES ('山炮','男',2);
INSERT `teacher` (`tname`) VALUES ('波多');
INSERT `teacher` (`tname`) VALUES ('苍空');
INSERT `teacher` (`tname`) VALUES ('饭岛');
INSERT `course` (`cname`,`teacher_id`) VALUES ('生物',1);
INSERT `course` (`cname`,`teacher_id`) VALUES ('体育',1);
INSERT `course` (`cname`,`teacher_id`) VALUES ('物理',2);
INSERT `score` (`student_id`,`course_id`,`number`) VALUES (1,1,60);
INSERT `score` (`student_id`,`course_id`,`number`) VALUES (1,2,59);
INSERT `score` (`student_id`,`course_id`,`number`) VALUES (2,2,100);