zoukankan      html  css  js  c++  java
  • 2.6 DQL 连接查询

    一、含义

    当查询中涉及到了多个表的字段,需要使用多表连接

    select 字段1,字段2

    from 表1,表2,...;

    笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
    如何解决:添加有效的连接条件
     
     
     
     

    二、分类

     
    按年代分类:
       sql92
    •                等值
    •                非等值
    •                自连接
     
             也支持一部分外连接(用于oracle、sqlserver,mysql不支持)
     
       sql99:【推荐使用】
             内连接
    •                等值
    •                非等值
    •                自连接
             外连接
    •                左外
    •                右外
    •                全外(mysql不支持)
             交叉连接
                   
     
     
     
     

    三、SQL92语法

    1、等值连接

    语法:
       select 查询列表
       from 表1 别名,表2 别名
       where 表1.key=表2.key
       【and 筛选条件】
       【group by 分组字段】
       【having 分组后的筛选】
       【order by 排序字段】
     
    特点:
       ① 一般为表起别名
       ②多表的顺序可以调换
       ③n表连接至少需要n-1个连接条件
       ④等值连接的结果是多表的交集部分
     
     

    2、非等值连接

    语法:
       select 查询列表
       from 表1 别名,表2 别名
       where 非等值的连接条件
       【and 筛选条件】
       【group by 分组字段】
       【having 分组后的筛选】
       【order by 排序字段】

    3、自连接

     
    语法:
       select 查询列表
       from 表 别名1,表 别名2
       where 等值的连接条件
       【and 筛选条件】
       【group by 分组字段】
       【having 分组后的筛选】
       【order by 排序字段】
     
     

    四、SQL99语法

    1、内连接

    语法:
    select 查询列表
    from 表1 别名
    【inner】 join 表2 别名 on 连接条件
    where 筛选条件
    group by 分组列表
    having 分组后的筛选
    order by 排序列表
    limit 子句;
     
    特点:
    ①表的顺序可以调换
    ②内连接的结果=多表的交集
    ③n表连接至少需要n-1个连接条件
     
    分类:
    等值连接
    非等值连接
    自连接
     
     
     
     

    2、外连接

    语法:
    select 查询列表
    from 表1 别名
    left|right|full【outer】 join 表2 别名 on 连接条件
    where 筛选条件
    group by 分组列表
    having 分组后的筛选
    order by 排序列表
    limit 子句;
    特点:
    ①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
    ②left join 左边的就是主表,right join 右边的就是主表
      full join 两边都是主表
    ③一般用于查询除了交集部分的剩余的不匹配的行
     

    3、交叉连接

     
    语法:
    select 查询列表
    from 表1 别名
    cross join 表2 别名;
     
    特点:
    类似于笛卡尔乘积
     
     
     
     
     
  • 相关阅读:
    Eclipse里编辑代码,进度条出现“Remote System Explorer Operation”解决方法
    Fiddler快速入门
    十分钟学会 Fiddler
    网络抓包工具 wireshark 入门教程
    wireshark使用教程
    Apple iOS MDM开发流程
    input file 文件上传,js控制上传文件的大小和格式
    读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)
    QT 序列化/串行化/对象持久化
    VC 使用msxml6.dll动态链接库中的函数读写XML文件
  • 原文地址:https://www.cnblogs.com/huabro/p/12624209.html
Copyright © 2011-2022 走看看