创建成绩表结构如下:学号sid和课程号cid为主码,学号按照学生表的主码学号,课程号参照课程表的主码课程号cid,当从学生表中删除一条学生记录时,级联删除该生的所有选课信息,当修改学生表中学号sid时,级联更新成绩表中 所有学号约定成绩取值范围为[0,100]
时间: 2023-05-29 15:05:47 浏览: 111
CREATE TABLE score (
sid INT NOT NULL,
cid INT NOT NULL,
score INT,
PRIMARY KEY (sid, cid),
FOREIGN KEY (sid) REFERENCES student(sid) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (cid) REFERENCES course(cid) ON UPDATE CASCADE
) ENGINE=InnoDB;
其中,ON DELETE CASCADE意味着当从学生表中删除一条学生记录时,级联删除该生的所有选课信息;ON UPDATE CASCADE意味着当修改学生表中学号sid时,级联更新成绩表中所有学号。
相关问题
Student(Sid,Sname,Sage,Ssex)学生表 Sid:学号 Sname:学生姓名 Sage:学生年龄 Ssex:学生性别 Course(Cid,Cname,Tid)课程表 Cid:课程编号 Cname:课程名称 Tid:教师编号 SC(Sid,Cid,score)成绩表 Sid:学号 Cid:课程编号 score:成绩 10.1 查询所有同学的学号、姓名、选课数、总成绩?
可以使用以下 SQL 语句查询所有同学的学号、姓名、选课数、总成绩:
```
SELECT Student.Sid, Sname, COUNT(SC.Cid) AS course_num, SUM(SC.score) AS total_score
FROM Student
LEFT JOIN SC ON Student.Sid = SC.Sid
GROUP BY Student.Sid, Sname;
```
这个查询语句使用了学生表 Student 和成绩表 SC 的连接查询,计算了每个学生的选课数和总成绩,最后使用 GROUP BY 和聚合函数对结果进行了分组和统计。LEFT JOIN 是为了包括那些没有选课的学生在内。
针对teaching数据库,查询每门课成绩最低的学生的学号和课程号。
以下是针对teaching数据库的SQL查询语句,用于查询每门课成绩最低的学生的学号和课程号:
```
SELECT s.sid, c.cid
FROM score sc
JOIN student s ON s.sid = sc.sid
JOIN course c ON c.cid = sc.cid
WHERE sc.score = (
SELECT MIN(score)
FROM score
WHERE cid = sc.cid
)
```
解释:
1. 首先,用JOIN语句将score表、student表和course表联结起来,以便能够获取学生的学号和课程的课程号;
2. 然后,设置WHERE条件,筛选出每个课程的成绩最低的学生;
3. 通过子查询,获取每门课程的最低成绩;
4. 最后,将查出来的学生学号和课程号作为结果返回。
请注意,以上查询语句中的表名、字段名等需要根据具体情况进行修改。