假设有一张学生表t_student包含学号、姓名、所在班级信息;一张教师表包括教师编号、教师名称信息;一张班级表t_class包含班级编号、班级名称、班主任信息;一张课程表t_course包含课程编号、课程名称、授课老师信息;一张成绩表t_score包含参加考试的学生学号、课程编号、分数。
根据以上表结构,可以进行如下的SQL操作:
- 创建学生表(t_student):
CREATE TABLE t_student ( id INT AUTO_INCREMENT PRIMARY KEY, student_id VARCHAR(10) NOT NULL, student_name VARCHAR(20) NOT NULL, class_id INT NOT NULL, FOREIGN KEY (class_id) REFERENCES t_class(id) );
- 创建教师表:
CREATE TABLE t_teacher ( id INT AUTO_INCREMENT PRIMARY KEY, teacher_id VARCHAR(10) NOT NULL, teacher_name VARCHAR(20) NOT NULL );
- 创建班级表(t_class):
CREATE TABLE t_class ( id INT AUTO_INCREMENT PRIMARY KEY, class_id VARCHAR(10) NOT NULL, class_name VARCHAR(20) NOT NULL, head_teacher INT NOT NULL, FOREIGN KEY (head_teacher) REFERENCES t_teacher(id) );
- 创建课程表(t_course):
CREATE TABLE t_course ( id INT AUTO_INCREMENT PRIMARY KEY, course_id VARCHAR(10) NOT NULL, course_name VARCHAR(20) NOT NULL, teacher_id INT NOT NULL, FOREIGN KEY (teacher_id) REFERENCES t_teacher(id) );
- 创建成绩表(t_score):
CREATE TABLE t_score ( id INT AUTO_INCREMENT PRIMARY KEY, student_id VARCHAR(10) NOT NULL, course_id VARCHAR(10) NOT NULL, score INT NOT NULL, FOREIGN KEY (student_id) REFERENCES t_student(student_id), FOREIGN KEY (course_id) REFERENCES t_course(course_id) );
- 查询某个班级的所有学生:
SELECT * FROM t_student WHERE class_id = 1;
- 查询某个教师教授的所有课程:
SELECT * FROM t_course WHERE teacher_id = 1;
- 查询某个学生的所有成绩:
SELECT * FROM t_score WHERE student_id = '20190001';
- 查询某门课程的平均成绩:
SELECT AVG(score) FROM t_score WHERE course_id = 'C001';
- 查询某个班级的平均成绩:
SELECT AVG(score) FROM t_score WHERE student_id IN (SELECT student_id FROM t_student WHERE class_id = 1);
原文地址: http://www.cveoy.top/t/topic/Hu9 著作权归作者所有。请勿转载和采集!