学生、课程、成绩三表sql查询

本文介绍了如何使用SQL查询学生、课程和成绩表,包括获取所有学生成绩、统计成绩的最高分、最低分和平均分。此外,还涉及处理空值成绩的方法。

学生表 student(sid,name),sid为主键,name为姓名

课程表course (cid,name) ,cid为主键,name为课程名称

成绩表result(sid,cid,score),score为成绩

新建表

 插入数据

 

 

写一条语句查询所有学生的成绩

 写一条语句,统计最高分最低分平均分

给空值成绩添加为0(好像没用)

 

 

### SQL 查询连接学生表课程表成绩表并获取内容 #### 创建结构 首先,创建学生表课程表成绩表SQL语句如下: ```sql CREATE TABLE student ( sid INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE course ( cid INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE result ( sid INT, cid INT, score DECIMAL(5, 2), FOREIGN KEY (sid) REFERENCES student(sid), FOREIGN KEY (cid) REFERENCES course(cid) ); ``` 通过上述SQL语句,可以创建:`student` 存储学生信息,`course` 存储课程信息,`result` 存储学生成绩信息[^4]。 #### 插入数据示例 以下为插入数据的SQL语句示例: ```sql INSERT INTO student (sid, name) VALUES (1, '张'), (2, '李四'); INSERT INTO course (cid, name) VALUES (1, '数学'), (2, '英语'); INSERT INTO result (sid, cid, score) VALUES (1, 1, 85), (1, 2, 78), (2, 1, 90), (2, 2, 82); ``` #### 查询所有学生成绩 查询所有学生成绩,包括学生姓名、课程名称和成绩SQL语句如下: ```sql SELECT s.name AS 学生姓名, c.name AS 课程名称, r.score AS 成绩 FROM student s JOIN result r ON s.sid = r.sid JOIN course c ON r.cid = c.cid; ``` 此查询将 `student` 、`course` 和 `result` 进行连接,输出每个学生的姓名、所选课程的名称及对应的成绩[^1]。 #### 统计每门课程的最高分、最低分和平均分 统计每门课程的最高分、最低分和平均分的SQL语句如下: ```sql SELECT c.name AS 课程名称, MAX(r.score) AS 最高分, MIN(r.score) AS 最低分, AVG(r.score) AS 平均分 FROM course c JOIN result r ON c.cid = r.cid GROUP BY c.name; ``` 通过 `MAX()`、`MIN()` 和 `AVG()` 函数,可以分别计算每门课程的最高分、最低分和平均分。使用 `GROUP BY` 按照课程名称对结果进行分组[^2]。 #### 将空值成绩替换为0 如果某些学生成绩为空值(NULL),可以使用 `COALESCE()` 函数将其替换为0。以下是实现该功能的SQL语句: ```sql SELECT s.name AS 学生姓名, c.name AS 课程名称, COALESCE(r.score, 0) AS 成绩 FROM student s LEFT JOIN result r ON s.sid = r.sid LEFT JOIN course c ON r.cid = c.cid; ``` `COALESCE()` 函数用于将 `NULL` 值替换为指定的默认值(此处为0)。通过 `LEFT JOIN` 确保即使没有成绩记录的学生也会被包含在结果中[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值