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