DQL语言—连接查询

一、含义

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

select 字段1,字段2,....
from 表1,表2,...;

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

二、分类

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

三、SQL92语法

1、等值连接

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

2、非等值连接

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

3、自连接

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

四、SQL99语法

1、内连接

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

2、外连接

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

3、交叉连接

语法:
    select 查询列表
    from 表1 别名1
   cross join 表2 别名2
特点:
    类似于笛卡尔乘积
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值