mysql查询1992_MySQL·查询(二)

接着上次的内容,我们继续学习MySQL的查询。上次主要是介绍单表查询,即对一张表格进行筛选查询,下面我们介绍多表查询,简单来说当我们需要查询的内容分布在不同的多张表格时,我们就需要采用多表连接的方法查询所需的字段。

一、连接查询

1、含义

连接查询是我们多表查询最简单的一种方法,当然在查询的过程给予适当的条件,若没有添加有效的条件,则会实现完全连接(笛卡尔乘积),语法如下:

select 字段1,字段2,.... from 表1,表2,....

【筛选条件】

2、分类

连接查询在SQL中按语法版本分成了2个版本,SQL92和SQL99,具体分类如下:

3、SQL92下的语法

(1).等值连接

语法:select 查询列表

from 表1 别名,表2 别名

where 表1.字段 = 表2.字段 #使用表之间的主键作为连接条件

【and 额外筛选条件】

【gruop by 分组字段】

【having 分组后的筛选】

【order by 排序字段】

特点:1、一般为表起别名

2、多表的顺序可以调换

3、n表连接至少需要n-1个连接条件

4、等值连接的结果是多表的交集部分

(2).非等值连接:与等值连接一致,区别在于连接条件改为 where 表1.字段 != 表2.字段

(3).自连接:与等值连接一致,区别在于连接的表格为自身

4、SQL99的语法

(1).内连接

语法:select 查询列表

from 表1 别名

inner join 表2 别名 on 连接条件 # 自连接设置

where 筛选条件 # 筛选条件决定等值连接、非等值连接

【group by 分组列表】

【having 分组后的筛选条件】

【order by 排序列表】

特点:1、表的顺序可以调换

2、内连接的结果实则是多表的交集

3、n表连接至少需要n-1个连接条件

(2).外连接

语法:select 查询列表

from 表1 别名

left|right|full join 表2 别名 on 连接条件

# join前的关键字设置外连接 (左连接、右连接、全连接)

# on 设置连接的条件(等值连接、非等值连接)

【where 筛选条件】

【group by 分组列表】

【having 分组后的筛选】

【order by 排序列表】

特点:1、查询的结果为主表中所有行,如果从表和它匹配的将显示匹配行,如果从表没有匹

配的则显示null。

2、left join 表1为主表 , right join 表2为主表,full join 两边都是主表

(3).交叉连接

语法:select 查询列表

from 表1 别名

cross join 表2 别名

特点:类似于笛卡尔乘积,实现完全连接。

二、子查询

1、含义

嵌套在其他查询语句内部的select语句称为子查询,且子查询的结果通常是使用()括住。

2、分类

三、分页查询

1、含义

当我们需要查询的结果集规模太大时,我们需要选取结果集中的某些记录输出,我们就可以使用分页查询,分页查询的关键字为 limit 。

2、语法

select 查询列表

from 表1

【...各类语句】

limit 【offset】size; #offset 代表的是起始的条目索引,默认从0开始;size代表显示的条目数

四、连接查询

1、含义

将多次查询的结果合并成一个结果,使用关键字 union。

2、语法

查询语句1

union【all】

查询语句2

union【all】

......

3、特点

1、将一条比较复杂的查询语句拆分成多语句

2、要求查询语句查询的各列类型、顺序最好一致

3、union 若不添加 all 关键字,会去掉重复的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值