mysql数据库(1)--多表查询
1、笛卡尔乘积
select * from table1,table2
说明:
如果table1为m行n列、table2为x行y列,根据笛卡尔乘积的特点,此时的查询结果的结构为:(m*x)行(n+y)列。
2、内连接(inner join)
内连接查询又称为等值查询,其主要基于待连接的两表之间某个字段的取值的的取值相等。
2.1、内连接的查询结构如下:
1 select column_list 2 from t1 3 inner join t2 4 on join_condition
2.2、内连接查询示意图--用于查询满足条件的公共部分
2.3、关于内连接查询的几点说明
(1)将待连接的table进行连接之前,需要根据ljoin_condition进行匹配,如果匹配成功就会成为new table中的一行;
(2)inner join查询的结果也可以通过select * from t1,t1 + where子句的方式来实现,但是这种查询的效率相较于inner join要低,因为后者是先通过笛卡尔的方式形成表格后再进行筛选的。
3、外连接
3.1、左外连接(left join)
以left join左边的表格为基准,按照过滤条件查找left join右边表中的记录。如果匹配到,那么就组合成一行,并显示结果;如果未匹配到,那么只显示左边表的字段,右边表中不存在的字段使用null表示。
(1)左外连接查询结构如下:
1 select column_list 2 from t1 # 其中t1为主表 3 left join t2 4 on join_condition
(2)左外连接查询示意图--以t1作为主表进行查询
3.2、右外连接(right join)
右外连接的作用域左外连接的作用相反,右外连接是以右表作为基准,按照过滤条件查找right join左边表中的记录。如果匹配到,那么就组合成一行,并显示结果;如果未匹配到,那么只显示右边表的字段,左边表中不存在的字段使用null表示。
(1)右外连接查询结构如下:
1 select column_list 2 from t1 3 right join t2 # t2为主表 4 on join_condition
(2)右外连接查询示意图--以t2作为主表进行查询
4、多表联合查询性能问题
mysql在运行时,尽管可以关联多个表进行查询,但是这种处理方式比较消耗资源,因此在进行查询时,尽量不要关联不必要的sheet。表格关联越多,性能下降越快。