你知道哪几种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 相关文章推荐
Windows10下安装MySQL8
Apr 06 MySQL
MySQL sql_mode的使用详解
May 08 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
MySQL中出现乱码问题的终极解决宝典
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL外键约束(Foreign Key)案例详解
Jun 28 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
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
php微信开发之百度天气预报
2016/11/18 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
nodeJS微信分享
2017/12/20 NodeJs
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
js实现全选反选不选功能代码详解
2019/04/24 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
js验证账户名是否重复
2020/05/26 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
django进阶之cookie和session的使用示例
2018/08/17 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
数控技校生自我鉴定
2014/04/19 职场文书
小学生环保倡议书
2014/05/15 职场文书
投资申请报告
2015/05/19 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python