1. 术语解释:
  2. 1、内连接: 只连接匹配的行
  3. 2、左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
  4. 3、右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
  5. 4、全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
  6. 5、交叉连接: 笛卡尔积
  1. 例子:
  1. CREATE DATABASE test_link DEFAULT CHARACTER SET 'utf8';
  2.  
  3. use test_link;
  4.  
  5. CREATE TABLE A (
  6. id ) NOT NULL,
  7. name ) NOT NULL,
  8. PRIMARY KEY (id)
  9. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  10.  
  11. CREATE TABLE B (
  12. id ) NOT NULL,
  13. addr ) NOT NULL,
  14. a_id ) not null,
  15. PRIMARY KEY (id)
  16. )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  17.  
  18. insert into A(id, name) values
  19. (', 'zhang'),
  20. (', 'li'),
  21. (', 'wang');
  22.  
  23. insert into B(id, addr, a_id) values
  24. ('),
  25. ('),
  26. (');
  27.  
  28. mysql> select * from A;
  29. +----+-------+
  30. | id | name |
  31. +----+-------+
  32. | zhang |
  33. | li |
  34. | wang |
  35. +----+-------+
  36. mysql> select * from B;
  37. +----+----------+------+
  38. | id | addr | a_id |
  39. +----+----------+------+
  40. |
  41. |
  42. |
  43. +----+----------+------+
  44. 左右连接
  45. mysql> select A.name, B.addr from A left join B on A.id = B.a_id;
  46. +-------+----------+
  47. | name | addr |
  48. +-------+----------+
  49. | zhang | beijing |
  50. | wang | shanghai |
  51. | li | NULL |
  52. +-------+----------+
  53. mysql> select A.name, B.addr from A right join B on A.id = B.a_id;
  54. +-------+----------+
  55. | name | addr |
  56. +-------+----------+
  57. | zhang | beijing |
  58. | wang | shanghai |
  59. | NULL | nanjing |
  60. +-------+----------+
  61. 内连接inner join
  62. mysql> select A.name, B.addr from A inner join B on A.id = B.a_id;
  63. +-------+----------+
  64. | name | addr |
  65. +-------+----------+
  66. | zhang | beijing |
  67. | wang | shanghai |
  68. +-------+----------+
  69. 自然连接
  70. mysql> select A.name, B.addr from A, B where A.id = B.a_id;
  71. +-------+----------+
  72. | name | addr |
  73. +-------+----------+
  74. | zhang | beijing |
  75. | wang | shanghai |
  76. +-------+----------+
  77. mysql> select * from A, B;
  78. +----+-------+----+----------+------+
  79. | id | name | id | addr | a_id |
  80. +----+-------+----+----------+------+
  81. |
  82. |
  83. |
  84. |
  85. |
  86. |
  87. |
  88. |
  89. |
  90. +----+-------+----+----------+------+
  91. 全连接
  92. mysql> select A.name, B.addr from A full join B;
  93. ERROR
  94. mysql> select * from A full outer join B;
  95. ERROR
  96. mysql> select * from A full join B;
  97. +----+-------+----+----------+------+
  98. | id | name | id | addr | a_id |
  99. +----+-------+----+----------+------+
  100. |
  101. |
  102. |
  103. |
  104. |
  105. |
  106. |
  107. |
  108. |
  109. +----+-------+----+----------+------+
  110. 笛卡尔积连接
  111. mysql> select * from A cross join B;
  112. +----+-------+----+----------+------+
  113. | id | name | id | addr | a_id |
  114. +----+-------+----+----------+------+
  115. |
  116. |
  117. |
  118. |
  119. |
  120. |
  121. |
  122. |
  123. |
  124. +----+-------+----+----------+------+

mysql各种连接总结的更多相关文章

  1. mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tom ...

  2. Mysql的连接状态

    对应mysql的连接,任何时刻都有一个状态.表示mysql当前正在做什么. command里面的状态: sleep:线程正在等待客户发送新的请求. query:正在执行查询或者正在将结果发送客户端 这 ...

  3. mysql远程连接命令

    mysql远程连接命令   一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:\>mysql -h localhost -u ...

  4. Navicat for mysql 远程连接 mySql数据库10061、1045错误

    原文地址:http://www.111cn.net/database/mysql/46377.htm 有朋友可能会碰到使用Navicat for mysql 远程连接 mySql数据库会提示10061 ...

  5. MySql的连接查询

    类似于oracle的连接查询,mysql连接查询也有左外连接.右外连接.内连接查询.但是,不同的是没有直接 的全外连接查询. 这里介绍MySql的连接查询: 这里已两张表为例:STUDENT 表 和 ...

  6. 服务器保持与Mysql的连接

    服务器程序经常要访问数据库,并且服务器程序是长时间保持运行的,mysql有一个特点,当连接上数据库后不做任何操作,默认8小时候会自动关闭休 眠的连接!一般情况下很难预料什么时候程序会执行数据库操作,如 ...

  7. PAIP.MYSQL SLEEP 连接太多解决

    PAIP.MYSQL SLEEP 连接太多解决 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.n ...

  8. mysql中连接失败2003错误解决办法

    在使用mysql数据库,新建连接时,会报2003-Can't connect to server on 'localhost'(10038)错误,原因主要是MYSQL服务没有启动起来,但是进入:计算机 ...

  9. mysql 远程连接速度慢的解决方案

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在MY.INI(WINDOWS ...

  10. mysql 远程连接

    4.现在如果用你电脑上的终端进行MySQL连接时,有可能出现如下错误: MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXX ...

随机推荐

  1. CF1092(div3):Great Vova Wall (栈)(还不错)

    D1. Great Vova Wall (Version 1): 题意:给定长度为N的墙,以及每个位置的一些高度,现在让你用1*2的砖和2*1的砖去铺,问最后能否铺到高度一样. 思路:分析其奇偶性,在 ...

  2. pylot压力测试工具

    博客搬家了,欢迎大家关注,https://bobjin.com 由于版本的兼容性问题,现在在windows下搭建pylot+matplotlib压力测试环境真的会令人吃尽苦头.这是因为,pylot从2 ...

  3. L3-017 森森快递 (30 分)

    森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(编号.由于道路限制,第i号城市(,)与第(号城市中间往返的运输货物重 ...

  4. 结构体内的函数与bfs的情景变量

    关于结构体内的函数,太难的尚且不会用,下面是一个简单一点的结构体内函数的代码 定义这样一个结构体函数之后就能像如下这样使用了 以上为结构体内的简单函数,下面重点来了,关于bfs找最短路由于需要避免走回 ...

  5. CSS3 Flexbox轻巧实现元素的水平居中和垂直居中(转)

    CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...

  6. oclif cli app开发简单试用

    oclif 是heroku 开源的cli 开发框架,有一篇关于12 factor cli app 开发的文章很值得看看 https://medium.com/@jdxcode/12-factor-cl ...

  7. 使用Apriori进行关联分析(一)

    大型超市有海量交易数据,我们可以通过聚类算法寻找购买相似物品的人群,从而为特定人群提供更具个性化的服务.但是对于超市来讲,更有价值的是如何找出商品的隐藏关联,从而打包促销,以增加营业收入.其中最经典的 ...

  8. os层删除与数据库层drop的区别于对策。

    os rm删除的,可以通过os层面恢复(句柄.inode.如果inode没有了可以根据block去重组出来数据文件),也可以通过rman备份还原方式恢复.  db 层面drop删除的 只能不完全恢复( ...

  9. LINQ TO SQL 中的join(转帖)

    http://www.cnblogs.com/ASPNET2008/archive/2008/12/21/1358152.html join对于喜欢写SQL的朋友来说还是比较实用,也比较容易接受的东西 ...

  10. 大数据hadoop与spark的区别

    学习hadoop已经有很长一段时间了,好像是二三月份的时候朋友给了一个国产Hadoop发行版下载地址,因为还是在学习阶段就下载了一个三节点的学习版玩一下.在研究.学习hadoop的朋友可以去找一下看看 ...