• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL连接查询你真的学会了吗?

    1.内连接查询概要

           内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型。内连接基于连接谓词,它将两张表(如A和B)的列组合在一起,产生新的结果表。内连接查询会将A表的每一行和B表的每一行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,A和B中匹配的行会按列组合(并排组合)成结果集中的一行。

           内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分3种:交叉连接相等连接和自然连接。

    2.交叉连接(笛卡尔积)

           交叉连接(Cross Join) ,又称“笛卡尔连接(Cartesian Join) "或“叉乘(Product) ",它是所有类型的内连接的基础。

           如果把表视为行记录的集合,那么交叉连接即返回这两个集合的笛卡尔积,返回到结果集合中的数据行数等于第一张表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。这其实等价于内连接的连接条件为“永真” ,或连接条件不存在。如果A和B是两个集合,它们的交叉连接就记为: A x B.

           定义线路表与车辆表的交叉连接(笛卡尔积) 。

    示例:

    实现线路表与车辆表笛卡尔积

    SELECT COUNT(*)
    FROM line 
    CROSS JOIN vehicle

    3.内连接语法与示例

    语法:

    SELECT fieldlist
    FROM table1 [INNER] JOIN table2 
      ON table1.column1=table2.column2
    [WHERE condition]

    示例1:

    使用内连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证

    SELECT v.*,d.name,d.licenseNo
    FROM vehicle v JOIN driver d
      ON v.driverID=d.driverID
    WHERE model LIKE '%DD%'
    

    示例2:

    使用内连接获取年龄大于35岁的司机信息和该司机所驾驶的车辆信息,要求车辆信息为全部列,司机信息中只包含姓名、出生年月和电话

    SELECT v.*,d.name,d.licenseNo,d.phone
    FROM vehicle v INNER JOIN driver d
      ON v.driverID=d.driverID
    WHERE CEIL(DATEDIFF(NOW(),birthday)/365)>35
    

    4.自然连接

    自然连接(Natural Join)是一种特殊的内连接,它要求相连接的两张表的连接依据列心须是相同的字段(字段온相同,字段属性相同)。在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉,结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。(部分数据库不支持自然连接,saL Server等。)

    自然连接的语法如下:

    SELECT fieldlist
    FROM table1 NATURAL JOIN table2
    [WHERE condition]
    

    示例:

    使用自然连接获取车辆型号含有“DD”字样的车辆信息和司机信息,要求车辆信息为全部列,司机信息中只需包含姓名和身份证

    SELECT v.*,d.name,d.licenseNo
    FROM vehicle v NATURAL JOIN driver d
    WHERE model LIKE '%DD%'
    

    5.多表连接查询

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

    以下为三表连接查询的语法:

    SELECT fieldlist 
    FROM table1 JOIN table2 
      ON table1.column1=table2.column2_1
    JOIN table3
      ON table2.column2_2=table3.column3
    [WHERE condition]
    

    说明:

    (1)table2与table1和table3两两相连。

    (2)三表以上连接查询的方法与三表连接查询的方法一样,均是通过两两相连的方式实现。

    示例1:

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

    SELECT d.name,v.plateNo,v.model,l.lineNo,l.from_station,l.end_station
    FROM vehicle v JOIN driver d
      ON v.driverID=d.driverID
    JOIN line l
      ON v.lineID=l.lineID
    WHERE type='非空调车'
    

    示例2:

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

    SELECT d.name,d.licenseNo,d.gender,d.phone
    FROM vehicle v JOIN driver d 
      ON v.driverID 
    JOIN line l
      ON v.lineID=l.lineID
    WHERE company='公交二公司'
    

    6.简单多表连接查询

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

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

    SELECT fieldlist
    FROM table1,table2
    WHERE table1.column1=table2.column2
    [AND 其他条件]
    

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

    SELECT fieldlist 
    FROM table1,table2,table3
    WHERE table1.column1=table2.column2_1 
      AND table2.column2_2=table3.colemn3
    [AND 其他条件]
    

    示例:

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

    SELECT d.name,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
    AND type='空调车'
    

    总结

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

    您可能感兴趣的文章:
    • MySQL中基本的多表连接查询教程
    • 详解MySQL中的分组查询与连接查询语句
    • mysql连接查询(左连接,右连接,内连接)
    • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
    • mysql多个left join连接查询用法分析
    • MySQL查询优化:连接查询排序浅谈
    • 详解MySql基本查询、连接查询、子查询、正则表达查询
    • MySQL笔记之连接查询详解
    • Mysql自连接查询实例详解
    • mysql多表连接查询实例讲解
    上一篇:MySQL 8.0 Online DDL快速加列的相关总结
    下一篇:MySQL不使用order by实现排名的三种思路总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL连接查询你真的学会了吗? MySQL,连接,查询,你,真的,