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

 更新时间:2021年06月03日 10:53:40   作者:weixin_58861849  
连接(join)查询是将两个查询的结果以“横向对接”的方式合并起来的结果,这篇文章主要给大家介绍了关于MYSQL连接查询的相关资料,需要的朋友可以参考下

前言

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

一,交叉连接

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

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

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

总结

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

相关文章

  • Mysql查询很慢卡在sending data的原因及解决思路讲解

    Mysql查询很慢卡在sending data的原因及解决思路讲解

    今天小编就为大家分享一篇关于Mysql查询很慢卡在sending data的原因及解决思路讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 浅谈为什么MySQL不推荐使用子查询和join

    浅谈为什么MySQL不推荐使用子查询和join

    这篇文章主要介绍了浅谈为什么MySQL不推荐使用子查询和join,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySql delimiter的作用是什么

    MySql delimiter的作用是什么

    其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。
    2010-09-09
  • mysql视图功能与用法实例分析

    mysql视图功能与用法实例分析

    这篇文章主要介绍了mysql视图功能与用法,结合实例形式分析了mysql数据库视图的概念、功能、使用方法、与临时表的区别及操作相关注意事项,需要的朋友可以参考下
    2019-04-04
  • Mysql触发器语法解读(附带简单实用例子)

    Mysql触发器语法解读(附带简单实用例子)

    这篇文章主要介绍了Mysql触发器语法解读(附带简单实用例子),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Mysql的库函数整理大全(非常详细!)

    Mysql的库函数整理大全(非常详细!)

    MySQL数据库中提供了很丰富的函数,下面这篇文章主要给大家介绍了关于Mysql库函数的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-04-04
  • 关于Mysql子查询的三个应用场景

    关于Mysql子查询的三个应用场景

    这篇文章主要介绍了关于Mysql子查询的三个应用场景,子查询是在一个完整的查询语句中,嵌套不同功能的小查询,从而完成复杂查询的一种编写形式,需要的朋友可以参考下
    2023-07-07
  • MySql索引的作用以及对索引的理解

    MySql索引的作用以及对索引的理解

    这篇文章主要给大家介绍了关于MySql索引的作用以及对索引的理解,MySQL索引的建立对于MySQL的高效运行是很重要的,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • MySQL教程彻底学懂存储过程

    MySQL教程彻底学懂存储过程

    这篇文章主要为大家介绍了MySQL系列的存储过程,文中详细的为大家解释存储过程的相关概念及用法语法,以及对存储过程的理解解析,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • MySQL修改配置 区分大小写

    MySQL修改配置 区分大小写

    修改MySql Server安装目录下的 my.ini 文件,在mysqld节下加入下面一行 set-variable=lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)最后重启一下MySql服务即可。
    2010-12-12

最新评论