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

内关联 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. vue3 门户网站搭建2-ngnix

    路由配好了,需要调试下 build 后是否可用,这时我们需要一个服务端来运行静态网页. 官网直接下载一个 windows 版本的 ngnix 即可: http://nginx.org/en/downl ...

  2. nginx从仅支持80到支持80和443

    测试环境的域名,之前只支持http.开发同学不知啥时候改了数据库配置,导致所有跳转到到了https了.所以得加上https访问. 配置文件之前是这样的: 1 server { 2 listen 80; ...

  3. 51电子-STC89C51开发板:安装驱动

    全部内容请点击目录列表查看: 51电子-STC89C51开发板:<目录> ---------------------------  正文开始  ---------------------- ...

  4. 使用viper读取配置文件

    配置文件config.yml mysql: type: mysql dsn: "user:pass@tcp(localhost:30306)/db_name?charset=utf8& ...

  5. 20230225 TI Electromagnetic compatibility testing methods and standards

    Hello, and welcome to the TI Precision Labs video, Introducing Electromagnetic Compliance Standard T ...

  6. thunar文件管理器修改默认的关联的终端

    有时候在文件管理器的文件夹中打开终端操作很方便.目前好用的文件管理器基本和虚拟中终端基本上是各个桌面环境的配套产品. 比如xfce环境的thunar文件管理器如果想搭配lxde环境的lxtermina ...

  7. 浅谈Redis大Key与热Key

    如何定义大 Key 和 热 Key 如何定义大 Key 如何定义热 Key 大 Key 和 热 Key 产生的原因 大 Key 和 热 Key 有哪些危害 大 Key 的危害 热 Key 的危害 如何 ...

  8. linux 安装goland

    一.Goland-IDEA 2020.3.2安装 1 下载 下载GoLand https://www.jetbrains.com/go/download/#section=linux 2 安装Gola ...

  9. 修改系统hosts文件访问github

    C:\Windows\System32\drivers\etc 199.232.69.194 github.global.ssl.fastly.net 140.82.114.4 github.com

  10. 查询最上活动的activity

    adb shell dumpsys window windows | grep mCurrent