Sql查询语句学习

已知有如下4张表:

学生表:student(学号,学生姓名,出生年月,性别)

成绩表:score(学号,课程号,成绩)

课程表:course(课程号,课程名称,教师号)

教师表:teacher(教师号,教师姓名)

根据以上信息按照下面要求写出对应的SQL语句。

参考文章:图解SQL面试题:经典50题 - 知乎 (zhihu.com)

image-20210714203626420

建表语句

1. 创建学生表

1
2
3
4
5
6
7

create table student (
no int PRIMARY KEY,
name VARCHAR(50) NOT NULL,
birthday date,
sex VARCHAR(2)
)

2. 创建教师表

1
2
3
4
CREATE TABLE teacher(
t_no VARCHAR(50) PRIMARY key,
t_name VARCHAR(50) not NULL
)

3. 创建成绩表

1
2
3
4
5
6
7
8
CREATE TABLE score(
no int,
c_no VARCHAR(50),
score FLOAT,
PRIMARY KEY(no,c_no), -- 设为组合主键
FOREIGN key (no) REFERENCES student(no), -- 添加外键
FOREIGN KEY (c_no) REFERENCES course(c_no)
)

4. 创建课程表

1
2
3
4
5
CREATE TABLE course(
c_no VARCHAR(50) PRIMARY key,
c_name VARCHAR(50) NOT NULL,
t_no VARCHAR(50)
)

5. 向已存在的表添加外键

1
2
-- 向已存在的表添加外键
ALTER TABLE course add CONSTRAINT teacher_cons FOREIGN key (t_no) REFERENCES teacher(t_no);

alter table 外键所在的表名 add constraint 外键名 foreign key(外键所在的列名) references 对应主键所在表名(主键所在列名);

添加数据

向学生表添加数据

1
2
3
4
5
6
7
8
9
10
11
12
-- 向学生表添加数据
INSERT into student(no,name,birthday,sex)
VALUES (0001,'猴子','1989-01-01','男');

INSERT into student(no,name,birthday,sex)
VALUES(0002,'猴子','1990-12-21','女');

INSERT into student(no,name,birthday, sex)
VALUES(003,'马云','1991-12-21','男');

INSERT into student(no,name,birthday,sex)
VALUES(004, '王思聪', '1990-05-20', '男');

向教师表添加数据

1
2
3
4
5
6
7
8
9
-- 向教师表添加数据
INSERT into teacher(t_no,t_name)
VALUES('0001','孟扎扎');

INSERT into teacher(t_no,t_name)
VALUES('0002', '马化腾');

INSERT into teacher(t_no,t_name)
VALUES('0003', '');

向课程表添加数据

1
2
3
4
5
6
7
8
INSERT into course(c_no,c_name,t_no)
VALUES('0001', '语文','0001');

INSERT into course(c_no,c_name,t_no)
VALUES('0002','数学','0002');

INSERT into course(c_no,C_NAME,t_no)
VALUES('0003','英语','0003');

向成绩表添加数据

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

-- 成绩表

INSERT into score(no,c_no,score)
VALUES (0001,'0001',90);

INSERT into score(no,c_no,score)
VALUES (0001,'0002',99);

INSERT into score(no,c_no,score)
VALUES (0001,'0003',99);

INSERT into score(no,c_no,score)
VALUES (0002,'0001',60);

INSERT into score(no,c_no,score)
VALUES (0002,'0002',70);

INSERT into score(no,c_no,score)
VALUES (0002,'0003',80);

INSERT into score(no,c_no,score)
VALUES (0003,'0001',80);

INSERT into score(no,c_no,score)
VALUES (0003,'0002',80);

INSERT into score(no,c_no,score)
VALUES (0003,'0003',80);
作者

bd160jbgm

发布于

2021-07-14

更新于

2021-07-14

许可协议