MySQL连接查询

连接查询

多表查询,查询的字段来自于多个表

笛卡尔乘积现象:表1有n行,表2有m行,没有连接顺序则出现mn行

添加连接条件

where a.id = b.id

连接查询的分类

按年代:

sql192 - 仅支持内连接

sql199   支持内连接+外连接(左外、右外)+交叉
按功能分类:

内连接:等值连接

​       非等值连接

​       自连接

​外连接:左外连接

​       右外连接

​       全外连接

交叉连接

SQL92语法

等值连接

为表起别名

如果为表起了别名,查询字段中原来表名不可用

用and在where后加筛选

多表等值连接=多表的交集部分

n个表,有n-1个连接条件

非等值连接

where xx between xx and xx

自连接

将同一张表分别名两个,然后两个查询等值

sql199语法

语法:select 查询列表
      from   表1 别名 
      连接类型   [inner|left|right|full]
      join   表2 别名
      where 
      group by 
      having
      order by

内连接 inner

    类似于SQL92语法

外连接 left|right|full

      外连接查询结果=内连接结果+主表有而从表没有的记录
      左外连接主表为左表
      右外连接主表为右表
      全外连接两表都存在

交叉连接:cross

    笛卡尔乘积

posted @ 2020-09-08 21:24  LongSL  阅读(128)  评论(0)    收藏  举报