MySQL 学习笔记——多表查询

连接查询

隐式内连接

select 字段列表 from 表1, 表2 where 条件

显式内连接

select 字段列表 from 表1 [inner] join 表2 on 连接条件

左外连接

左外连接的结果集包括 left outer join 指定的左表(表1)的所有行,如果左表的某行在右表中没有匹配行,则在结果集中该行的右表的所有列的值均为 null

select 字段列表 from 表1 left [outer] join 表2 on 条件

右外连接

右外连接的结果集包括 right outer join 指定的右表(表2)的所有行,如果右表的某行在左表中没有匹配行,则在结果集中该行的左表的所有列的值均为 null

select 字段列表 from 表1 right [outer] join 表2 on 条件

自连接

自连接查询,可以是内连接,也可以是外连接,只需要将同一个表起两个别名即可

select 字段列表 from 表1 别名1 join 表1 别名2 on 条件

联合查询

union 可将多条查询语句的结果合并(两条或两条以上),形成一个新查询结果集

字段列表必须含相同的字段,顺序可以不同

union 会对结果集进行去重,而 union all 不进行去重,合并全部结果

select 字段列表 from 表名 ...
union [all]
select 字段列表 from 表名 ...

子查询

在 SQL 语句中嵌套 select 语句,称为子查询,也称嵌套查询

子查询的外部语句可以是 insert 、update 、delete 、select 中的任意一个

标量子查询

子查询结果为单个值(数字、字符串、日期等),可用比较运算符 = 、< 、> 等进行判断

select 字段列表 from 表名 where 字段名 = (select 字段名 from 表名)

列子查询

子查询结果为一列(多行),可用如下运算符进行判断

运算符说明
in在指定集合中
not in不在指定集合中
any集合中有一个满足即可
some同 any
all集合中所有值都必须满足
select 字段列表 from 表名 where 字段名 in (select 字段名 from 表名)

行子查询

子查询结果为一行(可以是多列)

可用括号将字段列表括起来后与子查询的结果集进行比较

select 字段列表 from 表名 where (字段列表) = (select 字段列表 from 表名 [where 条件])

表子查询

子查询的结果为多行多列,可使用类似列子查询的运算符

select 字段列表 from 表名 where (字段列表) in (select 字段列表 from 表名 [where 条件])

也可接在 from 后面,将结果集作为临时表,临时表也可以进行连接

临时表必须使用别名

select 字段列表 from (select 字段列表 from 表名) 别名 [join 表名 on 条件]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值