Mysql连接查询

Mysql连接查询

分类:
按年代分类:
 sql92标准
 sql99标准【推荐】
内连接:【inner join = join】
 等值连接
 非等值连接
 自连接
外连接:
 左外连接【left outer join = left join】
 右外连接【right outer join = right join】
交叉连接

sql99标准

语法:
select 查询的列
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序条件】

student表
在这里插入图片描述
class表
在这里插入图片描述
(一)内连接【inner join = join】
JOIN等同于INNER JOIN,即内连接,不满足ON条件的会直接过滤掉,不显示。
①等值连接
案例1:
select *
from student s 【inner】 join class c
on s.class_id = c.id;
在这里插入图片描述
案例2:
select *
from student s 【inner】 join class c
on s.class_id = c.id
where s.name like ‘%小%’;
在这里插入图片描述
②非等值连接
BETWEEN … AND …
案列:
select *
from student s join class c
on s.class_id between c.id and c.id
where c.id=1 or c.id=2
在这里插入图片描述
③自连接
同一个表自己连接
案列:
select *
from student s join student c
on s.id = c.class_id;
在这里插入图片描述
(二)外连接
外连接可分为一个主表一个从表:
 外连接的查询结果为主表中的所有记录
 如果从表中有和它匹配的,则显示匹配的值
 如果从表中没有和它匹配的,则显示null
 外连接查询结果=内连接结果+主表中有而从表没有的记录
左外和右外调换两个表的顺序也可以实现同样的效果
①左外连接【left outer join = left join】
左外连接,将左边的表作为主表,不满足ON条件的会保留左边那张表的数据,右边表数据直接显示NULL。
案列:
select *
from student s left join class c
on s.class_id = c.id;
在这里插入图片描述
②右外连接【right outer join = right join】
右外连接,将右边的表作为主表,不满足ON条件的会保留右边那张表的数据,左边表数据直接显示NULL。
案列:
select *
from student s right join class c
on s.class_id = c.id;
在这里插入图片描述
(三)交叉连接
相当于用sql99语法的标准来实现笛卡尔乘积
案列:
select *
from student s cross join class c
on s.class_id = c.id;
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值