MySQL内连接基础

查询信息的来源如果来自多张表,则必须对这些表进行连接查询。连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接


前言

本文重点讲述内连接里的交叉连接(笛卡尔积)、自然连接。


提示:以下是本篇文章正文内容,下面案例可供参考

一、交叉连接(笛卡尔积)

交叉连接是所有内连接的基础,通俗而言,笛卡尔积就是两个集合中的每一个成员都与对方集合中的任意一个成员有关联,表与表的行数相乘。

二、使用步骤

代码如下(示例):


select * from line cross join vehicle 
等价于:
select * from line,vehicle

实现线路表与车辆表笛卡尔积

代码如下(示例):

SELECT COUNT(*)
FROM line CROSS JOIN vehicle

效果图如下

在这里插入图片描述
记得在使用交叉连接的时候一定要加count(),不然出来的效果是完全不同的


二、示例二

2. 使用内连接获取车辆型号含有“DD”字样的车辆信息和司机信
息要求车辆信息为全部列,司机信息中只需包含姓名和身份证

代码如下(示例):

SELECT v.*,d.name,d.licenseNo
FROM vehicle v JOIN driver d 
ON v.driverID=d.driverID
WHERE model LIKE '%DD%'

效果图如下

在这里插入图片描述
注意是含有‘DD’字样的车辆型号,这里要使用like模糊查询,不要直接用=号。


三、自然连接

这是一种特殊的内连接,它要求连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。在这之中,所有名称相同的列都将被比较,并且在结果集中把重复的列去掉,结果集中两张表中名称相同的列仅出现一次。而普通内连接并不会去掉重复列。

使用自然连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证

代码如下(示例):

SELECT *,d.name,d.licenseNo
FROM vehicle v NATURAL JOIN driver d
WHERE model LIKE '%dd%'

效果图如下

在这里插入图片描述
做同样的题目两种不一样的方法也能有同样的效果,但明显自然连接明显显示的信息更多,去掉重复列之后的表格也看着更加明了。


四、多表连接查询

如果查询的信息来源与多张表,则可以通过两两相连的方式建立多表连接查询。

获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息。


SELECT plateNo,model,type,name,lineNo,from_station,end_station
FROM driver d JOIN vehicle v 
ON d.driverID=v.driverID 
JOIN line l ON
v.lineID=l.lineID
WHERE type='非空调车';

效果图如下

在这里插入图片描述


五、示例三

获取订单 ID 为 4 的订购明细信息,要求输出商品名、单价和件数。

SELECT goodsName,unitPrice,quantity
FROM orders o ,ordersdetail od,goods g
WHERE o.ordersID=od.ordersid AND 
od.goodsid=g.goodsid AND
o.ordersid=4;

效果图如下

在这里插入图片描述


总结

以上就是本篇文章的全部内容,上述是对内连接针对性较强的例题,概括了内连接基础学习的方法,比较适合初学者进行观摩学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值