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。表格关联越多,性能下降越快。

5、查询练习

https://www.nowcoder.com/ta/sql

原文地址:https://www.cnblogs.com/yif930916/p/14814454.html