MySQL多表操作

一. 连接查询

1.笛卡尔积

在数据库中的意义:没有连接条件表关系返回的结果
如:select * from 表1,表二

2.连接

在表关系的笛卡尔积数据记录中,按照相应字段的比较条件进行选择生成一个新的关系。

内连接:保留表关系中所有匹配条件的数据记录
外连接:除了匹配的记录,还有部分不匹配的记录

(1). 内连接

自然连接:相同名称的字段自动进行记录匹配,去掉重复字段

select * from1 natural join2

等值连接:匹配条件中含“=”,不会去掉重复字段

select 字段名 from1,表二 where ...=...
#推荐:
select 字段名 from1innerjoin2,表3.. on ...=...

不等连接:匹配条件中含不等关系,不会去掉重复字段

select 字段名 from1innerjoin2,表3.. on ...!=...

(2).外连接

左外连接:将左边不匹配的数据记录保留

select 字段名 from1 left join2,表3.. on 条件

右外连接:将右边不匹配的数据记录保留

select 字段名 from1 right join2,表3.. on 条件

全外连接:将所有不匹配的数据记录保留

select 字段名 from1 full join2,表3.. on 条件

3.并操作

将具有相同字段数目和字段类型的表合并到一起

select 字段名 from1 Union select 字段名 from2

或者

select 字段名 from1 Union All select 字段名 from2

Union All与Union的区别:Union没有重复数据记录

二. 子查询

1. in关键字

2. ANY关键字

=ANY
等于子查询结果集中的任意值,同in
>ANY
大于子查询结果集中的任意值,即只要大于子查询结果集中的最小值
<ANY
小于子查询结果集中的任意值,即只要小于子查询结果集中的最大值
>=ANY
大于或等于子查询结果集中的任意值
<=ANY
小于或等于子查询结果集中的任意值

3. ALL关键字

=ALL
等于子查询结果集中的所有值,同in
>ALL
大于子查询结果集中的所有值,即只要大于子查询结果集的最大值
<ALL
小于子查询结果集中的所有值,即只要小于子查询结果集的最小值
>=ALL
<=ALL

4. EXIST关键字

子查询是否存在

SELECT * FROM info WHERE EXISTS (SELECT * FROM friend WHERE info.`userID`=friend.`userID`)

5.FROM子句

select * from (SELECT * FROM 表名)a

a为别名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值