关联的本质:从一张表依次取一条数据和另一张表每一条数据进行匹配

内关联 inner join (inner可省略) -- 只显示关联的上的数据
外关联有三种
左外 left join -- 主表数据不丢失(关键字左边的表)
右外 right join -- 主表数据不丢失(关键字右边的表)
全外 full join -- 主表数据不丢失(左右都是主表)

未明确定义列 就是两个表里面都存在的字段必须带上别名 要告诉数据库你查询的字段来自哪张表
表别名的作用
带出字段 免得自己写错
关联字段的名字可以不一样,因为它是根据里面的值去做关联的
关联字段的数据类型要一致

笛卡尔积(无条件关联)14*4=56
工作中有时候忘记写关联条件了,就变成了笛卡尔积,数据累积暴增,导致程序跑的非常慢!
select e.*,d.*
from emp e
join dept d on 1 = 1
;

两张表关联起来就是一张表 where就理解为取数条件
select *
from dept d
join emp e on d.deptno = e.deptno
where d.deptno = 10
;
写在on后面就是关联条件,只有10部门的这条数据才能关联的上,主表数据不丢失。
select *
from dept d
join emp e on d.deptno = e.deptno and d.deptno = 10
;
总结:内关联条件写在where后面跟写在on后面结果是一样的
建议把条件写在on后面 性能会好点

关联里面,同一个表可以用很多次
-- 3*3 + 5*5 + 6*6
select *
from emp a
join emp b on a.deptno = b.deptno;

表自连 找上级
select a.empno,a.ename,a.mgr
,b.empno,b.ename,b.mgr
from emp a
join emp b on a.mgr = b.empno ;

多表关联 语法
select *
from emp a
join emp b on a.deptno = b.deptno
join emp c on a.deptno = b.deptno
join dept d on a.deptno = b.deptno;

最新文章

  1. Java反射使用技巧
  2. 自由缩放属性resize
  3. sql事务和锁
  4. C语言基本点初探
  5. BMP图片格式
  6. 夺命雷公狗ThinkPHP项目之----企业网站18之网站配置列表页的完成
  7. oracle10g库连接报错
  8. Redis初步
  9. (转载)用PHP正则表达式清除字符串的空白
  10. 给方法传递参数:ref参数和out参数
  11. Java设计模式之单例模式详解
  12. DOM解析原理示意
  13. Bom部分
  14. Flask--偏函数, 线程安全, 请求上下文
  15. 浅析JavaScript工厂模式
  16. MyBatis通过Mapper动态代理来实现curd操作
  17. python3-基础2
  18. LeetCode——300. Longest Increasing Subsequence
  19. python脚本批量复制文件
  20. 国内高速Maven仓库

热门文章

  1. 1构建NTP时间服务器
  2. jQuery对象和js对象是怎样转换的?
  3. gitee 操作
  4. web服务器应答状态代码(status)及其含义
  5. xh_零基础网站渗透第一部
  6. nanopi SOCKS5 代理
  7. 梦想Android版CAD控件(安卓CAD二次开发,安卓CAD控件)2023.02.26更新
  8. mblink study111
  9. 日志服务化&可视化&统计化
  10. Qt-设置背景色