MySQL学习 | 八、SQL语言中的多表关系
何进磊 后端攻城狮

笛卡尔积:笛卡尔积是指在数学中,两个集合A集合和B集合的所有组合情况(多表查询时需要消除无效的笛卡尔积)。

多表查询的分类

1、内连接(C表示部分)

http://blog.cdn.goudan.ltd/Blog/MySQL%E5%AD%A6%E4%B9%A0%E4%B8%83/%E4%BA%A4%E9%9B%86.png?e=1690968544&token=w2Ck1K8J7F3OPBNX_GiYGMLReW7R0l5CDG2QUNPh:G_CwMqknlqVOt7dnmlZ7kzEdw5k=

隐式内连接    
SELECT * FROM 表1, 表2 WHERE 条件;

显示内连接    
SELECT * FROM 表1 [INNER]JOIN 表2 ON 条件;

2、外连接

http://blog.cdn.goudan.ltd/Blog/MySQL%E5%AD%A6%E4%B9%A0%E4%B8%83/%E4%BA%A4%E9%9B%86.png?e=1690968544&token=w2Ck1K8J7F3OPBNX_GiYGMLReW7R0l5CDG2QUNPh:G_CwMqknlqVOt7dnmlZ7kzEdw5k=

左外连接表示A和C部分

SELECT 字段 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;

右外连接表示B和C部分

SELECT 字段 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;

3、自连接

SELECT 字段 FROM 表A 别名A JOIN 表A 别名B ON 条件;

4、联合查询‍

    多次查询的结果合并起来,形成一个新的查询结果集。多张表的列数和类型需要保持一致。

SELECT 字段列表 FROM 表A...UNION [ALL] SELECT 字段列表 FROM 表B...

UNION: 查询结果去重‍

UNION ALL: 查询结果不会去重‍‍‍‍‍‍‍‍‍

4、子查询

SQL语句中嵌套SELECT语句,称为嵌套语句,又称子查询。‍‍‍‍

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);