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


Posted in MySQL onJune 03, 2021

前言

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

一,交叉连接

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

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

select*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;

总结

到此这篇关于MYSQL连接查询的文章就介绍到这了,更多相关MYSQL连接查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
浅谈Mysql多表连接查询的执行细节
Apr 24 MySQL
MySQL优化之如何写出高质量sql语句
May 17 MySQL
MYSQL 无法识别中文的永久解决方法
Jun 03 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 MySQL
MySQL中in和exists区别详解
Jun 03 #MySQL
MySQL 不等于的三种使用及区别
Jun 03 #MySQL
MYSQL 无法识别中文的永久解决方法
MySQL5.7并行复制原理及实现
MySQL删除和插入数据很慢的问题解决
Jun 03 #MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 #MySQL
MySQL8.0无法启动3534的解决方法
You might like
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
vue中v-model的应用及使用详解
2018/06/27 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
智能钱包:Ekster
2019/11/21 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
质检的岗位职责
2013/11/17 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
满月酒答谢词
2014/01/14 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
2016新年致辞
2015/08/01 职场文书