多表查询:在查询为多张表的数据时,通常在from表和表之间使用逗号,作为间隔符号。
1.内连接inner join,相当于两个集合关键字段的全交叉记录。
- 1:select * from table_name1 inner join table_name2;
- 2:select * from table_name1,table_name2;
2.等值连接,将有等值条件筛选的称为等值连接,也就是相同外键约束的组合。
- 1:select * from table_name1 inner join table_name2 on table_name1.col_name=table_name2.col_name;
- 2:select * from table_name1,table_name2 where table_name1.col_name=table_name2.col_name;
3.外连接。
- 左连接left join:select * from table_name1 left jion table_name2 on table_name1.id=table_name2.id;
存在两张表,其中a表作为主表,b表作为副表,a表的记录数多于b表的话,那么当a表为主表显示时候,b表中的记录不够则自动用null去填充。
- 右连接right join:select * from a right join b on a.id=b.id;
同左连接思想一样,但是这个右连接的主表是b,副表是a,其他与左连接相似,当副表记录不够时用null填充。
4.全连接。
MySQL的全连接关键字是Union和Union all,而不是full join,full join关键字是Oracle中存有的。
- (select * from table_name1) union (select * from table_name2);
注意:
1.通过全连接union连接的两张表的列数必须相同。
2.合并的两张表中以第一张表作为主要表,也就是他们合并的记录取值的字段是第一张表的字段,而第二张表的字段消失。
3.通常来说,我们一般采用的全连接是union all进行合并,因为union耗时较长。
4.union连接的SQL字句,单个字句不写order by,因为不会存有排序的效果。