连接查询

概要

  • 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接
  • 笛卡尔乘积现象:表1 有m行,表2 有n行,结果=m*n行

  • 发生原因:没有有效的连接条件
  • 如何避免:添加有效的连接条件
  • 分类
    ①按年代:sql92标准、sql99标准 (推荐)
    ②按功能:内连接、外连接、交叉连接
    补充
    1、内连接包括等值连接、非等值连接、自连接
    2、外连接包括左外连接、右外连接、全外连接
    3、sql99标准:支持内连接、外连接(左外和右外)、交叉连接

sql92标准

1、等值连接

  • 语法:where 表1.字段=表2.字段
  • 特点
    ①夺标等值连接的结果为多表的交集部分
    ②n个表连接,则至少需要n-1个连接条件
    ③多表的顺序没有要求
    ④一般需要为表起别名
    ⑤可以搭配排序、分组、筛选一起使用
  • 多次用到表名限定,可将表起别名,语法同为字段起别名

    补充:为表起别名后,无法使用原始表名作为限定
  • 涉及多个表时,表可以前后交换,无固定位置
  • 可以加筛选
  • 可以加分组
  • 可以排序
  • 可以实现多表连接

2、非等值连接

  • 涉及between and等的连接

3、自连接

  • 在同一张表中建立若干连接

sql99标准

  • 语法:
    select 查询列表
    from 表1 别名【连接类型】
    join 表2 别名
    on 连接条件
    【where 筛选条件】
    【group by 分组】
    【having 筛选条件】
    【order by 排序列表】

1、内连接(inner)

  • 语法
    select 查询列表
    from 表1 别名
    inner join 表2 别名
    on 连接条件;
    【where】
    【group by】
    【having】
    【order by】

  • 特点
    ①可以添加排序、分组、筛选
    ②inner可以省略
    ③筛选条件放在where后,连接条件放在on后,提高了分离性,便于阅读
    ④inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集

1.1等值连接

  • 案例一:普通等值连接

    补充
    1、表交换顺序仍成立
  • 案例二:涉及三个表的等值连接

1.2非等值连接

1.3自连接

2、外连接

  • 应用场景:用于查询一个表中有,另一个表中没有的记录
  • 特点:
    ①外连接的查询结果为主表中的所有记录
    如果从表有和它匹配的,则显示匹配的值
    如果从表中没有和它匹配的,则显示null值
    外连接查询结果=内连接结果+主表有而从表没有的记录
    ②左外和右外交换两个表的顺序,可以实现同样的效果

2.1左外连接(left【outer】)

  • 特点:left join左边的是主表
  • 案例

2.2右外连接(right【outer】join)

  • 特点:right join右边的是主表

2.3全外连接(full【outer】join)

  • 特点:内连接的结果+表1中有但表2没有的+表2中有单表1没有的

3、交叉连接(cross join)

  • 特点:相当于笛卡尔乘积

总结

  • 内连接
  • 左外连接
  • 右外连接

  • 全外连接

