[学习打卡]04 MySql复合查询(外连接 子查询 联合查询。。)

练习:

1、外连接

说明:

查询结果为主表中所有的记录;如果从表中有匹配项,则显示匹配项,如果从表中没有匹配项,则显示null;

应用场景:

一般多用于查询主表中有但从表中没有的记录。

特点:

1、外连接分主从表,两个表的顺序不能随意调换

2、左连接,左边为主表

     右连接,右边为主表

语法

select 查询列表

from 表1 别名(主表)

left / right / full   outer join 表2 别名    (outer 可不写)                    //左外 右外 全连接

on 连接条件(表一的某个列等于表二的某个列)

where 筛选条件

group by 分组

having 分组后筛选条件

order by 排序

  其实 from后面紧跟的表 就是主表 left outer join 后边跟的表就是从表

两个表的位置不可以互换,互换位置之后 就变成了 右连接了。

 

常见连接(重要)

 

全连接(mysql不支持)

 

 

2、子查询

说明:

当一个查询语句里又嵌套了另一个完整的select语句,则被嵌套的的select语句称为子查询或内查询。

外面的select语句称为外查询,或者主查询语句

分类:(按子查询出现的位置分)

1、select后面,

                要求:子查询结果为单行单列(标量子查询)

2、from 后面 

                要求:子查询结果可以为多行多列

3、where或者having后面(重要)

               要求:子查询结果必须为单列   (分为单行子查询 、多行子查询)

4、exists 后面:

                要求:子查询结果必须为单列(相关子查询)

特点:

1、子查询放在条件中,一般放在条件的右侧

2、子查询一般放在小括号中

3、子查询的执行优先于主查询

4、单行子查询对应了单行操作符<    >    <=    >=      <>

      多行子查询对应了多行操作符  any in some

非法使用标量子查询的情况:

它里面只能是一个数字,不可是一列数字

标量子查询的结果 只能是一行一列。

多行子查询

IN: x  in(30,40,50),,判断某个字段是否在其中一个列表内

any /some :判断某字段的值是否满足其中任意一个

x>any(10,30,50)  等价于  x>min()

x=any(10,30,50)  等价于  x in (10,30,50)

all:判断某字段的值是否满足所有的

x>all(10,30,50)  等价于 x >max()

 

放在其他位置的子查询

1、放在select后面

2、放在from

 

3、放在 exists后面

分页查询

应用场景:当页面上的数据,一页显示不全的时候,则需要分页显示

分页查询的sql命令请求数据库服务器-》 服务器相应查询到多条数据-》前台分页

limit 关键字 放在所有执行子句之后

起始条目索引从0开始如果不写,就是默认从零开始显示。

联合查询

当查询结果来自多张表,但是多张表之间没有联系,这个时候往往使用联合查询,也称为UNION查询

 

多表查询列数一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值