三、MySQL基础知识-连接查询-子查询(内查询)-分页查询-联合查询

五、连接查询

含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

可能出现的情况:笛卡尔乘积现象:表1 有m行,表2有n行,结果=m*n行

发生原因:没有有效的连接条件

如何避免:添加有效的连接条件

按年代分类:

sql92标准:仅仅支持内连接

sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接

语法:

select 字段1,字段2 from 表1,表2 (结果为笛卡尔成绩)

SQL92:

等值连接

select 查询条件 from 表1 别名,表2 别名 where 表1.key=表2.key 【and 筛选条件】【group by 分组条件】【having 分组后的条件】【order by 排序字段】

非等值连接

select 查询条件 from 表1 别名,表2 别名 where 非等值的条件 【and 筛选条件】【group by 分组条件】【having 分组后的条件】【order by 排序字段】

自连接

select 查询条件 from 表1 别名,表2 别名 where 等值的条件【and 筛选条件】【group by 分组条件】【having 分组后的条件】【order by 排序字段】

SQL99:

内连接:(等值连接、非等值连接、自连接)

select 查询条件 from 表1 别名 【inner】join 表2 别名 on 连接条件 【where 筛选条件】【 group by 分组条件】【having 分组后的条件】【order by 排序字段】【limit 子句】

外连接:(左外连接、右外连接、全外连接)

select 查询条件 from 表1 别名 left|right|full 【outer】join 表2 别名 on 连接条件 【where 筛选条件】【 group by 分组条件】【having 分组后的条件】【order by 排序字段】【limit 子句】

交叉连接:

select 查询条件 from 表1 别名 cross join 表2 别名 (类似于笛卡尔乘积)


六、子查询(内查询)

含义:
出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。

1、按出现位置
select后面:仅仅支持标量子查询
from后面:表子查询
where或having后面:标量子查询、列子查询、行子查询
exists后面:标量子查询、列子查询、行子查询、表子查询

标量子查询(单行子查询):结果集为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为多行多列
表子查询:结果集为多行多列


七、分页查询

应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求

select 查询条件 from 表 limit 【offset=(page-1)*size】,size;


八、联合查询

语法:

查询语句1 union 【all】查询语句2 union 【all】 。。。。;

union关键字默认去重,如果使用union all 可以包含重复项


总结(机器查询的顺序)

select 查询列表 ⑦
from 表1 别名 ①
连接类型 join 表2 ②
on 连接条件 ③
where 筛选 ④
group by 分组列表 ⑤
having 筛选 ⑥
order by排序列表 ⑧
limit 起始条目索引,条目数; ⑨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值