## 關聯查詢
> * 交叉連接( cross join )
> * 自然連接( natural join )
> * 內連接( inner join )可簡寫為:join
> * 外連接( left join / right join );left outer join 簡寫為:left join
> * 聯合查詢( union / union all)
> * 全連接( full join );mysql 不支持全連接
> mysql對任何關聯都執行嵌套循環關聯操作,考慮性能影響
**交叉連接**
```
select * from a,b(,c) 或者
select * from a cross join b (cross join c)
```
* 沒有任何關聯條件,結果是笛卡爾積,結果集會很大,沒有意義,很少使用
**自然連接**
```
select * from a natural join b
```
* **自然連接是一種特殊的等值連接**,他要求兩個關系表中進行連接的必須是相同的屬性列(名字相同),無須添加連接條件,**并且在結果中消除重復的屬性列。**
**內連接**
```
select * from a,b wher a.id = b.id 或者
select * from a inner join b on a.id = b.id
```
* 多表中同時符合某種條件的數據記錄的集合
* 等值連接:on a.id = b.id
* 不等值連接:on a.id > b.id
* 自連接: `select * from a t1 inner join a t2 on t1.id = t2.pid`
**外連接**
```
select * from a left join b on a.id = b.id
```
* 左外連接:left join, 以左表為主,先查詢出左表,按照 on 后的關聯條件匹配右表,沒有匹配到用 `null` 填充
* 右外連接:right join, 以右表為主,先查詢出右表,按照 on 后的關聯條件匹配左表,沒有匹配到用 `null` 填充
**聯合查詢**
```
select * from a union select * from b
```
* 把多個結果集集中在一起,`union 前`的結果為基準,需注意聯合查詢的列數要相等,相同的記錄行會合并
* 使用 `union all` 不會合并重復的記錄行
**全連接**
```
select * from a left join b on a.id = b.id union
select * from a right join b on a.id = b.id
```
* mysql 不支持全連接,通過 `left join` 和 `union` 和 `right join` 聯合使用 實現
**嵌套查詢**
用一條sql語句的結果作為另外一條sql語句的條件
`select * from a where id in (select id from b)`
- 簡介
- PHP
- 字符串函數
- 數組函數
- 正則
- 加密函數
- 面向對象
- 關鍵字
- 設計模式
- 魔術方法
- 機制擴展
- 會話機制
- PHP框架
- laravel
- 問題
- swoole
- easyswoole
- workerman
- 數據庫
- Sphinx
- MongoDB
- MemCache
- Redis
- 基礎操作
- 數據類型
- 持久化
- 分布式鎖
- 內存模型
- redis高級特性
- MySql
- 基礎操作
- 數據類型
- 數據表引擎
- 鎖機制
- 事務處理
- 存儲過程
- 觸發器
- 索引
- 關聯查詢
- 分析SQL語句-優化查詢
- 分區分表
- 主從復制
- MySql安全性
- 網絡協議
- HTTP
- header詳解
- 狀態碼
- nginx-配置
- 邏輯算法
- 時間和空間復雜度
- 常見算法
- 數據結構
- 核心
- 進程、線程、協程
- 存儲容量-計量單位
- 開發軟件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自動化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB測試
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并發及大流量相關概念
- 網站優化
- WEB
- Electron