You are on page 1of 1

1 使用 SQL 创建关系学生、课程、选课

CREATE TABLE 学生 (
学号 char(10) primary key,
姓名 varchar(20) not null,
性别 char(2) not null check (性别 in (‘男’, ‘女’)),
出生日期 date,
所在学院 varchar(20) default ‘地空学院’ not null);

CREATE TABLE 课程 (
课程号 char(10) primary key,
课程名 varchar(20) not null,
教师名 varchar(20));

CREATE TABLE 选课 (
学号 char(10),
课程号 char(10),
成绩 smallint check (成绩 >= 0 and 成绩 <= 100),
PRIMARY KEY (学号, 课程号),
FOREIGN KEY (学号) REFERENCES 学生 (学号),
FOREIGN KEY (课程号) REFERENCES 课程 (课程号));

2 把自己的信息添加到学生表中
INSERT INTO 学生 (学号, 姓名, 性别, 出生日期, 所在学院)
VALUES (‘1600012401’, ‘覃程’, ‘男’, ‘1998-04-06’, ‘地空学院’);

3 检索每一门课程成绩都大于或等于 85 分的学生的学号、姓名和性别,并把检索的值送到已经存在的表优秀学生
(学号、姓名、性别)中
INSERT INTO 优秀学生 (学号、姓名、性别)
SELECT 学号, 姓名, 性别
FROM 学生
WHERE 学号 IN ( SELECT 学号
FROM 选课
WHERE ALL (SELECT 成绩 FROM 选课 GROUP BY 学号) >= 85);

4 在选课表中删除没有成绩的记录
DELECT FROM 选课 WHERE 成绩 IS NULL;

5 把汪姓同学的成绩都删除
UPDATE 选课
SET 成绩 = NULL
WHERE 学号 IN (SELECT 学号 FROM 学生 WHERE 姓名 LIKE ‘汪_%’);

6 把数据库不及格,并年龄小于 18 岁的同学的数据库成绩乘以 107%


UPDATE 选课
SET 成绩 = 成绩 * 1.07
WHERE 课程名 = ‘数据库’ AND 成绩 < 60 AND 学号 IN (SELECT 学号
FROM 学生
WHERE YEAR(NOW()) - YEAR(出生年月) < 18);

You might also like