Mysql中的连接

知识点:
交叉连接
内连接
外连接:左外连接、右外连接

以下实验涉及到两张表,表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填充)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容