表关系简介

一、语法

SELECT 字段列表FROM TABLE1
[CROSS JOIN TABLE2 ] |
[NATURAL JOIN TABLE2 ] | [JOIN TABLE2 USING (字段名) ] | [JOIN TABLE2 ON (TABLE.COLUMN_NAME = TABLE2.COLUMN_NAME) ] |
[(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME) ];

二、自然连接

1、USING
  如果不希望参照被连接表的所有同名列进行等值连接,自然连接将无法满足要求,可以在连接时使用USING子句来设置用于等值连接的列(参照列)名。
不允许在参照列上使用表名或者别名作为前缀

--99语法
SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAMEFROM EMPJOIN DEPTUSING (DEPTNO);--92语法
SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAMEFROM EMP, DEPTWHERE EMP.DEPTNO = DEPT.DEPTNO;

2、ON
  如果要参照非同名的列进行等值连接,或想设置任意的连接条件,可以使用On子句

SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAMEFROM EMPJOIN DEPTON (EMP.DEPTNO = DEPT.DEPTNO);

三、自连接

  自己和自己做链接

--99语法
SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGRFROM EMPLOYEES WORKERJOIN EMPLOYEES MANAGERON (WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID);--92语法
SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGRFROM EMPLOYEES WORKER, EMPLOYEES MANAGERWHERE WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID;

四、非等值连接

--99语法
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVELFROM EMPLOYEES EJOIN JOB_GRADES JON E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;--92语法
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVELFROM EMPLOYEES E, JOB_GRADES JWHERE E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;

五、INNER|OUTER 连接

1、INNER 连接
  两个表连接,只返回匹配的行,被称为内连接。

--查询所有员工以及其部门名字
--99语法
SELECT LAST_NAME, DEPARTMENT_NAMEFROM EMPLOYEES EINNER JOIN DEPARTMENTS DON E.DEPARTMENT_ID = D.DEPARTMENT_ID;--92语法
SELECT LAST_NAME, DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;

2、LEFT OUTER | RIGHT OUTER 连接
  两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外连接。

--哪些部门没有员工,看出部门名字
--99语法
SELECT DEPARTMENT_NAMEFROM EMPLOYEES ERIGHT JOIN DEPARTMENTS DON E.DEPARTMENT_ID = D.DEPARTMENT_IDWHERE LAST_NAME IS NULL;--92语法
SELECT DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DWHERE E.DEPARTMENT_ID(+) = D.DEPARTMENT_IDAND LAST_NAME IS NULL;

3、FULL OUTER 连接
  两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为全外联接。

--99
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES EFULL OUTER JOIN DEPARTMENTS DON E.DEPARTMENT_ID = D.DEPARTMENT_ID;--92
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS DON E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID(+);

六、笛卡尔积

笛卡尔集会在下面条件下产生:

1、连接条件被遗漏

2、连接条件不正确

3、所有表中的所有行互相连接

--99语法
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES ECROSS JOIN DEPARTMENTS D;--92语法
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAMEFROM EMPLOYEES E, DEPARTMENTS D;

显示来自多个表的数据——JOIN相关推荐

  1. php mysql 多表搜索_PHP MYSQL查询,使用来自多个表的数据搜索多个字段/列

    很长一段时间潜伏在这里,多年来一直在使用这个网站的建议,现在我有一个问题,我找不到答案 – 我确信解决方案很简单! 我正在为音乐曲目建立一个标记系统.我有三张桌子 曲目 --------------- ...

  2. html行标签并列显示,excel数据透视表_excel数据透视表怎样不显示汇总

    EXCEL中的数据透视表有什么作用,用在哪些方面? excel2010数据透视表怎么做 excel2010数据透视表做法,需要用户打开需要编辑的文件,进入后点击数据透视表,选中我们需要统计的数据,默认 ...

  3. 如何使用Django显示来自DigitalOcean API的数据

    The author selected the Mozilla Foundation to receive a donation as part of the Write for DOnations ...

  4. left join左表百万数据查询慢_Spark SQL 之 Join 实现

    正好最近跑一些spark sql ,重新温习了遍有关联合查询的一些底层实现,参考这位博主的分享Spark SQL 之 Join 实现 Join作为SQL中一个重要语法特性,几乎所有稍微复杂一点的数据分 ...

  5. python使用pandas通过聚合获取时序数据的最后一个指标数据(例如长度指标、时间指标)生成标签并与原表连接(join)进行不同标签特征的可视化分析

    python使用pandas通过聚合获取时序数据的最后一个指标数据(例如长度指标.时间指标)生成标签并与原表连接(join)进行不同标签特征的可视化分析 目录

  6. db2 两个结构相同的表_从两个工作表提取数据记录,并显示相同记录的报告

    大家好,今日继续VBA数据库解决方案的讲解,今日讲解的是第47讲,内容是:在两个工作表提取数据记录,并显示相同记录的报告. 我们在工作中经常会遇到这样的情况,要分析两个工作表,知道哪些记录是重复的,如 ...

  7. Oracle表中数据小数写到前台是百分数显示

    (Oracle表中数据小数写到前台是百分数显示)Oracle表中数据小数写到前台是百分数显示 下面

  8. MySql左连接无法显示左表全部数据

    问题查不出左表全部数据 select * from a left join on b where b.name="kk" 方案 select * from a left join ...

  9. elementui的table展开行显示另一关联子table表的数据

    需求:主表table可实现展开行显示关联子table的列表数据​ <div class="table-box"><el-tableref="enquir ...

最新文章

  1. Java创建初始化List集合的几种方式
  2. 活动 | Daung~!他们用产品思维改变医疗挂号问题
  3. 深入理解 python 中的赋值、引用、拷贝、作用域
  4. Redis的key和value大小限制
  5. vue 传参 微信_vue-router 你可能忽略的知识点
  6. 学习Android移植平台工具介绍的心得体会
  7. linux_从windows到ubuntu再到manjaro
  8. 广州新一代域名注册量动态:11月下旬净增3425个
  9. Hls之TS流分离音视频
  10. 【精华贴】一键启动bat脚本——Anaconda Jupyter Notebook
  11. 打开阿里云网页为空白的解决办法
  12. 计算机使用的dns错误,dns错误,教您dns错误怎么修复
  13. 全开源免费的客服系统来了
  14. 导出word文档生成docx格式 添加水印
  15. 华为无线三层无线简单配置
  16. 【影像组学】理论学习——特征类型
  17. Mybatis丶Mybatis-Plus
  18. 周鸿伟鸿蒙系统,周鸿袆正式宣布!鸿蒙系统开源比较好,将全力支持华为新系统...
  19. 因式分解结合最近邻:多层面的协同过滤模型
  20. ScrumMaster的六大主要职责

热门文章

  1. 【ubuntu】ubuntu14.04、16.04、18.04 LTS版本支持时间
  2. 【AI】CelebA数据介绍、下载及说明
  3. 【视频】V4L2之应用流程
  4. 信息与计算机科学考研学校排名,计算机科学与技术考研学校排名
  5. 但并不从包含函数声明的接口派生_C++的虚函数和纯虚函数
  6. bootstrap 时间线_股票配资均量线的实战用法绝技是什么?怎么用它判断买卖点?...
  7. 松江库卡机器人_上海高质量发展调研行|库卡机器人:为全球提供“松江创造”的产品...
  8. ibm笔记本电脑电池_开善乡 2.0间距笔记本电池连接器公座 11P电池座接口
  9. nosql mysql mongodb_关于NoSQL之MongoDB的一些总结
  10. 【二级java】排序技术