题目:
1、运行MySQL
2、创建数据库,数据库名为gradesystem
3、数据库gradesystem中包含三张表,分别为:student、course、mark
student表包含3列:sid(主键)、sname、gender
sid | sname | gender |
1 | Tom | male |
2 | Jack | male |
3 | Rose | female |
course表包含2列:cid(主键)、cname
cid | cname |
1 | math |
2 | physics |
3 | chemistry |
mark表包含4列:mid(主键)、sid、cid、score,注意与其它两个表主键之间的关系
mid | sid | cid | score |
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 | 90 |
8 | 2 | 3 | 75 |
9 | 3 | 3 | 85 |
4、将数据插入到各表中
提示:
建立表时注意id自增和键约束
每个表插入数据可通过一条数据完成
解答:
1、运行MySQL,使其处于运行状态
2、创建数据库
CREATE DATABASE gradesystem;
3、链接数据库
use gradesystem;
4、创建表
1)创建student表
CREATE TABLE student(
sid int auto_increment,
sname char(20),
gender enum('male','female'),
primary key(sid));
2)创建course表
CREATE TABLE course(
cid int auto_increment,
cname char(20)
primary key(cid));
3)创建mark表
CREATE TABLE mark(
mid int auto_increment,
sid int,
cid int,
score char(20),
primary key(mid));
5、插入数据
1)student表
INSERT INTO student(sname,gender) VALUES
('Tom','male'),
('Jack','male'),
('Rose','female');
2)course表
INSERT INTO course(cnamd) VALUE
('math'),
('physics'),
('chemistry');
3)mark表
INSERT INTO mark(sid,cid)
SELECT sid,cid FROM student
CROSS JOIN course;
输入后,查询下mark表的数据
这里引入了一个“笛卡尔积”的概念,取student表和course表中的sid和cid,做出排列组合,并展示在mark表中
但是,表中的score字段还没有值
所以,需要用到UPDATE语句将score的值传进去
使用UPDATE语句时,需要注意,一定要写好WHERE条件!!!!!
UPDATE mark SET score=80 WHERE sid=1 AND cid=1;
每一条都用UPDATE修改一下值,即可
修改之后,再次查看mark表的数据
6、对表格设置外键
1)sid的外键对应student表中的sid
ALTER TABLE mark ADD FOREIGN KEY(sid)
REFERENCES student(sid);
2)cid的外键对应course表中的cid
ALTER TABLE mark ADD FOREITN KEY(cid)
REFERENCES course(cid);
至此,本习题中的所有需求,均已完成