你知道哪几种MYSQL的连接查询

作者:weixin_58861849 时间:2024-01-20 15:00:34 

前言

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

一,交叉连接

交叉连接,又称“笛卡尔连接”或“叉乘”,它是所有类型的内连接的基础。

示例:实现线路表与车辆表,其语句如下:


`slelect*from line CROSS JOIN vehicle 等价于:select*from line,vehicle

二,内连接

内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型。

语法如下:


SElECT fieldlist FROM table1 【INNER】JOIN table2 ON
table1.column1=table2.column2 【where condition】

三,自然连接

自然连接是一种特殊的内连接,它要求相连的两张表的依据列必须是相同字段(字段名相同,字段属性相同)。
语法如下:


select fieldlist FROM table1 NATURAL JOIN table2 【where condition】

四,多表连接查询

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

三表连接查询语法如下:


SELECT fieldllist FROM table1 JOIN table2 ON
tabke1.column1=table.column2_1 JOIN table3 on
table2.column2_2=table.column3【where condition】

如果在FROM子句中,直接列出所有要连接的表,然后在WHERE子句中指定连接条件,此为简单多表查询,它与内连接功能相同。

使用两表连接查询语法格式如下:


SELECT fieldlist FROM table1, table2
HERE table1.column1=table2.column2 【and其他条件】

五,外连接

在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际血用中,如果秀望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。外连接分左外连接和右外连接。

语法如下:


`SELECT字段名称FROM表名1 LEFT|RIGHT|FULL [OUTER] JOIN 表名2 ON 表名1.字段名1=表名2.字段名2`

1,左外连接

在外连接的结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件的来源于表的列值为nullo。

2,右外连接

右外连接是左外连接的反向连接。右外连接的结果集包括右表的所有记录和左表中满足连换条件的记象,结果集中那些不符合连接条件的来源于左表的列值为nullo。

作业:

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


SELECT
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;

获取公交二公司所有司机信息。要求输出司机姓名、身份证、性别和电话;


SELECT
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

查询所有非空调车的车牌号、型号、线路号、起点站和终点站;


SELECT
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;

显示所有线路及其所配车辆基本信息,并查询车辆所配司机相关信息,要求输出司机姓名、性别、电话、车牌号、型号、线路号、起点站和终点站;


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 的订购明细信息,要求输出商品名、单价和件数。


SELECT
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、下单日期、商品名、单价和件数。


SELECT
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 和下单时间。


SELECT
c.cName 客户姓名,
c.phone 电话,
o.ordersID 订单ID,
o.ordersDate 下单时间
FROM
customer c
LEFT JOIN orders o on c.customerID=o.customerID;

8.使用右接获取所有客户的基本信息以及订购信息,要求输出客户姓名、电话、订单 ID 和下单时间。


SELECT
c.cName 客户姓名,
c.phone 电话,
o.ordersID 订单ID,
o.ordersDate 下单时间
FROM
orders o
right JOIN customer c on c.customerID=o.customerID;

总结

来源:https://blog.csdn.net/weixin_58861849/article/details/117451717

标签:mysql,连接,查询
0
投稿

猜你喜欢

  • 如何go语言比较两个对象是否深度相同

    2024-02-18 21:21:58
  • mysql数据库中字符集乱码问题原因及解决

    2024-01-14 19:38:10
  • javascript获取select标签选中的值

    2024-05-09 10:34:41
  • 深入理解Python中range和xrange的区别

    2023-06-22 06:10:09
  • sql2005 日志清理 SQL2005压缩清除日志的方法

    2024-01-28 12:59:25
  • sql 判断函数、存储过程是否存在的代码整理

    2024-01-28 20:09:53
  • Python PyQt5实现的简易计算器功能示例

    2022-01-22 12:03:19
  • Python中处理字符串之islower()方法的使用简介

    2021-03-26 16:40:35
  • python中使用docx模块处理word文档

    2023-04-07 18:50:44
  • 详解Python常用标准库之os模块与shutil模块

    2023-06-13 04:19:20
  • Python教程之成员和身份运算符的用法详解

    2021-04-19 11:36:56
  • Python的函数使用详解

    2021-11-22 15:34:25
  • javascript生成大小写字母

    2024-04-17 10:26:30
  • 制作Dreamweaver活动菜单条

    2008-10-03 20:59:00
  • python基础pandas的drop()用法示例详解

    2023-06-11 15:11:39
  • Mysql my.ini 配置文件详解

    2024-01-28 06:16:57
  • 微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解

    2023-11-18 19:09:27
  • vue项目中禁用浏览器缓存配置案例

    2024-06-07 16:01:26
  • 利用ctypes提高Python的执行速度

    2023-11-04 22:33:55
  • Python tkinter的grid布局及Text动态显示方法

    2023-06-28 14:54:00
  • asp之家 网络编程 m.aspxhome.com