连接查询——笛卡尔乘积相关推荐

  1. MySQL连接查询—笛卡尔乘积

    连接查询 含义:连接查询又称为多表查询,当查询的字段来自多个表时,就会用到连接查询. 笛卡尔乘积 笛卡尔乘积现象:表1有 m 行,表2有 n 行,则查询结果有 m*n 行. SELECT `name` ...

  2. MySQL连接查询-笛卡尔乘积

    MySQL连接查询 前言 一.笛卡尔积 二.SQL92(支持内连接) 三.SQL99(内.外.交叉) 1.内连接 2.外连接 2.1.左右外连接 2.2.全外连接 3.交叉连接(MySQL支持) 总结 ...

  3. 一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接

    文章目录 笛卡尔乘积 连接查询分类 等值连接 非等值连接 自连接 外连接 交叉连接 连接查询又称为多表查询,当查询的字段来自于多个表时,使用连接查询. 笛卡尔乘积 笛卡尔乘积现象:表1有m行,表2有n ...

  4. 笛卡尔乘积 oracle,笛卡尔乘积引出的表的连接

    1.多表连接简介: 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个表,而如果大多查询只涉及一个表的,那么那个表也往往低于第三范式,存在大量冗余与异常. 因此,连接(Join)就是一 ...

  5. 真正让你明白Hive调优系列3:笛卡尔乘积,小表join大表,Mapjoin等问题

    0.Hive中的优化分类    真正想要掌握Hive的优化,要熟悉相关的MapReduce,Yarn,hdfs底层源码,明晰Hive的底层执行流程.真正让你明白Hive调优系列,会征对下面分类逐一分析 ...

  6. 数据库中的四大join 笛卡尔乘积(以MySQL为例)

    1. 绪言 不管是面试还是实际工作中,总是会听到你对两个表做连接查询试试呢,你知道数据库有哪些连接吗,诸如此类的对话 数据库中,表与表之间大部分都是存在关系的,比如经典的学生表和班级表.班级表与学校表 ...

  7. 笛卡尔乘积c语言代码,c# – 高效笛卡尔乘积算法

    有人可以向我证明比目前使用的笛卡儿乘积算法更有效(假设有一个).我已经看了周围的SO和谷歌,但看不到任何明显的东西,所以我可能会缺少一些东西. foreach (int i in is) { fore ...

  8. sql语句中出现笛卡尔乘积

    原文地址:http://sunstring.blog.163.com/blog/static/210478165201342943836560/ 本篇文章中,主要说明SQL中的各种连接以及使用范围,以 ...

  9. mysql 迪卡尔运算_「笛卡尔乘积」mysql笛卡儿积 - seo实验室

    笛卡尔乘积 1.笛卡儿积数学理解 A={2,3} :B= {0,2,4} AxB = {(2,0),(3,0),(2,2),(3,2),(2,4),(3,4)},则AxB的结果集既是笛卡儿积: 但其不 ...

最新文章

  1. Eclipse ADT 21 Preview 10 发布
  2. 如何判断服务器遭到***
  3. 计算机考研计组简答题复习-本篇长期更新
  4. 链表之删除链表中间节点
  5. linux过滤文件的关键字,linux tail 过滤日志文件中的关键字
  6. 小白的学习笔记 —— React环境构建 常用语法
  7. java 按顺序读取文件夹_java读取某个文件夹下的所有文件实例代码
  8. Java笔记——关于设置自定义字体、全局字体方面和getFont()的使用
  9. BLC 以及 线性化
  10. PS常用的三种抠图方法,能应对99%的抠图场景
  11. 多米诺骨牌java_通过递归和回溯找到所有可能的多米诺骨牌链
  12. 分享35套极其精美的高清桌面壁纸免费下载
  13. win10系统 没有wifi图标 WiFi列表没有显示
  14. cPanel里的 Addon Domain/Subdomains/Parked domain 区别
  15. ant modal 修改样式 style
  16. 国内物联网平台(7):Ablecloud物联网自助开发和大数据云平台
  17. 从渲染原理谈前端性能优化
  18. banner 生成、模板
  19. 【MFC】打砖块小游戏(中)(6)
  20. 客户订购登记管理系统(数据库)

热门文章

  1. 使用表格和 CSS 设计天气预报样式
  2. Matlab 关联文件
  3. 神仙级Python入门教程(非常详细),从零基础入门到精通,看完这篇就够了
  4. PTA甲1124 Raffle for Weibo Followers (20 point(s))
  5. 计算用户输入的日期距离1990年1月1日相距多少天
  6. android 7.11 官方下载,android11系统下载正式版|android11系统正式版-520下载站
  7. Windows版iCloud增加密码生成功能,可共享iCloud驱动器文件
  8. 微型计算机原理经典,微机原理经典课后作业考试必考
  9. 如何快速查看将C反汇编的代码
  10. spring MVC --spring MVC原理