请使用sql语言写一段针对学生成绩管理的代码
时间: 2023-09-20 22:12:54 浏览: 61
以下是一个简单的学生成绩管理系统的 SQL 代码:
1. 创建表格:
```
CREATE TABLE school (
school_id INT PRIMARY KEY,
school_name VARCHAR(255)
);
CREATE TABLE college (
college_id INT PRIMARY KEY,
school_id INT,
college_name VARCHAR(255),
FOREIGN KEY (school_id) REFERENCES school(school_id)
);
CREATE TABLE class (
class_id INT PRIMARY KEY,
college_id INT,
class_name VARCHAR(255),
FOREIGN KEY (college_id) REFERENCES college(college_id)
);
CREATE TABLE student (
student_id INT PRIMARY KEY,
class_id INT,
student_name VARCHAR(255),
FOREIGN KEY (class_id) REFERENCES class(class_id)
);
CREATE TABLE course_category (
category_id INT PRIMARY KEY,
category_name VARCHAR(255)
);
CREATE TABLE course (
course_id INT PRIMARY KEY,
category_id INT,
course_name VARCHAR(255),
FOREIGN KEY (category_id) REFERENCES course_category(category_id)
);
CREATE TABLE term (
term_id INT PRIMARY KEY,
term_name VARCHAR(255)
);
CREATE TABLE score_category (
score_category_id INT PRIMARY KEY,
score_category_name VARCHAR(255)
);
CREATE TABLE score (
score_id INT PRIMARY KEY,
term_id INT,
course_id INT,
student_id INT,
score_category_id INT,
score_value FLOAT,
FOREIGN KEY (term_id) REFERENCES term(term_id),
FOREIGN KEY (course_id) REFERENCES course(course_id),
FOREIGN KEY (student_id) REFERENCES student(student_id),
FOREIGN KEY (score_category_id) REFERENCES score_category(score_category_id)
);
```
2. 插入数据:
```
INSERT INTO school (school_id, school_name) VALUES (1, '清华大学');
INSERT INTO college (college_id, school_id, college_name) VALUES (1, 1, '计算机科学与技术学院');
INSERT INTO class (class_id, college_id, class_name) VALUES (1, 1, '计算机科学与技术1班');
INSERT INTO student (student_id, class_id, student_name) VALUES (1, 1, '小明');
INSERT INTO course_category (category_id, category_name) VALUES (1, '计算机类');
INSERT INTO course (course_id, category_id, course_name) VALUES (1, 1, '数据库原理');
INSERT INTO term (term_id, term_name) VALUES (1, '2019-2020第一学期');
INSERT INTO score_category (score_category_id, score_category_name) VALUES (1, '考试');
INSERT INTO score (score_id, term_id, course_id, student_id, score_category_id, score_value) VALUES (1, 1, 1, 1, 1, 89.5);
```
3. 查询数据:
```
-- 查询某个学生的成绩
SELECT score_value
FROM score
WHERE student_id = 1;
-- 查询某个班级的平均成绩
SELECT AVG(score_value)
FROM score
WHERE student_id IN (SELECT student_id FROM student WHERE class_id = 1);
-- 查询某个课程的成绩分布
SELECT score_category_name, COUNT(*)
FROM score
INNER JOIN score_category ON score.score_category_id = score_category.score_category_id
WHERE course_id = 1
GROUP BY score_category_name;
-- 查询某个学生的总成绩
SELECT SUM(score_value)
FROM score
WHERE student_id = 1;
```
以上代码只是一个简单的示例,实际使用中需要根据具体情况进行修改和优化。