在数据库进行多张表的查询,必定会用到多表关联,只要是多表关联,就会产生笛卡儿积(什么是笛卡儿积:最简单的解释,就是你要关联的每张表总记录的乘积),所以一定要写关联条件。关联条件就是在所产生的笛卡儿积之间筛选数据。
多表连接主要分为:inner join与outer join
实验:
table_a table_b
id value id value
1 va1 1 vb1
2 va2 3 vb3
4 va4 4 vb4
inner join(也可直接用,号替代,后加where关联条件),用on来关联条件。只查询满足关联条件的数据,结果集小于等于两表之间记录行数的最小值
1 select * from table_a t,table_b t1 where t.id=t1.id; 2 3 select * from table_a t inner join table_b t1 on t.id=t1.id;
id value id value
1 va1 1 vb1
4 va4 4 vb4
outer join
left (outer) join:已左边表的记录为基准,右边表中找不到则补null。结果集等于左表记录的行数
1 select * from table_a t left join table_b t1 on t.id=t1.id;
id value id value
1 va1 1 vb1
2 va2 null null
4 va4 4 vb4
right (outer) join:已右边表的记录为基准,左边表中找不到则补null。结果集等于右表记录的行数
1 select * from table_a t right join table_b t1 on t.id=t1.id;
id value id value
1 va1 1 vb1
null null 3 vb3
4 va4 4 vb4