MySQL-多表查询

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


多表关系:

多表关系关联:

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

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

一对一:在其中任意一方设置外键(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:子查询返回列表所有值都得满足

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

相关推荐

  1. MySQL - 查询

    2024-01-07 05:16:02       64 阅读
  2. MySQL-查询

    2024-01-07 05:16:02       74 阅读
  3. MySQL查询

    2024-01-07 05:16:02       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-07 05:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-07 05:16:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-07 05:16:02       82 阅读
  4. Python语言-面向对象

    2024-01-07 05:16:02       91 阅读

热门阅读

  1. 面试经典150题(59-61)

    2024-01-07 05:16:02       52 阅读
  2. ubuntu 卸载桌面

    2024-01-07 05:16:02       57 阅读
  3. typescript中使用 ?. ?? ??= 运算符

    2024-01-07 05:16:02       52 阅读
  4. Golang 切片

    2024-01-07 05:16:02       59 阅读
  5. 钢铁企业电力设计手册(上下册)总目录

    2024-01-07 05:16:02       57 阅读