有sc表,student表,course表#当向sc表插入一行数据时,根据成绩对student表的总学分进行修改,如果成绩大于60,则总学分加上该课程的学分
时间: 2024-04-02 16:34:23 浏览: 27
可以使用如下的SQL语句实现:
```
INSERT INTO sc (student_id, course_id, score) VALUES (1, 1001, 80);
UPDATE student
SET total_credit =
CASE
WHEN (SELECT score FROM sc WHERE student_id = 1 AND course_id = 1001) > 60
THEN total_credit + (SELECT credit FROM course WHERE id = 1001)
ELSE total_credit
END
WHERE id = 1;
```
这个语句做了以下几件事情:
1. 向sc表中插入一行数据,其中学生id为1,课程id为1001,成绩为80。
2. 根据学生id和课程id从sc表中查询出成绩。
3. 如果成绩大于60,则从course表中查询出该课程的学分,并将学生的总学分加上该学分。
4. 将修改后的总学分更新到student表中对应的学生记录中。
相关问题
mysql创建触发器,实现当向SC表插入一行数据时,根据成绩对student表的总学分进行修改。如果成绩>=60,总学分加上该课程的学分,否则总学分不变。
好的,这是一个关于MySQL触发器的问题。这里是一个实现该功能的MySQL触发器的示例代码:
```
CREATE TRIGGER update_credit AFTER INSERT ON SC
FOR EACH ROW
BEGIN
IF NEW.grade >= 60 THEN
UPDATE student
SET total_credit = total_credit + (SELECT credit FROM course WHERE course_id = NEW.course_id)
WHERE student_id = NEW.student_id;
END IF;
END;
```
这个触发器会在SC表中插入一行数据时自动触发。如果这行数据的成绩(grade)大于等于60,那么它会查找对应课程的学分(credit),并将该学分加到student表中对应学生的总学分(total_credit)上。如果成绩小于60,总学分不会发生变化。
创建student,course,sc表
可以使用 SQL 语句来创建 student, course, sc 表。
student 表示学生信息,可以有字段:ID(学号)、Name(姓名)、Gender(性别)、Age(年龄)等。
course 表示课程信息,可以有字段:ID(课程号)、Name(课程名称)、Credit(学分)等。
sc 表示学生选课信息,可以有字段:StudentID(学号)、CourseID(课程号)、Grade(成绩)等。
示例 SQL 语句如下:
```
CREATE TABLE student (
ID INT PRIMARY KEY,
Name VARCHAR(20),
Gender CHAR(1),
Age INT
);
CREATE TABLE course (
ID INT PRIMARY KEY,
Name VARCHAR(20),
Credit INT
);
CREATE TABLE sc (
StudentID INT,
CourseID INT,
Grade INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES student(ID),
FOREIGN KEY (CourseID) REFERENCES course(ID)
);
```
注意:上面的 SQL 语句是根据 MySQL 的语法,如果使用其他数据库管理系统可能会有所不同。