[连接](http://www.kancloud.cn/aakng/mysql/211262)
[TOC=1,3]
很多操作都是在两个表中操作的,比如之前的子查询和联合,连接也是多表操作,是用来连接多个表。
1、外连接
外连接就是用一个表做基表,另个表为附表,然后根据匹配条件来显示附表内容。通常分为:
① 左(外)连接
用左边表当标准,所以左表全部显示,右表部分显示,右表找不到匹配的用 NULL 补齐。
select * from aa left (outer) join bb on bb.id = aa.id;
ps:on 与 where 的区别:
on 出现顺序在 where 前面,作用也不同,on 是为连接提供一个准则,而 where 用于筛选结果集。
on 条件还可以用一些比较运算符。
② 右(外)连接
和左连接一样。
③ 全(外)连接
全连接相当于是把左连接和右连接结果集联合起来,mysql 并不支持全连接,可以通过这种方式来得到类似的效果。
select * from aa full join bb;
2、内连接
使用 inner join 来表示,内连接是最均衡的连接,他可以用一个 on 条件来指定构造该连接的条件。
内连接使用等号的情况是最多而且最普遍的,mysql 提供了一个简化的操作语法,把 on 子句换成 using(字段名) 即可。比如:
select * from aa inner join bb using(id); #就是把 aa 和 bb 中 id 相等的行合并为一行,然后放入结果集中。
ps:
如果内连接不指定任何条件,就会变成交叉连接。
内连接分为三类:
① 等值连接
在 on 子句中使用等号来进行连接,使用情况比较多。
② 不等连接
在 on 子句中不使用等号来进行连接。
③ 自然连接
它是一种特殊的等值连接,在结果集中会把重复的属性列去掉,使用 natural join 时,无需指定连接时的一些操作,因为这些都是自然进行的;
使用 using 和自然连接的效果是一样的。
3、交叉连接
交叉连接就是表与表进行笛卡尔乘积,使用 cross join,也可以什么都不用,直接用,分割。
他可以用于多个表,当结果集数据量较大的时候,使用 where 来筛选结果集。
select * from aa cross join bb;
select * from aa,bb,cc;
ps:
在使用,的时候,不能用 on 条件来限定连接。
4、自连接
自己和自己连接,相当于把一张表当两张表来使用。在本表中找一些信息,不实用连接又很难找到(不考虑子查询情况下)时用自连接;
在 on 子句中使用等号来进行连接。
- 数据库
- CAP定理
- 关系模型
- 关系数据库
- NoSQL
- ODBC
- JDBC
- ODBC、JDBC和四种驱动类型
- mysql
- 安装与配置
- CentOS 7 安装 MySQL
- 优化
- 比较全面的MySQL优化参考
- 1、硬件层相关优化
- 1.1、CPU相关
- 1.2、磁盘I/O相关
- 2、系统层相关优化
- 2.1、文件系统层优化
- 2.2、其他内核参数优化
- 3、MySQL层相关优化
- 3.1、关于版本选择
- 3.2、关于最重要的参数选项调整建议
- 3.3、关于Schema设计规范及SQL使用建议
- 3.4、其他建议
- 后记
- Mysql设计与优化专题
- ER图,数据建模与数据字典
- 数据中设计中的范式与反范式
- 字段类型与合理的选择字段类型
- 表的垂直拆分和水平拆分
- 详解慢查询
- mysql的最佳索引攻略
- 高手详解SQL性能优化十条经验
- 优化SQL查询:如何写出高性能SQL语句
- MySQL索引原理及慢查询优化
- 数据库SQL优化大总结之 百万级数据库优化方案
- 数据库性能优化之SQL语句优化1
- 【重磅干货】看了此文,Oracle SQL优化文章不必再看!
- MySQL 对于千万级的大表要怎么优化?
- MySQL 数据库设计总结
- MYSQL性能优化的最佳20+条经验
- 数据操作
- 数据语句操作类型
- DCL
- 修改Mysql数据库名的5种方法
- DML
- 连接
- 连接2
- DDL
- 数据类型
- 字符集
- 表引擎
- 索引
- MySQL理解索引、添加索引的原则
- mysql建索引的几大原则
- 浅谈mysql的索引设计原则以及常见索引的区别
- 常用工具简介
- QA
- MySQL主机127.0.0.1与localhost区别总结
- 视图(view)
- 触发器
- 自定义函数和存储过程的使用
- 事务(transaction)
- 范式与反范式
- 常用函数
- MySQL 数据类型 详解
- Mysql数据库常用分库和分表方式
- 隔离级别
- 五分钟搞清楚MySQL事务隔离级别
- mysql隔离级别及事务传播
- 事务隔离级别和脏读的快速入门
- 数据库引擎中的隔离级别
- 事务隔离级别
- Innodb中的事务隔离级别和锁的关系
- MySQL 四种事务隔离级的说明
- Innodb锁机制:Next-Key Lock 浅谈
- SQL函数和存储过程的区别
- mongo
- MongoDB设置访问权限、设置用户
- redis
- ORM
- mybatis
- $ vs #
- mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
- 电商设计
- B2C电子商务系统研发——概述篇
- B2C电子商务系统研发——商品数据模型设计
- B2C电子商务系统研发——商品模块E-R图建模
- B2C电子商务系统研发——商品SKU分析和设计(一)
- B2C电子商务系统研发——商品SKU分析和设计(二)
- 数据库命名规范--通用