连接查询

基本概念:
就是将两个或两个以上的表,“连接起来”,当做一个数据源,并从中去取得所需要的数据;
到底怎么连接?
将每一个表的每一行数据两两之间相互对接起来,每次对接的结果都是连接结果的“一行”数据;
在这里插入图片描述在这里插入图片描述
然后,将他们进行“连接”:
在这里插入图片描述
他们其实这样这样的方式连接起来的结果数据:
在这里插入图片描述
这种没有条件的连接,也可以写成这样:
select * from 表1, 表2;
select * from 表1 join 表2;
select * from 表1 cross join 表2;
其实他们都叫做“交叉连接”;其实i就是没有条件的连接——全部连接起来了;
连接基本形式:
在代码级别,连接的基本形式为:
表1 【连接形式】 join 表2 【on 连接条件】;

如果是3个表,则进一步扩展为:
表1 【连接形式】 join 表2 【on 连接条件】 【连接形式】 join 表3 【on 连接条件】
更多表,依次类推;
连接的分类
主要分为以下几种:

交叉连接 cross join:
其实就是刚才讲连接的基本概念的时候的连接形式(结果)——它没有条件,只是按连接的基本概念,将所有数据行都连接起来的结果。它又叫做“笛卡尔积”;
对于表1(n1个字段,n2行),表2,(m1个字段,m2行),他们交叉连接的结果是:
有n1+m1个列;
有n2*m2个行;
形式有:
select * from 表1, 表2;
select * from 表1 join 表2;
select * from 表1 cross join 表2;

内连接 inner join:
形式:
select * from 表1 【inner】 join 表2 on 连接条件;

先来研究没有条件的“内连接”(其实就是交叉连接)的结果:
在这里插入图片描述
结果:
在这里插入图片描述
其中框框内的“数据行”,是正确的,有意义的数据。而其他行就是错误的数据。
这些有意义的数据的一个特点,就是,所标示出的两个字段的值相等:
该两个字段,分别来源于两个参与连接的表;
我们的内连接,就是要找出这样的一些有意义的数据,如下所示:
在这里插入图片描述
结果为:
在这里插入图片描述
可见,这里查询的结果,都是前述查询(交叉连接)中,有意义的那些数据!
其中 product.protype_id = product_type.protype_id 被称为“连接条件”,它基本上就是我们之前所学的“外键关系”的一个描述。
注意:
这种的表跟表之间的内连接查询,虽然可以体现为表跟表之间的“关系”——通常就是外键关系——但并不是有外键关系才能使用这种连接。
另外的一些变通形式:
在这里插入图片描述
在这里插入图片描述
可见,数据表也可以使用“as 别名”的形式来取别名;

左(外)连接 left (outer) join:
形式:
表1(左表) left 【outer】 join 表2(右表) on 连接条件
含义:
其实就是将两个表的内连接的结果,再加上左边表的不符合内连接所设定的条件的那些数据的结果;
举例:
在这里插入图片描述
结果
在这里插入图片描述
可见,左连接的结果,左边表的数据,一定都会“全部取出”;

右(外)连接 right (outer) join:
形式:
表1(左表) right 【outer】 join 表2(右表) on 连接条件
含义:
其实就是将两个表的内连接的结果,再加上右边表的不符合内连接所设定的条件的那些数据的结果;
举例:
在这里插入图片描述
结果:
在这里插入图片描述
全(外)连接 full (outer) join:
形式:
没有形式,因为mysql不支持全连接的语法;

含义:
其实就是将两个表的内连接的结果,再加上左边表的不符合内连接所设定的条件的那些数据的结果,以及再加上右边表的不符合内连接所设定的条件的那些数据的结果;

连接查询举例:
例1:对商品表:
查出每个品种各有多少个商品:
在这里插入图片描述
结果为:
在这里插入图片描述
例2:对学生院系表:
在这里插入图片描述
语法如下:
在这里插入图片描述
结果为:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值