MySQL-多表查询

2024-01-07 17:18:15

概念:指从多张表中查询数据


多表关系:

多表关系关联:

一对多:在多的乙方设置外键,关联一的一方的主键。

多对多:建立中间表,中间表包含两个外键,关联两张表的主键。

一对一:在其中任意一方设置外键(UNIQUE),关联另一方的主键。

连接查询

1.内连接:相当于查询A,B交集部分数据

? ? ???隐式内连接:SELECT 字段列表 FROM 表1,表2 WHERE 条件...;

? ? ? ?显示内连接:SELECT 字段列表 FROM 表1?[INNER] JOIN 表2 ON 连接条件...;

2.外连接:当我们的一张表相关联的数据为NULL时,使用外连接就可以把表中为NULL的数据也查询出来

? ? ? ?左外连接:查询左表所有数据以及两表交集部分数据。

? ? ? ? ? ? ? ? ? ? ? ? ? ? SELECT 字段列表 FROM 表1 LEFT?[OURER] JOIN 表2 ON 连接条件...;

? ? ? ?右外连接:查询右表所有数据以及两表交集部分数据

? ? ? ? ? ? ? ? ? ? ? ? ? ??SELECT 字段列表 FROM 表1 RIGHT?[OURER] JOIN 表2 ON 连接条件...;

3.自连接:当前表与自身的连接查询,自连接必须使用表别名,可以使用内连接也可以使用外连接查询,语法跟上面一样,给表取个别名当成两张表进行操作即

?联合查询

将多次查询的结果合并起来,形成一个新的查询结果,相当于‘且’。

注意:

1.去掉ALL可以去重。

2.联合查询的字段数,字段类型需要保持一致。

语法:? ?

? ? ? ? SELECT 字段列表 FROM 表 A...

? ? ? ? UNION[ALL]

????????SELECT 字段列表 FROM 表 B...

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

SELECT * FROM 表1?WHERE 字段=(SELECT 字段 FROM 表2);

子查询外部的语句可以是INSERT/UPDAT/DELETE/SELECT中的任何一个。

标量子查询:子查询结果为单个值

列子查询:子查询结果为一列

行子查询:子查询结果为一行

表子查询:子查询结果为多行多列

操作符:

IN:在指定集合范围多选一

NOT IN:不在指定范围集合内

ANY:子查询返回列表有一个满足即可

SOME:与ANY 等同

ALL:子查询返回列表所有值都得满足

注意:当给表取了别名之后,就不能使用原表名来限制字段

文章来源:https://blog.csdn.net/fdvvg/article/details/135423425
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。