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

内关联 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;

SQL-关联的更多相关文章

  1. 通过Spark SQL关联查询两个HDFS上的文件操作

    order_created.txt   订单编号  订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt   订单编号  订单提取时间 -- :: ...

  2. 学习SQL关联查询

    通过一个小问题来学习SQL关联查询 原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1, ...

  3. (一)SQL关联查询的使用技巧 (各种 join)

    ---恢复内容开始--- (一)SQL关联查询的使用技巧 (各种 join) 这几天因为工作的时候,发现自己的sql语句基础不是很好,特意研究了一下,发现sql语句真的是博大精深,sql语句不仅是要查 ...

  4. SQL关联子查询

    SQL关联子查询执行顺序: 1.先取到主查询中的相关数据,一次取一行主查询的数据 2.然后传入子查询,进行子查询 3.最后做主查询where筛选,注意子查询的where条件同样需要加在主查询后 参考: ...

  5. 通过一个小问题来学习SQL关联查询

    原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1,2 TabB表有两个字段Id,Col ...

  6. MyBatis 实践 -动态SQL/关联查询

    MyBatis 实践 标签: Java与存储 动态SQL 动态SQL提供了对SQL语句的灵活操作,通过表达式进行判断,对SQL进行拼接/组装. if 对查询条件进行判断,如果输入参数不为空才进行查询条 ...

  7. SQL 关联外键报错类型不匹配

    如题,关联外键的时候,报错类型匹配.但是两个 类型都是int sql 如下: CREATE TABLE IF NOT EXISTS `alert_receiver_map` ( `id` INT UN ...

  8. 如何正确理解SQL关联子查询

    一.基本逻辑 对于外部查询返回的每一行数据,内部查询都要执行一次.在关联子查询中是信息流是双向的.外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录.然后,外部查询根据 ...

  9. 一条sql关联删除多张表数据

    现有6张表存在关联关系,要删除主表则其他5张表关联数据也要一块删掉(单条sql多id批量删除) delete t1,t2,t3,t4,t5,t6 FROM rmd_v AS t1 LEFT JOIN ...

  10. 一文让你彻底理解SQL关联子查询

    员工表的主要信息: 需求:检索工资大于同职位的平均工资的员工信息. 直觉的做法 员工多,而相应的职位(如销售员.经理.部门经理等)少,因此首先想到的思路是对职位分组,这样就能分别得到各个职位的平均工资 ...

随机推荐

  1. KETTLE 首次连DB2报错,无驱动。

    DB2 把相应数据库的jar包放入 data-integration\lib 或者data-integration\libswt\win64 重启kettle程序 连接成功 驱动包,我是用的aqua工 ...

  2. C#实现不用随机函数(Random)的洗牌算法

    代码不多,先看效果: 类代码: 1 static class ShuffleCards 2 { 3 private static int lastHash = 0; 4 public static v ...

  3. 搭建 springboot 应用

    一.采用 Spring Initializr 搭建springboot应用 步骤: 1.只需要打开网址: https://start.spring.io/: 2.选择使用 Maven 构建,语言 ja ...

  4. java常用开发学习网站列表

    持续更新中 kettle国内镜像下载 版本 地址 7.1版本 http://mirror.bit.edu.cn/pentaho/Data%20Integration/ 8.2版本 http://mir ...

  5. pytest学习总结

    官方pytest文档:Full pytest documentation - pytest documentation 一.pytest以及辅助插件的安装 1.pytest安装 pip install ...

  6. MyLiveCam使用条款与免责协议

    MyLiveCam(以下简称"我们")在此特别提醒您务必认真阅读.充分理解本<使用条款与免责协议>(以下简称"本协议")中各条款并选择是否接受本协议 ...

  7. 爬qqhentai

    import requestsfrom bs4 import BeautifulSoupimport timeimport reimport osimport randomagentlist = [& ...

  8. prometheus Alertmanager webhook

      一.自定义邮件告警 二.使用docker部署微信机器人告警 1.制作镜像 2.启动容器和指定webhook容器 一.自定义邮件告警 在alertmanager服务的配置文件中指定自定义告警文件 # ...

  9. flink udaf函数

    1.Flink-sql自定义UDAF函数 - 简书 (jianshu.com) 2.Flink SQL 自定义UDAF_k_wzzc的博客-CSDN博客_flink udaf 3.Flink 实践教程 ...

  10. wrf-python离线安装

    由于客户环境不能联网,python的插件库只能离线安装,wrf库的安装中踩了不少坑,特此记录. 1.官方插件库pypi.org只有压缩包,没有提供wheel,在线安装没有问题. 2.下载压缩包解压后, ...