我给你四张表,表结构是第一张表名称是student,字段是 s_id,s_name,s_birth,s_sex; 第二张表名称是teacher字段是t_id,t_name 第三张表名称是course,字段是 c_id,c_name,t_id; 第四张表名称是score,表字段是 s_id,c_id,s_score,根据以上表结构生成难度高的oracle sql题目及答案,网上查询不到
时间: 2024-02-19 17:03:36 浏览: 116
数据库表结构
好的,以下是一道难度较高的 Oracle SQL 题目及答案:
题目:
查询出每个学生的姓名、性别、出生日期以及该学生所选的课程的名称和分数,如果该学生没有选课,则显示课程名为 null,分数为 0。
要求:
- 仅使用一条 SQL 语句实现。
- 使用 ANSI SQL 标准语法。
答案:
```sql
SELECT s.s_name, s.s_sex, s.s_birth, c.c_name, NVL(sc.s_score, 0)
FROM student s
LEFT JOIN score sc ON sc.s_id = s.s_id
LEFT JOIN course c ON c.c_id = sc.c_id
ORDER BY s.s_id, c.c_id;
```
解析:
- 使用左连接查询,确保查询结果中包含了所有学生信息以及他们所选的课程信息。
- 使用 NVL 函数将没有选课的学生分数默认为 0。
- 使用 ORDER BY 子句对查询结果按学生 ID 和课程 ID 进行排序。
阅读全文