-- 显示当前可用的数据库
SHOW DATABASES;-- 选择当前数据库
SELECT DATABASE();-- 创建一个名为studentsdb的数据库并选择它
CREATE DATABASE studentsdb;
USE studentsdb;-- 创建名为stuinfo的学生信息表
CREATE TABLE stuinfo
(学号 CHAR(8) NOT NULL, -- 学号姓名 CHAR(8) NOT NULL, -- 姓名性别 CHAR(2), -- 性别出生日期 DATE, -- 出生日期籍贯 VARCHAR(10), -- 籍贯PRIMARY KEY (学号) -- 设置学号为主键
) COMMENT '学生表';-- 创建名为course的课程表
CREATE TABLE course
(课程编号 CHAR(4) NOT NULL, -- 课程编号课程名称 VARCHAR(50), -- 课程名称学分 INT, -- 学分PRIMARY KEY (课程编号) -- 设置课程编号为主键
) COMMENT '课程表';-- 创建名为grade的成绩表
CREATE TABLE grade
(学号 CHAR(8) NOT NULL, -- 学号课程编号 CHAR(4) NOT NULL, -- 课程编号分数 DECIMAL(5, 2), -- 分数,修改数据类型为DECIMALPRIMARY KEY (学号, 课程编号) -- 设置学号和课程编号为联合主键
);-- 插入学生信息
INSERT INTO stuinfo
VALUES(202001, '张青平', '男', '2000-10-01', '福州'),(2020002, '刘东阳', '男', '1998-12-09', '杭州'),(2020003, '马晓夏', '女', '1995-05-12', '合肥'),(2020004, '钱忠理', '男', '1994-09-23', '长沙'),(2020005, '孙海洋', '男', '1995-04-03', '北京'),(2020006, '郭小斌', '男', '1997-11-10', '上海'),(2020007, '肖月玲', '女', '1996-12-07', '南京'),(2020008, '张玲珑', '女', '1997-12-24', '苏州');-- 插入课程信息
INSERT INTO course
VALUES('001', '计算机应用基础', 2),('002', 'C语言程序设计', 2),('003', '数据库原理及应用', 2),('004', '英语', 4),('005', '高等数学', 4);-- 插入成绩信息
INSERT INTO grade
VALUES('2020001', '003', 88),('2020001', '004', 85),('2020001', '005', 77),('2020002', '001', 73),('2020002', '004', 79),('2020002', '005', 73),('2020003', '001', 84),('2020003', '002', 92);-- 修改课程表,删除课程名称列
ALTER TABLE courseDROP COLUMN 课程名称;-- 修改成绩表,将分数列的数据类型更改为DECIMAL(5, 2)
ALTER TABLE gradeMODIFY COLUMN 分数 DECIMAL(5, 2);-- 修改学生信息表,添加备注列
ALTER TABLE stuinfoADD COLUMN 备注 VARCHAR(50);-- 创建新的数据库studb
CREATE DATABASE studb;
-- 切换到新数据库studb
USE studb;
-- 创建一个新表stud,结构与studentsdb.stuinfo相同
CREATE TABLE studb.stud LIKE studentsdb.stuinfo;
-- 复制数据到新表
-- INSERT INTO studb.stud SELECT * FROM studentsdb.stuinfo;-- 删除学号为2020004的学生记录
-- DELETE FROM studb.stud WHERE 学号='2020004';-- 更新学号为2020002的学生的籍贯为蚌埠市
-- UPDATE studb.stud SET 籍贯='蚌埠市' WHERE 学号='2020002';-- 删除备注列
-- ALTER TABLE studb.stud DROP COLUMN 备注;-- 删除新的数据库studb
-- DROP DATABASE studb;-- 创建一个临时表tempGrade,结构与grade表相同
CREATE TEMPORARY TABLE IF NOT EXISTS tempGrade LIKE grade;
-- 更新学生成绩,将低于平均分的女生的成绩增加10分
UPDATE grade g
SET 分数 = 分数 + 10
WHERE g.学号 IN (SELECT 学号 FROM stuinfo WHERE 性别 = '女')AND g.分数 < (SELECT AVG(tempGrade.分数) FROM tempGrade);
-- 删除临时表
DROP TEMPORARY TABLE tempGrade;-- 更新课程编号为'002'的课程成绩,根据条件提高分数
UPDATE grade g
SET 分数 = IF(g.分数 > 75, g.分数 * 1.04, g.分数 * 1.05)
WHERE g.课程编号 = '002';-- 删除分数小于60的成绩记录
DELETE FROM grade WHERE grade.分数 < 60;