阶段二第六章多表查询连接查询

一级目录连接查询 内连接

连接查询
需求1:内连接
需求1:查询所有存在商品分类的商品信息
查询商品数据
select * from goods;
select * from category(类别,分类);
在查询中,需要将两张表存在对应关系的数据全部显示出来时,需要使用连接查询-内连接
内连接:显示两张表中存在对应关系的数据,无对应关系的数据不显示

语法 : 表1 inner join 表2 on 表1.字段 = 表2.字段
select * from goods inner join category on goods.typeid = category.typeid;

在这里插入图片描述
在这里插入图片描述

二级目录连接查询共通知识点

对连接后的表进行字段显示限制
注意:
需要由对应的 表名.字段 的方式实现(防止表与表之间存在相同的字段名)
select goods .goodsName,category.cateName from goods inner join category on goods.typeId = category.typeid;
表名. * :代表显示该表的所有字段
select goods.*,category.cateName from goods inner join category on goods.typeId = category.typeId;
连接查询中,往往会给表名起别名,目的:1.缩短表名 2. 给表单独创建空间(了解)
select go.goodsName,ca.cateName from goods go inner join category ca on go.typeid = ca.typeId;
在这里插入图片描述
在这里插入图片描述

三级目录左连接

需求2:左连接
查询所有商品信息,包含商品分类 查询所有商品
select * from goods;
select * from category;
左连接 : 以 left join 关键为界,关键字左侧的表的信息要全部显示出来,而关键字右侧表的信息,有对应的部分显示,无对应的部分以 null 占位填充即可 左边为主表右边匹配

语法 : 表1 left join 表2 on 表1.字段 = 表2.字段
select * from goods go(别名) left join category ca (别名)on go.typeId = ca.typeId;
在这里插入图片描述
在这里插入图片描述
需求3:查询所有商品分类及其对应的商品的信息
左连接
select * from category ca left join goods go on ca.typeid = go.typeid;
在这里插入图片描述

四级目录右连接

需求2:查询所有商品信息,包含商品分类 查询所有商品
select * from goods;
select * from category;
注意 :
右连接主要解决3 张及以上表进行连接查询时常见

右连接 : 以 right join 关键为界,关键字右侧的表的信息要全部显示出来,而关键字左侧表的信息,有对应的部分显示,无对应的部分以null占位填充即可

语法 : 表1 right join 表2 on 表1.字段 = 表2.字段
select * from category ca right join goods go on ca.typeId = go.typeId;

在这里插入图片描述

在这里插入图片描述

需求3:查询所有商品分类及其对应的商品的信息
右连接
select * from goods go right join category ca on go.typeid = ca.typeid;

左连接完成之后再有一张表出现,要以那张表为主要调换顺序的时候才需要使用右连接
在这里插入图片描述

五级目录连接查询的实质

显示所有价格低于120的商品信息,包含其对应商品分类
select * from goods;
select * from category;
注意
1.连接操作实质:只是将分布于多张表的数据,通过连接的方式进行整理,形成数据源
2.连接操作完成后,之前的所有的查询语法,都可以继续使用
3.具体连接方法的选择,要以具体需求为准
内连接 : 如果有商品没有分类对应信息,不会被显示出来
注意 : 如果使用内连接,会造成数据缺失,查询结果错误
select * from goods go
inner join category ca on go.typeId = ca.typeid
where go.price < 120;
在这里插入图片描述

左连接
select * from goods go
left join category ca on go.typeid = ca.typeid
where go.price < 120;
在这里插入图片描述

六级目录自关联的介绍

特征:只有1张表,表中至少存在两列字段具备对应关系
原理:通过起别名的方式,将1张表变为2 张表,通过对应字段的对应关系,进行条件比对,实现连接查询
在这里插入图片描述
需求4:自关联
需求4:查询河南省所有的市
查询所有数据
select * from areas;
自关联 :
1)通过起别名的方式,将一表变俩表
2)通过 表1.字段 = 表2.字段 实现表间关联
select * from areas a1
inner join areas a2 on a1.aid = a2.pid
where a1.atitle =‘河南省’;
在这里插入图片描述
需求5:自关联
需求5:查询河南省的所有的市和区
自关联
select * from areas;
select * from areas a1
inner join areas a2 on a1.aid = a2.pid
left join areas a3 on a2.aid = a3.pid
where a1.atitle = ‘河南省’;
在这里插入图片描述
在这里插入图片描述
总结
连接查询
内连接:语法:表1 inner join 表2 on 表1.字段=表2.字段
扩展:select * from 表1,表2 where 表1.字段=表2.字段
左连接:语法:表1 left join 表2 on 表1.字段=表2.字段
右连接:语法:表1 right join 表2 on 表1.字段=表2.字段
注意:连接的数据表个数达到3个或以上才能用到
注意
连接方法作用:1.将分布在多个表中的数据进行连接,形成数据源
2.连接完成后,之前的查询方法都可以直接使用。3.具体采用哪一种连接方式,取决于具体需求
自关联
特征:1.一张数据表2.最少存在两个字段拥有对应关系
实现步骤:1.通过起别名的方式,将1张表变为2张表 2.通过拥有对应关系的字段进行连接查询即可

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值