MySql高级查询(2)

1.表连接
(1)内连接
(2)左外连接
(3)自连接
2.高级子查询
(1)单行子查询
(2)多行子查询
(3)EXISTS子查询

一:表连接

目的:
在已经符合主外键关系的基础上,进行联合查询,得到多张表的
数据。
使用场景:
需要涉及到多表联合查询数据时使用。

语法:
select 表名1.列名1,表名1.列名2,表名2.列名1
from 表名 1 ,表名2
where 表名1.相关列=表名2.相关列

二:左外连接|右外连接

目的:
表结构特殊,两张表中各有对方没有关系的数据,需要将没有相关
主外键关系的列内容进行输出。
使用场景:
需要将左表或右表的内容全部输出。
语法:
SELECT 别名1.列名1,别名2.列名1
FROM 表1 as 别名1
[LEFT | RIGHT] JOIN 表2 as 别名2
ON 别名1.条件列名 = 别名2.条件列名
注意点:
left join right join 都可以代表from的意思。
on 可以代表我们的where
left join:
将左侧表作为主表全部显示。
right join:
将右侧表作为主表全部显示。
某些表中有一些独立列值,是必须要输出的,那么根据实际开发情况
选择其输出在左边或者右边。
左边|右边:
主表
主表概念:
谁是主表谁全部输出,如果输出的内容没有对应的,则是
NULL。

三:子查询

错误代码:
[Err] 1242 - Subquery returns more than 1 row
解决方案:
查看是不是内部子查询返回了多个值,并且外部使用的是‘=’
错误代码:
[Err] 1241 - Operand should contain 1 column(s)
解决方案:
查看外部子查询的列需要接受几个结果,如果内部子查询返回
了多列,在使用时就会出现这个错误。
单行子查询:
返回 一个结果 用‘=’接受结果。
多行子查询:
返回 多个结果 用 ’in‘ 接受结果。
相关子查询:
返回 true 或者 false ,如果返回true则执行外部SQL,否则不执行
exists:
如果有结果返回true 否则 false
not exists:
在exists结果的基础上取反。寻找非exists结果的其他值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值