查询信息的来源如果来自多张表,则必须对这些表进行连接查询。连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接
前言
本文重点讲述内连接里的交叉连接(笛卡尔积)、自然连接。
提示:以下是本篇文章正文内容,下面案例可供参考
一、交叉连接(笛卡尔积)
交叉连接是所有内连接的基础,通俗而言,笛卡尔积就是两个集合中的每一个成员都与对方集合中的任意一个成员有关联,表与表的行数相乘。
二、使用步骤
代码如下(示例):
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;
效果图如下
总结
以上就是本篇文章的全部内容,上述是对内连接针对性较强的例题,概括了内连接基础学习的方法,比较适合初学者进行观摩学习。