位置: 编程技术 - 正文

几种MySQL中的联接查询操作方法总结(mysql连接是什么协议)

编辑:rootadmin

推荐整理分享几种MySQL中的联接查询操作方法总结(mysql连接是什么协议),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql连接种类有哪些,mysql 联结,mysql 连接语句,mysql各种连接的区别,mysql连接种类有哪些,mysql各种连接的区别,mysql连接种类有哪些,mysql有几种连接方式,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

现在系统的各种业务是如此的复杂,数据都存在数据库中的各种表中,这个主键啊,那个外键啊,而表与表之间就依靠着这些主键和外键联系在一起。而我们进行业务操作时,就需要在多个表之间,使用sql语句建立起关系,然后再进行各种sql操作。那么在使用sql写出各种操作时,如何使用sql语句,将多个表关联在一起,进行业务操作呢?而这篇文章,就对这个知识点进行总结。

联接查询是一种常见的数据库操作,即在两张表(多张表)中进行匹配的操作。MySQL数据库支持如下的联接查询:

CROSS JOIN(交叉联接) INNER JOIN(内联接) OUTER JOIN(外联接) 其它

在进行各种联接操作时,一定要回忆一下在《SQL逻辑查询语句执行顺序》这篇文章中总结的SQL逻辑查询语句执行的前三步:

执行FROM语句(笛卡尔积) 执行ON过滤 添加外部行

每个联接都只发生在两个表之间,即使FROM子句中包含多个表也是如此。每次联接操作也只进行逻辑查询语句的前三步,每次产生一个虚拟表,这个虚拟表再依次与FROM子句的下一个表进行联接,重复上述步骤,直到FROM子句中的表都被处理完为止。前期准备

1.新建一个测试数据库TestDB;

创建测试表table1和table2;

插入测试数据;

准备工作做完以后,table1和table2看起来应该像下面这样:

准备工作做的差不多了,开始今天的总结吧。CROSS JOIN联接(交叉联接)

CROSS JOIN对两个表执行FROM语句(笛卡尔积)操作,返回两个表中所有列的组合。如果左表有m行数据,右表有n行数据,则执行CROSS JOIN将返回m*n行数据。CROSS JOIN只执行SQL逻辑查询语句执行的前三步中的第一步。

CROSS JOIN可以干什么?由于CROSS JOIN只执行笛卡尔积操作,并不会进行过滤,所以,我们在实际中,可以使用CROSS JOIN生成大量的测试数据。

对上述测试数据,使用以下查询:

就会得到以下结果:

INNER JOIN联接(内联接)

INNER JOIN比CROSS JOIN强大的一点在于,INNER JOIN可以根据一些过滤条件来匹配表之间的数据。在SQL逻辑查询语句执行的前三步中,INNER JOIN会执行第一步和第二步;即没有第三步,不添加外部行,这是INNER JOIN和接下来要说的OUTER JOIN的最大区别之一。

现在来看看使用INNER JOIN来查询一下:

就会得到以下结果:

对于INNER JOIN来说,如果没有使用ON条件的过滤,INNER JOIN和CROSS JOIN的效果是一样的。当在ON中设置的过滤条件列具有相同的名称,我们可以使用USING关键字来简写ON的过滤条件,这样可以简化sql语句,例如:

几种MySQL中的联接查询操作方法总结(mysql连接是什么协议)

在实际编写sql语句时,我们都可以省略掉INNER关键字,例如:

但是,请记住,这还是INNER JOIN。OUTER JOIN联接(外联接)

哦,记得有一次参加面试,还问我这个问题来着,那在这里再好好的总结一下。通过OUTER JOIN,我们可以按照一些过滤条件来匹配表之间的数据。OUTER JOIN的结果集等于INNER JOIN的结果集加上外部行;也就是说,在使用OUTER JOIN时,SQL逻辑查询语句执行的前三步,都会执行一遍。关于如何添加外部行,请参考《SQL逻辑查询语句执行顺序》这篇文章中的添加外部行部分内容。

MySQL数据库支持LEFT OUTER JOIN和RIGHT OUTER JOIN,与INNER关键字一样,我们可以省略OUTER关键字。对于OUTER JOIN,同样的也可以使用USING来简化ON子句。所以,对于以下sql语句:

我们可以简写成这样:

但是,与INNER JOIN还有一点区别是,对于OUTER JOIN,必须指定ON(或者using)子句,否则MySQL数据库会抛出异常。NATURAL JOIN联接(自然连接)

NATURAL JOIN等同于INNER(OUTER) JOIN与USING的组合,它隐含的作用是将两个表中具有相同名称的列进行匹配。同样的,NATURAL LEFT(RIGHT) JOIN等同于LEFT(RIGHT) JOIN与USING的组合。比如:

等价。

在比如:

等价。STRAIGHT_JOIN联接

STRAIGHT_JOIN并不是一个新的联接类型,而是用户对sql优化器的控制,其等同于JOIN。通过STRAIGHT_JOIN,MySQL数据库会强制先读取左边的表。举个例子来说,比如以下sql语句:

它的主要输出部分如下:

我们可以很清楚的看到,MySQL是先选择的table2表,然后再进行的匹配。如果我们指定STRAIGHT_JOIN方式,例如:

上述语句的主要输出部分如下:

