根据如下数据表写出SQL语句 学生信息表(student) 学号(id) 姓名(name) 001 张三 李四 003 王五 年龄(age) 16 16 n 学生成绩表(score) 学号(id) 00I 001 002 002 科目 (sub) 语文 数学 语文 数学 分数(sco) 85 95 60 602、请写出SQL,查询每个学生的成绩,查询结果如下:学号(id)姓名(name)科目(age)语文张三张三数学李四语文数学李四00gNULL 分数(sco) 福 001001002 95 60 60 002 王五 NULL
时间: 2023-10-08 11:03:47 浏览: 133
SQL语句如下:
```
SELECT student.id, student.name, score.sub, score.sco
FROM student
LEFT JOIN score
ON student.id = score.id;
```
查询结果如下:
```
学号(id) 姓名(name) 科目(sub) 分数(sco)
001 张三 语文 85
001 张三 数学 95
002 李四 语文 60
002 李四 数学 60
003 王五 NULL NULL
```
相关问题
根据如下数据表写出SQL语句 学生信息表(student) 学号(id) 姓名(name) 001 张三 李四 003 王五 年龄(age) 16 16 n 学生成绩表(score) 学号(id) 00I 001 002 002 科目 (sub) 语文 数学 语文 数学 分数(sco) 85 95 60 603、请写出 SQL,统计每个学生的总分,并按总总分降序排序。查询结果如下:姓名(name)总分 (total) 学号(id) 001 002 003 张三 李四 王五 180 120 0
可以使用如下SQL语句:
```
SELECT s.name AS name, COALESCE(SUM(sc.sco), 0) AS total, s.id AS id
FROM student s LEFT JOIN score sc
ON s.id = sc.id
GROUP BY s.id, s.name
ORDER BY total DESC;
```
解释一下:
- 首先从学生信息表(student)中选择学生姓名(name)和学号(id),并且使用LEFT JOIN连接到学生成绩表(score)中。
- 使用COALESCE函数将SUM函数的结果转换为0,因为如果某个学生没有成绩,则SUM函数返回NULL,这会导致排序出错。
- 使用GROUP BY将结果按学号(id)和姓名(name)分组计算每个学生的总分。
- 使用ORDER BY将结果按照总分(total)降序排序。
Student 表: num name age scoreid 97001 张三 23 1002 97002 李四 21 1005 97003 王五 NULL 1001 97004 赵六 22 1004 97005 吴七 20 1003 Socre 表: num linux C cpp 1001 56 67 80 1002 72 84 59 1003 49 60 60 1004 80 72 55 1005 61 20 57 (1) 写出创建student表的sql语句(num 为主键), (2) 写出sql语句,将age 的类型由 int 修改为 tiny int; (3) 写出sql语句查出李四同学的 C++ (字段名为cpp)的成绩 ; (4) 写出sql语句,显示姓名为李四,吴七,张三的学号(num); (5) 请写出sql,删除年龄(age)为NULL的记录。
(1) 创建Student表的SQL语句:
```mysql
CREATE TABLE Student (
num VARCHAR(20) PRIMARY KEY,
name VARCHAR(20),
age INT,
scoreid VARCHAR(20)
);
```
(2) 将age的类型由int修改为tinyint的SQL语句:
```mysql
ALTER TABLE Student MODIFY age TINYINT;
```
(3) 查出李四同学的C++(字段名为cpp)的成绩的SQL语句:
```mysql
SELECT cpp FROM Student s, Score sc WHERE s.num=sc.num AND s.name='李四';
```
(4) 显示姓名为李四、吴七、张三的学号(num)的SQL语句:
```mysql
SELECT num FROM Student WHERE name IN ('李四', '吴七', '张三');
```
(5) 删除年龄(age)为NULL的记录的SQL语句:
```mysql
DELETE FROM Student WHERE age IS NULL;
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)