知识点:
交叉连接
内连接
外连接:左外连接、右外连接
以下实验涉及到两张表,表a和表b如下
表a.png
表b.png
交叉连接
- 对两张表进行笛卡尔积 如果一个表有m行,一个表n行,两张交叉连接后产生m*n行
- 交叉连接会差生很多无用数据,在现实生活中使用较少
select *
from a_table,b_table;
查询后有30条记录
交叉连接查询结果.png
内连接
思考如何去掉无用数据?--WHERE
#写法一 方言
select *
from a_table,b_table
where a_table.deptno = b_table.deptno
#写法二 标准
select *
from a_table inner join b_table
on a_table.deptno = b_table.deptno
【需求】希望打印出所有员工编号、姓名、部门名称
此时内连接无法满足需求,把小红等人扔掉了
内连接查询结果.png
select id,name,deptname
from a_table inner join b_table
on a_table.deptno = b_table.deptno
左(外)连接
- 关键字:left [outer] join
-
左表是主表,都显示;右表不匹配部分用Null填充
左外连接查询结果.png
select *
from a_table left outer join b_table
on a_table.deptno = b_table.deptno
右(外)连接
- 关键字:right [outer] join
-
右表是主表,都显示;左表不匹配部分用Null填充
右外连接查询结果.png
select *
from a_table right outer join b_table
on a_table.deptno = b_table.deptno
总结:
内连接只返回符合条件的记录;
外连接除了返回符合条件的记录+不符合条件的记录(不匹配部分用null填充)
网友评论