任务五:子查询 1.查询与张海是同一民族的学生的学号、姓名。 2.查询与罗小红在同一个系的学生学号,姓名和联系电话(查询结果中包括罗小红) 3.查询没有被学生选的课程号及课程名(分别用in和exists来实现)。 查询其他系中比信息系学生年龄都小的学生的姓名和年龄。
时间: 2024-11-28 07:42:12 浏览: 8
七年级上第一次月考试题starter与unit1月考试题.docx
对于子查询的任务,我们可以创建嵌套的查询来达到特定的结果。以下是针对每个任务的具体SQL查询:
1. 查找与张海同民族的学生学号和姓名:
```sql
SELECT student_id, name
FROM students
WHERE student_nation = (
SELECT student_nation
FROM students
WHERE student_id = '张海'
);
```
2. 查找与罗小红在同一系的学生学号、姓名和联系电话(包含罗小红自身的信息):
```sql
SELECT s.student_id, s.name, phone
FROM students s
WHERE department_id IN (
SELECT department_id
FROM students
WHERE student_id = '罗小红'
);
```
注意这里假设phone是一个包含电话号码的字段。
3. 使用IN关键字查找没有被学生选的课程号和课程名:
```sql
SELECT c.course_id, c.course_name
FROM courses c
WHERE c.course_id NOT IN (
SELECT sc.course_id
FROM student_courses sc
);
```
使用EXISTS关键字实现同样效果:
```sql
SELECT c.course_id, c.course_name
FROM courses c
WHERE NOT EXISTS (
SELECT 1
FROM student_courses sc
WHERE sc.course_id = c.course_id
);
```
4. 查询其他系中比信息系学生年龄小的学生姓名和年龄:
```sql
SELECT s.name, s.age
FROM students s
WHERE s.department_id != '信息系' AND s.age < (
SELECT MIN(age)
FROM students
WHERE department_id = '信息系'
);
```
这会返回所有其他系的学生中年龄小于信息系最小年龄的学生的姓名和年龄。
阅读全文