你知道哪几种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


猜你喜欢
- 先看一个js函数 function jsontest() { var json = [{'username':'cr
- 使用Python进行插值非常方便,可以直接使用scipy中的interpolateimport numpy as npx1 = np.lin
- 什么是服务器端渲染(SSR)?Vue.js 是构建客户端应用程序的框架。默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操
- 索引概述介绍索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这
- 昨天我突发奇想,想用display:inline来实现三列的布局可是搞了半天就是不行。但是理论上是可以的呀(后来才发现是不理解的不深刻,我的
- 本文实例讲述了Python面向对象之接口、抽象类与多态。分享给大家供大家参考,具体如下:接口类继承有两种用途:一:继承基类的方法,并且做出自
- 写在前面这篇文章推荐一个由Golang编写的一个命令行工具——Glow,这个CLI工具可以在命令行读
- 本文实例讲述了python二分法查找算法实现方法。分享给大家供大家参考,具体如下:二分法查找二分查找又称折半查找,优点是比较次数少,查找速度
- 前言如果你搜一圈 "Fabric "关键字,你会发现 90% 的资料都是过时的,因为现在 Fabric 支持 Pytho
- 在单个HTML元素上利用CSS2.1实现拥有3张背景图片和2张内容图效果,或者多重边框的效果。这种渐进增强的方式适用于所有支持CSS2.1伪
- 系统:ubuntu18.04 x64GitHub:https://github.com/xingjidemimi/DjangoAPI.git
- 开始安装Androidstudio 4.1克隆此项目git clone https://github.com/pytorch/android
- 描述Python 字典(Dictionary) copy() 函数返回一个字典的浅复制。语法copy()方法语法:dict.copy()返回
- 1. 吊顶下拉菜单的键盘可用性改进无障碍访问貌似最近比较火,大家都在聊,其中一块就是键盘的可访问性。我们在首页上作了些调整,让用户可以通过键
- 一、前言在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属
- 介绍Prometheus 的基本原理是通过 HTTP 周期性抓取被监控组件的状态。任意组件只要提供对应的 HTTP 接口并且符合 Prome
- Pyqt5安装并配置到pycharm方法:教你如何用pycharm安装pyqt5及其相关配置一、简介QLabel是界面中的标签类,继承自QF
- 这篇文章主要介绍了Python函数参数类型及排序原理总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 在计算loss的时候,最常见的一句话就是tf.nn.softmax_cross_entropy_with_logits,那么它到底是怎么做的
- 背景之前是用的是typora来写的文章,最近typora最近开始收费了,所以就不想用了,于是找到了一个替代品MarkText,感觉跟typo