服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - 你知道哪几种MYSQL的连接查询

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

2021-08-11 19:14weixin_58861849 Mysql

连接(join)查询是将两个查询的结果以“横向对接”的方式合并起来的结果,这篇文章主要给大家介绍了关于MYSQL连接查询的相关资料,需要的朋友可以参考下

前言

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

一,交叉连接

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

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

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

二,内连接

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

语法如下:

?
1
2
SElECT fieldlist FROM table1 【INNERJOIN table2 ON
table1.column1=table2.column2 【where condition】

三,自然连接

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

?
1
select fieldlist FROM table1 NATURAL JOIN table2 【where condition】

四,多表连接查询

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

三表连接查询语法如下:

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

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

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

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

五,外连接

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

语法如下:

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

1,左外连接

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

2,右外连接

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

作业:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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;

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    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 的订购明细信息,要求输出商品名、单价和件数。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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、下单日期、商品名、单价和件数。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 和下单时间。

?
1
2
3
4
5
6
7
8
SELECT
    c.cName 客户姓名,
    c.phone 电话,
    o.ordersID 订单ID,
    o.ordersDate 下单时间
FROM
     customer c
LEFT JOIN orders o on c.customerID=o.customerID;

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

?
1
2
3
4
5
6
7
8
SELECT
    c.cName 客户姓名,
    c.phone 电话,
    o.ordersID 订单ID,
    o.ordersDate 下单时间
FROM
    orders o
right JOIN customer c on c.customerID=o.customerID;

总结

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

原文链接:https://blog.csdn.net/weixin_58861849/article/details/117451717

延伸 · 阅读

精彩推荐
  • Mysqlmysql 5.6.23 安装配置环境变量教程

    mysql 5.6.23 安装配置环境变量教程

    这篇文章主要为大家详细介绍了mysql 5.6.23 安装配置环境变量教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    小迷糊搞支付2652020-09-02
  • Mysqlmysql 5.7.16 安装配置方法图文教程

    mysql 5.7.16 安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.16winx64安装配置方法图文教程,感兴趣的朋友可以参考一下...

    还是叫我大师兄吧4032020-06-28
  • Mysql简单了解mysql方言dialect

    简单了解mysql方言dialect

    这篇文章主要介绍了简单了解数据库方言dialect,数据库方言也是如此,MySQL 是一种方言,Oracle 也是一种方言,MSSQL 也是一种方言,他们之间在遵循 SQL 规范...

    FOOFISH-PYTHON之禅5532020-11-20
  • Mysql将MySQL查询结果按值排序的简要教程

    将MySQL查询结果按值排序的简要教程

    这篇文章主要介绍了将MySQL查询结果按值排序的简要教程,不过同样需要对结果进行检查而决定是否使用order by等其他语句,需要的朋友可以参考下 ...

    Andyuan10003082020-05-26
  • Mysqlmysql存数组的实例代码和方法

    mysql存数组的实例代码和方法

    在本文中我们给大家整理了关于mysql存数组的实例代码和方法以及相关知识点,有需要的朋友们跟着学习下。...

    laozhang6152020-09-24
  • MysqlMySQL数据库锁机制原理解析

    MySQL数据库锁机制原理解析

    这篇文章主要介绍了MySQL数据库锁机制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...

    北方有鱼7302021-03-16
  • Mysqlmysql 5.7.19 winx64免安装版配置教程

    mysql 5.7.19 winx64免安装版配置教程

    这篇文章主要为大家详细介绍了mysql 5.7.19 winx64免安装版配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    余之孟德3162020-10-05
  • MysqlMysql字符串截取及获取指定字符串中的数据

    Mysql字符串截取及获取指定字符串中的数据

    小编童鞋最近接了一个新需求,需要在MySql的字段中截取一段字符串中的特定字符,下面小编把我的核心代码分享给大家,对mysql 字符串截取相关知识感兴...

    深入学习ing4762020-12-13