【mysql】基础-多表查询(中)

上文中描述了多表关系、内连接、外连接和自连接

 文章链接在【mysql】基础-多表查询(上)_無名_b的博客-CSDN博客


联合查询 union, union all

把多次查询的结果合并,形成一个新的查询集

语法:

    SELECT 字段列表 FROM 表A ...

    UNION [ALL]

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

注意事项

  • UNION ALL 会有重复结果,UNION 不会
  • 联合查询比使用or效率高,不会使索引失效

子查询

SQL语句中嵌套SELECT语句,称谓嵌套查询,又称子查询。
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2);
子查询外部的语句可以是 INSERT / UPDATE / DELETE / SELECT 的任何一个

根据子查询结果可以分为:

  • 标量子查询(子查询结果为单个值)
  • 列子查询(子查询结果为一列)
  • 行子查询(子查询结果为一行)
  • 表子查询(子查询结果为多行多列)

根据子查询位置可分为:

  • WHERE 之后
  • FROM 之后
  • SELECT 之后

标量子查询

子查询返回的结果是单个值(数字、字符串、日期等)。
常用操作符:- < > > >= < <=

列子查询

返回的结果是一列(可以是多行)。

常用操作符:

操作符 描述
IN 在指定的集合范围内,多选一
NOT IN 不在指定的集合范围内
ANY 子查询返回列表中,有任意一个满足即可
SOME 与ANY等同,使用SOME的地方都可以使用ANY
ALL 子查询返回列表的所有值都必须满足

行子查询

返回的结果是一行(可以是多列)。
常用操作符:=, <, >, IN, NOT IN

表子查询

返回的结果是多行多列
常用操作符:IN


在下篇中会给出 多表查询 的表创建语句以及多表查询语句的演示

【mysql】基础-多表查询(下)_無名_b的博客-CSDN博客

你可能感兴趣的:(数据库,mysql,sql,数据库)