术语解释:
1、内连接: 只连接匹配的行
2、左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
3、右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
4、全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
5、交叉连接: 笛卡尔积

例子:
CREATE DATABASE test_link DEFAULT CHARACTER SET 'utf8';

use test_link;

CREATE TABLE A (
 id ) NOT NULL,
 name ) NOT NULL,
 PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE B (
 id ) NOT NULL,
 addr ) NOT NULL,
 a_id ) not null,
 PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into A(id, name) values
(', 'zhang'),
(', 'li'),
(', 'wang');

insert into B(id, addr, a_id) values
('),
('),
(');

mysql> select * from A;
+----+-------+
| id | name  |
+----+-------+
  | zhang |
  | li    |
  | wang  |
+----+-------+
mysql> select * from B;
+----+----------+------+
| id | addr     | a_id |
+----+----------+------+
      |
      |
     |
+----+----------+------+
左右连接
mysql> select A.name, B.addr from A left join B on A.id = B.a_id;
+-------+----------+
| name  | addr     |
+-------+----------+
| zhang | beijing  |
| wang  | shanghai |
| li    | NULL     |
+-------+----------+
mysql> select A.name, B.addr from A right join B on A.id = B.a_id;
+-------+----------+
| name  | addr     |
+-------+----------+
| zhang | beijing  |
| wang  | shanghai |
| NULL  | nanjing  |
+-------+----------+
内连接inner join
mysql> select A.name, B.addr from A inner join B on A.id = B.a_id;
+-------+----------+
| name  | addr     |
+-------+----------+
| zhang | beijing  |
| wang  | shanghai |
+-------+----------+
自然连接
mysql> select A.name, B.addr from A, B where A.id = B.a_id;
+-------+----------+
| name  | addr     |
+-------+----------+
| zhang | beijing  |
| wang  | shanghai |
+-------+----------+
mysql> select * from A, B;
+----+-------+----+----------+------+
| id | name  | id | addr     | a_id |
+----+-------+----+----------+------+
        |
        |
        |
        |
        |
        |
       |
       |
       |
+----+-------+----+----------+------+
全连接
mysql> select A.name, B.addr from A full join B;
ERROR
mysql> select * from A full outer join B;
ERROR
mysql> select * from A full join B;
+----+-------+----+----------+------+
| id | name  | id | addr     | a_id |
+----+-------+----+----------+------+
        |
        |
        |
        |
        |
        |
       |
       |
       |
+----+-------+----+----------+------+
笛卡尔积连接
mysql> select * from A cross join B;
+----+-------+----+----------+------+
| id | name  | id | addr     | a_id |
+----+-------+----+----------+------+
        |
        |
        |
        |
        |
        |
       |
       |
       |
+----+-------+----+----------+------+

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. HDU 1114:Piggy-Bank(完全背包)

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  2. (2)字符编码关系和转换(bytes类型)

    ASCII 占一个字节,只支持英文 GB2312 占2个字节,只支持6700+汉字 GBK 是GB2312的升级版,支持21000+汉字 Shift-JIS 日本字符编码 ks_c-5601-1987 ...

  3. 解决安装vmware-tools出现的“The path "" is not a valid path to the 3.2.0-4-amd64 kernel headers”问题

    在用虚拟机安装使用64位Crunchbang(一种Debian GNU/Linux 的linux)的过程中出现很多小问题.其中vmware-tools安装就是第一个问题. 在使用终端安装vmware- ...

  4. day8 python学习 集合 深浅拷贝

    1.内存地址: 字符串在20位以内,没有空格,没有特殊字符的情况下,同样的字符串内存地址是一样的 2.元组中:在只有一个值的时在后边加逗号和没有逗号的区别 t1=(1) 不加逗号这个值是什么类型就打印 ...

  5. 使用VI编辑器在Linux下编写Java文件

    1.cd 文件名称.进入一个文件夹下 2.vi 文件名称,新建一个文件(如此文件已存在则打开) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWlfc3N ...

  6. 防范SQL注入漏洞攻击

    原理:通过拼sql语句,在输入框里输入' ; SHOW TABLES;注入这样的代码, 防范:你把全部的特殊符号都过滤掉(如单引号,双引号),自然就不会被注入 使用mysql_real_escape_ ...

  7. oracle之 redo过高诊断

    一.诊断过度redo 要找到生成大量重做的会话,您可以使用以下任何一种方法.这两种方法都检查生成的撤销量.当一个事务生成撤销,它将自动生成重做. 当需要检查生成大量的程序时,使用第一个查询.当这些程序 ...

  8. php比较全的友好时间显示

    分享一个php友好的比较完成的时间格式化函数,包括‘刚刚’,'几秒之前',‘几分钟前’,'几小时前',几天前,几周前,几个月前等.调用方式很简单,是从ThinkSNS 里面拿出来的. /** * 友好 ...

  9. 开启postgresql的远程权限

    cd /etc/postxxxx/版本号/main vim postgresql.conf 修改 #listen_addresses ='localhost'为 listen_addresses =' ...

  10. java 网络编程TCP

    客户端 服务端