[SQL]连接查询
在数据库中创建三个表:
- 学生信息表:
学号 | 姓名 | 地址 | 性别 | 班级 |
---|---|---|---|---|
1 | 张一一 | 安徽省 | 男 | 1 |
2 | 刘二二 | 福建省 | 女 | 2 |
3 | 王三三 | 河南省 | 男 | 3 |
4 | 肖四四 | 北京市 | 男 | 4 |
5 | 彭五五 | 新疆省 | 男 | 5 |
- 学生成绩表:
学号 | 科目 | 成绩 |
---|---|---|
1 | 数学 | 100 |
1 | 语文 | 100 |
2 | 数学 | 99 |
2 | 语文 | 99 |
3 | 数学 | 98 |
3 | 语文 | 98 |
4 | 数学 | 97 |
4 | 语文 | 97 |
- 班主任:
姓名 | 班级 |
---|---|
刘班主 | 1 |
王班主 | 2 |
任班主 | 3 |
张班主 | 4 |
李班主 | 5 |
等值连接
select 学生信息.学号, 姓名, 成绩
from 学生信息, 学生成绩
where 学生信息.学号 = 学生成绩.学号
连接结果:
自身连接
select *
from 学生信息 t1, 学生信息 t2 -- 重命名表
where t1.学号 = t2.学号
运行结果:
外连接
在查询结果中保留那些不满足连接条件的元组,其他属性上填空值。、
如果只把左边的基本表中要舍弃的元组保留就叫做左外连接,反之叫做右外连接。
select *
from 学生信息
left outer join 学生成绩 on 学生信息.学号 = 学生成绩.学号 -- 左外连接
运行结果:
复合连接条件
select *
from 学生信息, 学生成绩, 班主任
where 学生信息.学号=学生成绩.学号 and 学生信息.班级=班主任.班级