可以看到,当指定STRAIGHT_JOIN方式以后,MySQL就会先选择table1表,然后再进行的匹配。

那么就有读者问了,这有啥好处呢?性能,还是性能。由于我这里测试数据比较少,大进行大量数据的访问时,我们指定STRAIGHT_JOIN让MySQL先读取左边的表,让MySQL按照我们的意愿来完成联接操作。在进行性能优化时,我们可以考虑使用STRAIGHT_JOIN。多表联接

在上面的所有例子中,我都是使用的两个表之间的联接,而更多时候,我们在工作中,可能不止要联接两张表,可能要涉及到三张或者更多张表的联接查询操作。

对于INNER JOIN的多表联接查询,可以随意安排表的顺序,而不会影响查询的结果。这是因为优化器会自动根据成本评估出访问表的顺序。如果你想指定联接顺序,可以使用上面总结的STRAIGHT_JOIN。

而对于OUTER JOIN的多表联接查询,表的位置不同,涉及到添加外部行的问题,就可能会影响最终的结果。总结

这是MySQL中联接操作的全部内容了,内容虽多,但是都还比较简单,结合文章中的例子,再自己实际操作一遍,完全可以搞定的。这一篇文章就这样了。

初步介绍MySQL中的集合操作 啥是集合操作?通常来说,将联接操作看作是表之间的水平操作,因为该操作生成的虚拟表包含两个表中的列。而我这里总结的集合操作,一般将这些

简单讲解MySQL中的多源复制 近日ORACLE发布几个新的功能在最新的Mysql5.7.2的版本上,由此有了此篇文章。大多数的改善是在数据库性能和复制相关的功能上,这个新版本会带给我们

MySQL获取所有分类的前N条记录 比如有文章表Article(Id,Category,InsertDate),现在要用SQL找出每种类型中时间最新的前N个数据组成的集合,一段不错的代码,留存备用SELECTA1.*FROMArticleASA1INNER

标签: mysql连接是什么协议

本文链接地址:https://www.jiuchutong.com/biancheng/347293.html 转载请保留说明!

上一篇:简单介绍MySQL中的事务机制(mysql的概念及作用)

下一篇:初步介绍MySQL中的集合操作(mysql使用入门)

  • 小微企业印花税怎么算
  • 出口报关单上面的运费怎么填
  • 空调维修保养征收什么税?
  • 企业股东分红可以不按比例分吗
  • 哪些费用类专票可以抵扣
  • 装修工程人工费占总价比例
  • 企业微信里的钱
  • 代办汽车过户手续
  • 本月实现利润总额的25%计算并结转应交所得税
  • 出纳在银行领了钱出纳要怎样记帐?
  • 公司的基建部门是做什么的
  • 研发无形资产摊销加计扣除计算
  • 研发部门属于哪个会计科目
  • 2018年债券基金
  • 三证合一后没有去税务局登记会怎么样
  • 去税务局交的社保能退么
  • 物流公司开票税率
  • 小规模开专票可以享受1%吗
  • 购车保险属于什么费用
  • 有限责任公司的人员构成
  • 生产成本的计算公式是什么
  • 小微企业行业划分标准 工信部
  • 小规模没有发票可以入账吗
  • 无法设置面容id怎么办
  • 公司自有房屋出租 没有从租计征房产税
  • 银行汇票银行不予受理的是
  • php 无限级分类
  • php判断https
  • php字符串处理函数
  • php b/s
  • mac系统存储好大
  • 企业税收有哪些部分组成
  • 二手房过户需要哪些手续和费用2023
  • 企业事业单位应当采取有效措施
  • wrme.exe是什么
  • 最小型笔记本
  • 森林里雾气弥漫,给大家带来了什么困难?
  • 浏览器无痕浏览后警察能查到吗
  • 企业和单位往来怎么做账
  • 注意力机制加在CNN的什么位置
  • element_at
  • 使用ajax实现页面分页
  • php依赖注入的三种方式
  • 本期应补退税额和期末未缴税额
  • 生产企业成本会计做账流程
  • 织梦使用手册
  • 公司购进设备会计分录
  • 发票已经勾选却统计不出来
  • 业务活动表本年累计数公式是什么
  • 管理费用冲减其他应付款分录
  • 发票金额跟实际转账金额不一样该怎么办
  • 劳务成本科目的分类
  • 财务费用怎么用
  • 应收账款应付账款借贷方都表示什么
  • 出租使用权什么意思
  • 人力资源服务费是什么意思
  • 农产品计算抵扣税率 最新
  • 没有发票的福利费支出可以税前扣除吗
  • 销售费用变动率是看本期还是本年累计
  • 低值易耗品怎么做账务处理
  • 非营利医疗机构免征哪几种税
  • cmd 执行sql
  • 组策略win7
  • ubuntu怎么修改网络配置
  • mac系统制作
  • linux vim
  • win7系统卡慢怎么修复
  • 微软报错是什么意思
  • 安装centos7安装位置没有磁盘
  • 如何检测装有监控器?
  • windows10周年更新
  • win10图标预览
  • 使用jquery实现的项目
  • unity3d documentation
  • python 网络应用
  • 瀑布流水风景图片
  • 浙江省网上税务局申报
  • 税收优惠政策有哪些企业
  • 什么是增值税税率是多少
  • 2021年十大慈善企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设