inner join(内连接)

  1. 内连接:表A和表B以元组为单位做一个笛卡尔积,记为表C
  2. 然后在C中挑选出满足符合on 语句后边的限制条件的内容。
  3. explain select * from t1 inner join t2 on (t1.id=t2.id)
  4. 也有存在多表join的情况
  5. select * from t1 join t2 using(stu_id) join t3 using(course_id);
  6. 通常情况下会先join前面的,单不同的解释器可能存在偏差,需要测试
  7. inner 可以省略

left join(左连接)

  1. 左外连接:在内连接的基础上,将A中有但C中没有的元组也加上。
  2. 由于C的列数比A的行数多,所以这新增的元组左边照搬A,右边为null
  3. explain select * from t1 left join t2 on (t1.id=t2.id) where t2.* is null

right join(右连接)

  1. 右外连接:在内连接的基础上,将B中有但C中没有的元组也加上。
  2. 由于C的列数比B的行数多,所以这新增的元组右边照搬B,左边为null
  3. explain select * from t1 right join t2 on (t1.id=t2.id) where t1.* is null

full join(全连接)

  1. 全外连接:相当于在内连接的基础上同时做左连接和右连接,
  2. A和表B中的都要,两边不满足条件的都为null
  3. explain select * from t1 full join t2 on (t1.id=t2.id)
0 评论  
添加一条新评论