各位用户为了找寻关于你知道哪几种MYSQL的连接查询的资料费劲了很多周折。这里教程网为您整理了关于你知道哪几种MYSQL的连接查询的相关资料,仅供查阅,以下为您介绍关于你知道哪几种MYSQL的连接查询的详细内容
前言
查询信息的来源如果来自多张表,则必须对这些表进行连接查询。连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。连接查询分为内连接和外连接。
一,交叉连接
交叉连接,又称“笛卡尔连接”或“叉乘”,它是所有类型的内连接的基础。
示例:实现线路表与车辆表,其语句如下:
? 1`slelect*
from
line
CROSS
JOIN
vehicle 等价于:
select
*
from
line,vehicle
二,内连接
内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型。
语法如下:
? 1 2SElECT
fieldlist
FROM
table1 【
INNER
】
JOIN
table2
ON
table1.column1=table2.column2 【
where
condition】
三,自然连接
自然连接是一种特殊的内连接,它要求相连的两张表的依据列必须是相同字段(字段名相同,字段属性相同)。 语法如下:
? 1select
fieldlist
FROM
table1 NATURAL
JOIN
table2 【
where
condition】
四,多表连接查询
如果查询的信息来源多张表,则可通过两两相连的反式建立多表连接查询。
三表连接查询语法如下:
? 1 2 3SELECT
fieldllist
FROM
table1
JOIN
table2
ON
tabke1.column1=
table
.column2_1
JOIN
table3
on
table2.column2_2=
table
.column3【
where
condition】
如果在FROM子句中,直接列出所有要连接的表,然后在WHERE子句中指定连接条件,此为简单多表查询,它与内连接功能相同。
使用两表连接查询语法格式如下:
? 1 2SELECT
fieldlist
FROM
table1, table2
HERE table1.column1=table2.column2 【
and
其他条件】
五,外连接
在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际血用中,如果秀望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。外连接分左外连接和右外连接。
语法如下:
? 1`
SELECT
字段名称
FROM
表名1
LEFT
|
RIGHT
|
FULL
[
OUTER
]
JOIN
表名2
ON
表名1.字段名1=表名2.字段名2`
1,左外连接
在外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于表的列值为nullo。
2,右外连接
右外连接是左外连接的反向连接。右外连接的结果集包括右表的所有记录和左表中满足连换条件的记象,结果集中那些不符合连接条件的来源于左表的列值为nullo。
作业:
获取所有非空调车的车牌号、型号和司机姓名、所属线路的线路号、起点站和终点站信息;
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15SELECT
v.plateNO 车牌号,
v.model 型号,
d.
NAME
司机姓名,
l.lineNo 线路号,
l.from_station 起点站,
l.end_station 终点站
FROM
line l,
vehicle v,
driver d
WHERE
v.type =
'非空调车'
AND
l.lineID = v.lineID
AND
d.driverID = v.driverID;
获取公交二公司所有司机信息。要求输出司机姓名、身份证、性别和电话;
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14SELECT
NAME
司机姓名,
licenseNO 身份证,
d.gender 性别,
phone 电话
FROM
vehicle v,
driver d,
line l
WHERE
v.driverID = d.driverID
AND
v.lineID = l.lineID
AND
company =
'公交二公司'
GROUP
BY
查询所有非空调车的车牌号、型号、线路号、起点站和终点站;
? 1 2 3 4 5 6 7 8 9 10 11 12SELECT
v.plateNO 车牌号,
v.model 型号,
l.lineNo 线路号,
l.from_station 起点站,
l.end_station 终点站
FROM
line l,
vehicle v
WHERE
v.type =
'非空调车'
AND
l.lineID = v.lineID;
显示所有线路及其所配车辆基本信息,并查询车辆所配司机相关信息,要求输出司机姓名、性别、电话、车牌号、型号、线路号、起点站和终点站;
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
SELECT
d.
NAME
司机姓名,
licenseNO 身份证,
d.gender 性别,
phone 电话,
v.plateNO 车牌号,
v.model 型号,
l.lineNo 线路号,
l.from_station 起点站,
l.end_station 终点站
FROM
vehicle v,
driver d,
line l
WHERE
v.driverID = d.driverID
AND
v.lineID = l.lineID
GROUP
BY
司机姓名;
6.获取订单 ID 为 4 的订购明细信息,要求输出商品名、单价和件数。
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16SELECT
c.cName 客户姓名,
o.ordersDate 下单日期,
g.goodsName 商品名,
g.unitPrice 单价,
od.quantity 件数
FROM
ordersdetail od,
goods g,
orders o,
customer c
WHERE
c.cName =
'王传华'
AND
c.customerID = o.customerID
AND
o.ordersID = od.ordersID
AND
od.goodsID = g.goodsID;
获取客户“王传华”所下订单详细信息,要求显示客户姓名、订单 ID、下单日期、商品名、单价和件数。
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16SELECT
c.cName 客户姓名,
o.ordersDate 下单日期,
g.goodsName 商品名,
g.unitPrice 单价,
od.quantity 件数
FROM
ordersdetail od,
goods g,
orders o,
customer c
WHERE
c.cName =
'王传华'
AND
c.customerID = o.customerID
AND
o.ordersID = od.ordersID
AND
od.goodsID = g.goodsID;
使用左接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单 ID 和下单时间。
? 1 2 3 4 5 6 7 8SELECT
c.cName 客户姓名,
c.phone 电话,
o.ordersID 订单ID,
o.ordersDate 下单时间
FROM
customer c
LEFT
JOIN
orders o
on
c.customerID=o.customerID;
8.使用右接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单 ID 和下单时间。
? 1 2 3 4 5 6 7 8SELECT
c.cName 客户姓名,
c.phone 电话,
o.ordersID 订单ID,
o.ordersDate 下单时间
FROM
orders o
right
JOIN
customer c
on
c.customerID=o.customerID;
总结
到此这篇关于MYSQL连接查询的文章就介绍到这了,更多相关MYSQL连接查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/weixin_58861849/article/details/117451717