MySQL多表查询的主要关键字。

union联合查询

作用:在一条查询语句中进行多个查询。

1
2
select age, gender from info all/distinct union select 'name', phone from teacher
# all默认自带且省略,distinct自加,用于去重

inner join内连接

inner join即内连接,要分清表的主次,主键对应外键。

1
select name, score from student innner join score on student.id = score.stuid

inner join注意事项:

  1. 多表查询以相同的公共字段作为基准查询;
  2. 其中一个表没有的则不统计。

left join左连接

左连接就是以左表某字段为基准,左边的必须要有,右边的可以为空,类似于军训向……看齐排队。
作用:防止空数据不统计。

right join右连接

类似于左连接,以右表字段为基准。

cross join交叉连接

1
2
select * from t1 cross join t3 where t1.id  = t2.id
# 没有where及之后内容为笛卡尔积,有相当于内连接

natural join自然连接

select * from t1 natural join t3
自然连接会自动根据两表的公共字段连接(前提:两张表的公共字段(属性)名相同),没有的字段会自动填充。
内连接无公共同名字段的自然连接返回笛卡尔积

using

作用:有多个公共字段时指定以某个字段连接。

1
select * from t1 inner join t3 using(id)