DML语句(六) -- 连接查询

一、含义

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

select 字段1,字段2

from 表1,表2

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

如何解决:添加有效的连接条件

二、分类

  按年代分类:

    sql92

      等值连接

      非等值连接

      自连接

      也支持一部分外连接(用于 orcale、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 别名1.key = 别名2.key

  【and 筛选条件】

  【group by 分组字段】

  【having 分组后的筛选】

  【order by 排序字段】

四、SQL99 语法

1、内连接

2、外连接

3、交叉连接

猜你喜欢

转载自www.cnblogs.com/xifengbuqi/p/9213323.html
今日推荐