数据插入
INSERT INTO 专业 (专业ID, 专业名称) VALUES (专业_SEQ.NEXTVAL, '计算机科学与技术'); INSERT INTO 专业 (专业ID, 专业名称) VALUES (专业_SEQ.NEXTVAL, '软件工程'); INSERT INTO 专业 (专业ID, 专业名称) VALUES (专业_SEQ.NEXTVAL, '人工智能'); INSERT INTO 专业 (专业ID, 专业名称) VALUES (专业_SEQ.NEXTVAL, '数据科学与大数据技术'); COMMIT;
INSERT INTO 班级 (班级ID, 班级名称, 专业ID) VALUES (班级_SEQ.NEXTVAL, '计科1班', 1); INSERT INTO 班级 (班级ID, 班级名称, 专业ID) VALUES (班级_SEQ.NEXTVAL, '计科2班', 1);
INSERT INTO 班级 (班级ID, 班级名称, 专业ID) VALUES (班级_SEQ.NEXTVAL, '软工1班', 2); INSERT INTO 班级 (班级ID, 班级名称, 专业ID) VALUES (班级_SEQ.NEXTVAL, '软工2班', 2);
INSERT INTO 班级 (班级ID, 班级名称, 专业ID) VALUES (班级_SEQ.NEXTVAL, '智能1班', 3);
INSERT INTO 班级 (班级ID, 班级名称, 专业ID) VALUES (班级_SEQ.NEXTVAL, '数据1班', 4); COMMIT;
INSERT INTO 教师 (教师ID, 姓名, 职称, 联系电话, 邮箱) VALUES (教师_SEQ.NEXTVAL, '张教授', '教授', '13800138001', 'zhang@edu.cn');
INSERT INTO 教师 (教师ID, 姓名, 职称, 联系电话, 邮箱) VALUES (教师_SEQ.NEXTVAL, '李副教授', '副教授', '13900139002', 'li@edu.cn');
INSERT INTO 教师 (教师ID, 姓名, 职称, 联系电话, 邮箱) VALUES (教师_SEQ.NEXTVAL, '王老师', '讲师', '13700137003', 'wang@edu.cn');
INSERT INTO 教师 (教师ID, 姓名, 职称, 联系电话, 邮箱) VALUES (教师_SEQ.NEXTVAL, '赵教授', '教授', '13600136004', 'zhao@edu.cn'); COMMIT;
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '张三', '110101200001011234', '男', DATE '2000-01-01', DATE '2023-09-01', '13800000001', 'zhangsan@stu.edu.cn', 1);
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '李四', '110102200002022345', '女', DATE '2000-02-02', DATE '2023-09-01', '13800000002', 'lisi@stu.edu.cn', 1);
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '王五', '110103200003033456', '男', DATE '2000-03-03', DATE '2023-09-01', '13800000003', 'wangwu@stu.edu.cn', 2);
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '赵六', '110104200004044567', '女', DATE '2000-04-04', DATE '2023-09-01', '13800000004', 'zhaoliu@stu.edu.cn', 3);
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '钱七', '110105200005055678', '男', DATE '2000-05-05', DATE '2023-09-01', '13800000005', 'qianqi@stu.edu.cn', 4);
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '孙八', '110106200006066789', '女', DATE '2000-06-06', DATE '2023-09-01', '13800000006', 'sunba@stu.edu.cn', 5);
INSERT INTO 学生 (学生ID, 姓名, 身份证号, 性别, 出生日期, 入学日期, 联系电话, 邮箱, 班级ID) VALUES (学生_SEQ.NEXTVAL, '周九', '110107200007077890', '男', DATE '2000-07-07', DATE '2023-09-01', '13800000007', 'zhoujiu@stu.edu.cn', 6); COMMIT;
INSERT INTO 课程 (课程ID, 课程名称, 学时, 考核方式, 学分, 教授教师ID, 课程描述) VALUES (课程_SEQ.NEXTVAL, '数据库系统', 64, '考试', 4.0, 1, '关系数据库原理与设计');
INSERT INTO 课程 (课程ID, 课程名称, 学时, 考核方式, 学分, 教授教师ID, 课程描述) VALUES (课程_SEQ.NEXTVAL, '数据结构', 64, '考试', 4.0, 2, '基本数据结构与算法');
INSERT INTO 课程 (课程ID, 课程名称, 学时, 考核方式, 学分, 教授教师ID, 课程描述) VALUES (课程_SEQ.NEXTVAL, '人工智能导论', 48, '考查', 3.0, 3, '人工智能基本原理与应用');
INSERT INTO 课程 (课程ID, 课程名称, 学时, 考核方式, 学分, 教授教师ID, 课程描述) VALUES (课程_SEQ.NEXTVAL, '机器学习', 48, '考试', 3.0, 4, '机器学习基本算法与实践'); COMMIT;
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (1, 1, 85.5, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (1, 2, 92.0, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (1, 3, 78.0, '2024春季');
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (2, 1, 90.5, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (2, 4, 88.0, '2024春季');
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (3, 2, 76.5, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (3, 3, 92.5, '2024春季');
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (4, 1, 82.0, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (4, 4, 95.0, '2024春季');
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (5, 3, 79.5, '2024春季');
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (6, 2, 87.0, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (6, 4, 91.5, '2024春季');
INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (7, 1, 94.5, '2023秋季'); INSERT INTO 学生选课 (学生ID, 课程ID, 成绩, 学期) VALUES (7, 3, 85.0, '2024春季'); COMMIT;
INSERT INTO 管理员 (管理员ID, 姓名, 工号, 联系电话, 邮箱) VALUES (管理员_SEQ.NEXTVAL, '张校长', 'ADM001', '13888888888', 'headmaster@edu.cn');
INSERT INTO 管理员 (管理员ID, 姓名, 工号, 联系电话, 邮箱) VALUES (管理员_SEQ.NEXTVAL, '李主任', 'ADM002', '13999999999', 'director@edu.cn'); COMMIT;
INSERT INTO 系统用户 (用户名, 密码, 用户类型, 关联学生ID) VALUES ('zhangsan', 'student_pass1', '学生', 1);
INSERT INTO 系统用户 (用户名, 密码, 用户类型, 关联学生ID) VALUES ('lisi', 'student_pass2', '学生', 2);
INSERT INTO 系统用户 (用户名, 密码, 用户类型, 关联教师ID) VALUES ('prof_zhang', 'teacher_pass1', '教师', 1);
INSERT INTO 系统用户 (用户名, 密码, 用户类型, 关联教师ID) VALUES ('prof_li', 'teacher_pass2', '教师', 2);
INSERT INTO 系统用户 (用户名, 密码, 用户类型, 关联管理员ID) VALUES ('admin_zhang', 'admin_pass1', '管理员', 1);
INSERT INTO 系统用户 (用户名, 密码, 用户类型, 关联管理员ID) VALUES ('admin_li', 'admin_pass2', '管理员', 2); COMMIT;
数据更新
UPDATE 专业 SET 人数 = (SELECT SUM(人数) FROM 班级 WHERE 专业ID = 1) WHERE 专业ID = 1; UPDATE 专业 SET 人数 = (SELECT SUM(人数) FROM 班级 WHERE 专业ID = 2) WHERE 专业ID = 2; UPDATE 专业 SET 人数 = (SELECT SUM(人数) FROM 班级 WHERE 专业ID = 3) WHERE 专业ID = 3; UPDATE 专业 SET 人数 = (SELECT SUM(人数) FROM 班级 WHERE 专业ID = 4) WHERE 专业ID = 4; COMMIT;
UPDATE 学生 SET 邮箱 = 'zhangsan_updated@stu.edu.cn' WHERE 学生ID = 1; UPDATE 学生 SET 联系电话 = '13800001111' WHERE 姓名 = '李四'; COMMIT;
UPDATE 课程 SET 学时 = 72 WHERE 课程名称 = '数据库系统'; UPDATE 课程 SET 学分 = 4.5 WHERE 课程ID = 2; COMMIT;
UPDATE 学生选课 SET 成绩 = 88.5 WHERE 学生ID = (SELECT 学生ID FROM 学生 WHERE 姓名 = '张三') AND 课程ID = (SELECT 课程ID FROM 课程 WHERE 课程名称 = '数据库系统'); COMMIT;
数据删除
DELETE FROM 学生选课 WHERE 成绩 < 60;
DELETE FROM 学生选课 WHERE 学生ID = (SELECT 学生ID FROM 学生 WHERE 姓名 = '王五') AND 课程ID = (SELECT 课程ID FROM 课程 WHERE 课程名称 = '数据结构'); COMMIT;
数据查询
SELECT s.学生ID, s.姓名, s.性别, c.班级名称, m.专业名称 FROM 学生 s JOIN 班级 c ON s.班级ID = c.班级ID JOIN 专业 m ON c.专业ID = m.专业ID;
SELECT k.课程ID, k.课程名称, k.学分, t.姓名 AS 授课教师, t.职称 FROM 课程 k JOIN 教师 t ON k.教授教师ID = t.教师ID;
SELECT s.姓名, k.课程名称, sc.成绩, sc.学期, t.姓名 AS 授课教师 FROM 学生选课 sc JOIN 学生 s ON sc.学生ID = s.学生ID JOIN 课程 k ON sc.课程ID = k.课程ID JOIN 教师 t ON k.教授教师ID = t.教师ID WHERE s.姓名 = '张三';
SELECT c.班级名称, ROUND(AVG(sc.成绩), 2) AS 平均成绩 FROM 学生选课 sc JOIN 学生 s ON sc.学生ID = s.学生ID JOIN 班级 c ON s.班级ID = c.班级ID GROUP BY c.班级名称;
SELECT t.姓名, t.职称, COUNT(k.课程ID) AS 授课课程数 FROM 教师 t LEFT JOIN 课程 k ON t.教师ID = k.教授教师ID GROUP BY t.姓名, t.职称;
SELECT u.用户名, u.用户类型, COALESCE(s.姓名, t.姓名, a.姓名) AS 姓名 FROM 系统用户 u LEFT JOIN 学生 s ON u.关联学生ID = s.学生ID AND u.用户类型 = '学生' LEFT JOIN 教师 t ON u.关联教师ID = t.教师ID AND u.用户类型 = '教师' LEFT JOIN 管理员 a ON u.关联管理员ID = a.管理员ID AND u.用户类型 = '管理员';
SELECT m.专业名称, SUM(c.人数) AS 学生总数 FROM 专业 m JOIN 班级 c ON m.专业ID = c.专业ID GROUP BY m.专业名称;
SELECT 课程名称, 学分, 考核方式 FROM 课程 WHERE 学分 > 3.5;
SELECT s.学生ID, s.姓名, ROUND(AVG(sc.成绩), 2) AS 平均分 FROM 学生 s JOIN 学生选课 sc ON s.学生ID = sc.学生ID GROUP BY s.学生ID, s.姓名 HAVING AVG(sc.成绩) > 90;
SELECT k.课程名称, COUNT(sc.学生ID) AS 选课人数 FROM 课程 k LEFT JOIN 学生选课 sc ON k.课程ID = sc.课程ID AND sc.学期 = '2023秋季' GROUP BY k.课程名称; /
|