MySQL 挑战:搭建一个简易的成绩管理系统的数据库

介绍

现需要构建一个简易的成绩管理系统的数据库,来记录几门课程的学生成绩。数据库中有三张表分别用于记录学生信息、课程信息和成绩信息。

数据库表的数据如下:

学生表(student):学生 id 、学生姓名和性别

课程表:课程 id 和课程名

成绩表:成绩 id 、学生 id 、课程 id 和分数

服务器中的 MySQL 还没有启动,请注意 MySQL 的 root 账户默认密码为空。

目标

1.MySQL 服务处于运行状态

2.新建数据库的名称为 gradesystem

3.gradesystem 包含三个表:student、course、mark;

  • student 表包含3列:sid(主键)、sname、gender;
  • course 表包含2列:cid(主键)、cname;
  • mark 表包含4列:mid(主键)、sid、cid、score ,注意与其他两个表主键之间的关系。

4.将上述表中的数据分别插入到各个表中

提示

  • 建立表时注意 id 自增和键约束
  • 每个表插入语句可通过一条语句完成

练习

脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# /home/shiyanlou/sql.sql
CREATE DATABASE gradesystem;

use gradesystem;

CREATE TABLE student
(
sid int(10) PRIMARY KEY AUTO_INCREMENT,
sname char(20),
gender char(20)
);

CREATE TABLE course
(
cid int(10) PRIMARY KEY AUTO_INCREMENT,
cname char(20)
);

CREATE TABLE mark
(
mid int(10) PRIMARY KEY AUTO_INCREMENT,
sid int(10),
cid int(10),
score int(10),
CONSTRAINT emp_fk FOREIGN KEY(sid) REFERENCES student(sid),
CONSTRAINT emp_fk_2 FOREIGN KEY(cid) REFERENCES course(cid)
);

INSERT INTO student VALUES
(1, 'Tom', 'male'),
(2, 'Jack', 'male'),
(3, 'Rose', 'female');

INSERT INTO course VALUES
(1, 'math'),
(2, 'physics'),
(3, 'chemistry');

INSERT INTO mark VALUES
(1, 1, 1, 80),
(2, 2, 1, 85),
(3, 3, 1, 90),
(4, 1, 2, 60),
(5, 2, 2, 90),
(6, 3, 2, 75),
(7, 1, 3, 95),
(8, 2, 3, 75),
(9, 3, 3, 85);

运行脚本

1
2
3
sudo service mysql start
mysql -u root
source /home/shiyanlou/sql.sql