多表查询
多表查询
我们一般用select * from 表名的方式进行单表数据的查询,但是多表查询不是在表名后面再加一个表名,这样查询出来的数据会存在一个笛卡尔积的情况(笛卡尔积:取A ,B集合所有组合),会造成数据的重复以及数据的不准确
多表查询:就是从多张表查询数据
连接查询
1. 内连接:相当于查询AB两张表的交集数据
有AB两张表,A表的某个字段是B表的主键,那么这两张表就构成了关联关系,内连接就是通过查询语句后面加一个where条件的方式完成查询,如:
select * from 主表名 where 从表.外键=主表.主键;
-- 隐式内连接
select * from 主表名 inner join 从表 On 从表.外键=主表.主键;
-- 显示内连接,inner可省略不写
- 外连接:
- 左外连接:相当于查询A表所有数据和交集部分的数据
select 字段列表 from 表1 left [outer] join 表2 on 条件;
- 右外连接:相当于查询B表所有数据和交集部分的数据
select 字段列表 from 表1 right [outer] join 表2 on 条件;
以上左右外连接的outer关键字可以省略不写
- 子查询
概念:查询中嵌套另外一个查询,我们称嵌套进去的查询语句为子查询
子查询根据查询结果的不同作用也不同,可以分为:
- 单行单列:作为条件值,使用 = != > <等进行条件判断
select 字段列表 from 表 where 字段名 = (子查询);
- 多行单列:作为条件值,使用In等关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询);
- 多行多列
select 字段列表 from (子查询) where 条件;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!