高级查询2



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

语法:select  表名1.列名1,表名1.列名2,表名2.列名1from 表名 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、付费专栏及课程。

余额充值