启动MySQL服务并进入MySQL shell
创建一个数据库gradesystem
CREATE DATABASE gradesystem;
数据库里面放三张表
第一张学生表student
:学生id(主键)、学生姓名、学生性别
sid | sname | gender |
---|---|---|
1 | zhangsan | male |
2 | lisi | male |
3 | xiaohong | female |
第二张课程表course
:课程id(主键)、课程名字
cid | cname |
---|---|
1 | math |
2 | physics |
3 | chemistry |
成绩表mark
:成绩 id(主键) 、学生 id 、课程 id 和分数
mid | sid | cid | score |
---|---|---|---|
1 | 1 | 1 | 80 |
2 | 2 | 1 | 85 |
3 | 3 | 1 | 86 |
4 | 1 | 2 | 70 |
5 | 2 | 2 | 86 |
6 | 3 | 2 | 90 |
7 | 1 | 3 | 80 |
8 | 2 | 3 | 85 |
9 | 3 | 3 | 90 |
接下来的一切操作都是在MySQL shell里面操作的
创建学生表student
CREATE TABLE student(
sid INT(2) NOT NULL,
sname CHAR(20) NOT NULL,
gender CHAR(20) NOT NULL
);
创建课程表course
CREATE TABLE course(
cid INT(2) NOT NULL,
cname CHAR(20) NOT NULL
);
创建成绩表mark
CREATE TABLE mark(
mid INT(2) NOT NULL,
sid INT(2) NOT NULL,
cid INT(2) NOT NULL,
score INT(3)
);
添加主键,因为刚才建表的时候没有添加主键
添加键的语法
添加主键约束 alter table 表名 add constraint 主键名 primary key 表名(主键字段名)
添加外键约束 alter table 表名 add constraint 外建名 foreign key (外键字段名)references 关联表名 (关联字段名)
联合主键的写法:
primary key (字段1,字段2,……)
备注:在添加主键时,(主键字段名)这个主键字段名也可以写多个 (字段1,字段2,……)。这就算是添加联合主键的方法吧。
设置另外两个也是一样的
给mark设置外键
ALTER TABLE mark ADD CONSTRAINT PK_sid FOREIGN KEY (sid) REFERENCES student(sid);
ALTER TABLE ADD CONSTRAINT PK_cid FOREIGN KEY (cid) REFERENCES course(cid);
这里写外键还行
创建表的时候是这么添加的
例如
CREATE TABLE student(
sid INT(2) NOT NULL,
sname CHAR(20) NOT NULL,
gender CHAR(20) NOT NULL,
PRIMARY KEY (sid)
);
开始往student
表里面插入数据
INSERT INTO student (sid, sname, gender) VALUES (1, 'zhangsan', 'male');
INSERT INTO student (sid, sname, gender) VALUES (2, 'lisi', 'male');
INSERT INTO student (sid, sname, gender) VALUES (3, 'xiaohong', 'female');
往course
中插入数据
INSERT INTO course (cid, cname) VALUES (1, 'math');
INSERT INTO course (cid, cname) VALUES (2, 'physics');
INSERT INTO course (cid, cname) VALUES (3, 'chemistry');
往mark
中插入数据
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 1, 1, 80);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 2, 1, 85);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 3, 1, 86);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 1, 2, 70);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 2, 2, 86);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 3, 2, 90);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 1, 3, 80);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 2, 3, 85);
INSERT INTO mark (mid, sid, cid, score) VALUES (1, 3, 3, 90);
最后可通过SELECT * FROM mark
来查看成绩表和同样命令来查看其它两个表。