MySQL三 | 多表查询

目录

多表查询

内连接

隐式内连接

显示内连接

外连接

左外连接

右外连接

自连接

子查询


多表查询

笛卡尔积:集合A和集合B的所有组合情况 A * B

在多表查询时应消除无效的笛卡尔积

内连接

查询的是两张表交集的地方

隐式内连接

sql 复制代码
SELECT 字段列表 FROM 表1,表2 WHERE 条件...;

显示内连接

sql 复制代码
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件 ...;

外连接

左外连接

sql 复制代码
SELECT 字段列表 FROM 表一 LEFT [OUTER] JOIN 表二 ON 条件...;

左外连接相当于查询表1(左表)的所有数据 包含表一和表二交集部分的数据

右外连接

sql 复制代码
SELECT 字段列表 FROM 表二 RIGHT [OUTER] JOIN 表二 ON 条件...;

右外连接可以转换为左外连接

自连接

必须起别名

sql 复制代码
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;

自连接查询,可以是内连接查询,也可以是外连接查询

子查询

在sql语句中嵌套select语句,称为嵌套查询,又称为子查询

sql 复制代码
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

子查询外部可以是INSERT/UPDATE/DELETE/SELECT中的任意一个

|-------|--------------------------|
| 子查询类型 | 功能 |
| 标量子查询 | 子查询返回的结果是单个值(数字,字符串,日期等) |
| 列子查询 | 返回的结果是一列 |
| 行子查询 | 子查询返回的结果为一行 |
| 表子查询 | 返回的结果为多行多列 |

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

相关推荐
l1t1 小时前
duckdb 1.6dev新增的.manual命令
开发语言·数据库
辉灰笔记1 小时前
第一篇:MySQL8.0生产备份实战|XtraBackup全自动全量+增量备份(钉钉告警+异地Binlog归档)
数据库·mysql·钉钉·运维开发
山峰哥2 小时前
‌Explain实战:打开数据库执行计划的黑盒‌
大数据·服务器·数据库·sql·深度优先·宽度优先
wzy06232 小时前
VIP + Orchestrator + 自定义脚本 MySQL 高可用方案
mysql·orchestrator
ClickHouseDB2 小时前
ClickHouse 26.6 版本发布说明
数据库
Wang's Blog2 小时前
Java框架快速入门:深入MyBatis-Plus高级DML操作(ID策略·逻辑删除·乐观锁)
java·数据库·mybatis
小二·13 小时前
RAG + 向量数据库实战:ChromaDB / Milvus / FAISS 选型与性能横评
数据库·milvus·faiss
矜持的左手14 小时前
电子小白的枕边书:电子学(The Art of Electronics)
数据库·restful
吴声子夜歌14 小时前
Redis 5.x——布隆过滤器
数据库·redis·缓存