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

这里写目录标题

  • 一级目录连接查询 内连接
    • 二级目录连接查询共通知识点
      • 三级目录左连接
        • 四级目录右连接
          • 五级目录连接查询的实质
            • 六级目录自关联的介绍

一级目录连接查询 内连接

连接查询
需求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;

阶段二第六章多表查询连接查询_第1张图片
阶段二第六章多表查询连接查询_第2张图片

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

对连接后的表进行字段显示限制
注意:
需要由对应的 表名.字段 的方式实现(防止表与表之间存在相同的字段名)
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;
阶段二第六章多表查询连接查询_第3张图片
阶段二第六章多表查询连接查询_第4张图片

三级目录左连接

需求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;
阶段二第六章多表查询连接查询_第5张图片
阶段二第六章多表查询连接查询_第6张图片
需求3:查询所有商品分类及其对应的商品的信息
左连接
select * from category ca left join goods go on ca.typeid = go.typeid;
阶段二第六章多表查询连接查询_第7张图片

四级目录右连接

需求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;

阶段二第六章多表查询连接查询_第8张图片

阶段二第六章多表查询连接查询_第9张图片

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

左连接完成之后再有一张表出现,要以那张表为主要调换顺序的时候才需要使用右连接
阶段二第六章多表查询连接查询_第10张图片

五级目录连接查询的实质

显示所有价格低于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;
阶段二第六章多表查询连接查询_第11张图片

左连接
select * from goods go
left join category ca on go.typeid = ca.typeid
where go.price < 120;
阶段二第六章多表查询连接查询_第12张图片

六级目录自关联的介绍

特征:只有1张表,表中至少存在两列字段具备对应关系
原理:通过起别名的方式,将1张表变为2 张表,通过对应字段的对应关系,进行条件比对,实现连接查询
阶段二第六章多表查询连接查询_第13张图片
需求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 =‘河南省’;
阶段二第六章多表查询连接查询_第14张图片
需求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 = ‘河南省’;
阶段二第六章多表查询连接查询_第15张图片
阶段二第六章多表查询连接查询_第16张图片
总结
连接查询
内连接:语法:表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.通过拥有对应关系的字段进行连接查询即可

你可能感兴趣的:(阶段二:liunx和数据库,数据库)