(0) 插入数据
INSERT INTO Student (Sno, Sname, Ssex, Sage, Sdept)
VALUES (1, '张三', '男', 20, '计算机系');
INSERT INTO Course (Cno, Cname, Tname, StudentNum, AvgGrade)
VALUES (1, '数学', '王老师', 30, 85.0);
-- 假设其他数据以类似方式插入
(1) 删除2号课程的信息
DELETE FROM Course
WHERE Cno = 2;
(2) 修改课程名称
UPDATE Course
SET Cname = '数据库原理'
WHERE Cname = '数据库';
(3) 提高60至70分之间的学生成绩
UPDATE Course
SET Grade = Grade * 1.10
WHERE Grade BETWEEN 60 AND 70;
(4) 给李勇的数据库原理课程成绩加5分
UPDATE Course
SET Grade = Grade + 5
WHERE Sno = (SELECT Sno FROM Student WHERE Sname = '李勇') AND Cname = '数据库原理';
(5) 求选课人数和平均成绩并存入新表
-- 创建新表
CREATE TABLE CourseStats (
Cno INT,
StudentCount INT,
AvgGrade DECIMAL(5, 2)
);
-- 插入数据
INSERT INTO CourseStats (Cno, StudentCount, AvgGrade)
SELECT Cno, COUNT(Sno), AVG(Grade)
FROM Course
GROUP BY Cno;
(6) 创建男同学信息视图并测试
-- 创建视图
CREATE VIEW male_student AS
SELECT *
FROM Student
WHERE Ssex = '男'
WITH CHECK OPTION;
-- 查询视图
SELECT * FROM male_student;
-- 尝试插入女生信息(将失败)
-- INSERT INTO male_student (Sno, Sname, Ssex, Sage, Sdept) VALUES (999, '小红', '女', 22, '外语系');
-- 尝试插入男生信息(将成功)
-- INSERT INTO male_student (Sno, Sname, Ssex, Sage, Sdept) VALUES (998, '小王', '男', 23, '计算机系');
-- 查询视图和基表以验证
SELECT * FROM male_student;
SELECT * FROM Student;
(7) 创建女生信息视图并测试
-- 创建视图
CREATE VIEW female_student AS
SELECT *
FROM Student
WHERE Ssex = '女'
WITH CHECK OPTION;
-- 尝试插入男生信息(将失败)
-- INSERT INTO female_student (Sno, Sname, Ssex, Sage, Sdept) VALUES (997, '小赵', '男', 24, '管理系');
-- 尝试插入女生信息(将成功)
-- INSERT INTO female_student (Sno, Sname, Ssex, Sage, Sdept) VALUES (996, '小孙', '女', 22, '中文系');
-- 查询视图和基表以验证
SELECT * FROM female_student;
SELECT * FROM Student;
(8) 创建学生选修课程数目和平均成绩的视图
CREATE VIEW view_Score AS
SELECT
Sno,
COUNT(Cno) AS NumberC,
AVG(Grade) AS AvgScore
FROM
Course
GROUP BY
Sno;
(9) 创建显示学生姓名、课程名和成绩的视图
CREATE VIEW sname_cname AS
SELECT
Student.Sname,
Course.Cname,
Course.Grade
FROM
Student
JOIN
Course ON Student.Sno = Course.Sno;
(10) 查找平均成绩高于80分的学生学号
SELECT Sno
FROM view_Score
WHERE AvgScore > 80;
(11) 更新视图view_Score中的平均成绩
UPDATE view_Score
SET AvgScore = 95
WHERE Sno = 95001; -- 假设95001是特定学生的学号
(12) 更新视图male_student中的年龄并验证
UPDATE male_student
SET Sage = 21
WHERE Sname = '李勇';
-- 查询视图以验证
SELECT * FROM male_student WHERE Sname = '李勇';
-- 查询基表以验证
SELECT * FROM Student WHERE Sname = '李勇';