MySQL之DQL(三)

Data Query Language,数据查询语言,常用于 select
7.连接查询 含义:多表连接查询
语法:select 查询列表 from tableName1,tableName2;
特点:
  1. 会产生笛卡尔积 m*n
  2. t1的每条记录和t2的每一条记录连接
Sql92:等值连接、非等值连接、自连接
等值连接 【MySQL之DQL(三)】语法:select 查询列表 from tableName1 t1,tableName2 t2 where t1.key=t2.key [and 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
特点:
  1. 一般为表起别名
  2. 多表的顺序可以替换
  3. n表至少需要n-1个连接条件
  4. 等值连接的结果是多表的交集部分
非等值连接 语法:select 查询列表 from tableName1 t1,tableName2 t2 where 非等值的连接条件 [and 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
自连接 语法:select 查询列表 from tableName t1,tableName t2 where 等值的连接条件 [and 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
特点:
多表是同一个表,起不同的别名
Sql99:内连接(等值连接、非等值连接、自连接)、外连接(左外、右外、全外)、交叉连接
语法:select 查询列表 from tableName1 t1 连接类型 join tableName2 t2 on 连接条件
[where 筛选条件][group by 分组字段][having 分组后的筛选][order by 排序字段]
连接类型:
内连接:inner
外连接:outer
  • 左外:left [outer]
  • 右外:right [outer]
  • 全外:full [outer]
交叉连接:cross
内连接 特点:
inner 可以省略
外连接 应用场景:用于查询一个表中有,另一个表中没有的记录
特点:
  1. 外连接查询的结果为主表中的所有记录
    • 如果从表有匹配的记录,则显示匹配的值
    • 如果没有,则显示null
    • 外连接查询的结果=内连接结果+主表中有而从表中没有的记录
  2. 左外连接:left join左边的是主表;右外连接:right join右边的是主表
  3. 左外和右外交换两表的顺序,可以实现同样的效果
交叉连接
笛卡尔乘积

    推荐阅读