术语解释:
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 |
+----+-------+----+----------+------+
        |
        |
        |
        |
        |
        |
       |
       |
       |
+----+-------+----+----------+------+

最新文章

  1. WebStorm 8 注册码
  2. MFC 文件按行读写 CStdioFile
  3. Codeforces Round #117 (Div. 2)
  4. Python函数中参数* 和 ** 的区别
  5. AE 先进的视频画面 快速释放 慢动作
  6. 不同版本(2.3,2.4,2.5) web.xml 的web-app头信息
  7. SpringCloud Feign使用详解
  8. bat给文件追加换行内容
  9. js创建并下载文件
  10. 最简单的TTcpServer与TTcpClient通信实例-Delphi
  11. BroadcastReceiver(广播)的静态注册和动态注册 --Android开发
  12. Python正则表达式 学习笔记
  13. go-restful 实现一个web server
  14. javascript:void(0) 真正含义
  15. xargs -i 和-I 的区别【转】
  16. RHEL内核源码编译
  17. Tomcat从零开始(十七)——StandardWrapper
  18. mysql sequelize 聚合
  19. 关于highchts X时间轴比设置时间相差好几个小时的解决
  20. wxPython学习笔记1

热门文章

  1. 如何用移动硬盘安装win7 系统
  2. php-fpm简介
  3. CTF之ROT加解密
  4. JQ和JS获取span标签的内容(有的情况下JQ达不到预期的目的就用JS)
  5. http协议详谈
  6. LeetCode Single Number I II Python
  7. Java中File常用的方法汇总
  8. 如何安装Genymotion模拟器
  9. window.open 和 location.href 区别
  10. MyBatis 知识点