mysql查詢語句5:連線查詢
說明:連線查詢又稱多表查詢,當查詢語句涉及到的欄位來自於多個表時,就會用到連線查詢。
笛卡爾乘積現象:表1 有m行,表2有n行,結果=m*n行
發生原因:沒有有效的連線條件
如何避免:新增有效的連線條件
分類:
按年代分類:
1.sql92標準:僅僅支援內連線
內連線:等值連線/非等值連線/自連線
2.sql99標準【推薦】:支援內連線+外連線(左外和右外)+交叉連線
按功能分類:
內連線:等值連線/非等值連線/自連線
外連線:左外連線/右外連線/全外連線
交叉連線
SQL92標準:
1.內連線:
語法:
select 查詢列表
from 表1 別名,表2 別名
where 連線條件
and 篩選條件
group by 分組列表
having 分組後篩選
order by 排序列表
執行順序:
①from子句
② where子句
③ and子句
④ group by子句
⑤ having子句
⑥ select子句
⑦ order by子句
等值連線:
語法:
select 查詢列表
from 表1 別名,表2 別名
where 等值連線的連線條件
特點:
①為了解決多表中的欄位名重名問題,一般需要為表起別名,提高語義性。
②多表的順序沒有要求。
③多表等值連線的結果為多表的交集部分。
④n表連線,至少需要n-1個連線條件。
⑤可以搭配前面介紹的所有子句使用,比如排序、分組、篩選。
SQL99標準:
一. 內連線
語法:
SELECT 查詢列表
FROM 表名1 別名
(INNER) JOIN 表名2 別名
ON 連線條件
WHERE 篩選條件
GROUP BY 分組列表
HAVING 分組後篩選
ORDER BY 排序列表;
SQL92和SQL99的區別:
SQL99使用JOIN關鍵字代替了之前的逗號,並且將連線條件和篩選條件進行了分離,提高閱讀性。
二. 外連線(左連線/右連線/全外連線)
查詢結果為主表中所有的記錄,如果從表有匹配項,則顯示匹配項;如果從表沒有匹配項,顯示null。
應用場景:一般用於查詢主表中有但從表沒有的記錄。
特點:
- 外連線分主從表,兩表的順序不能任意替換。
- 左連線:join左邊為主表。
右連線:join右邊為主表
語法:
select 查詢列表
from 表1 別名
left/right/full (outer) join 表2 別名
on 連線條件
where 篩選條件
相關文章
- MySQL內連線查詢語句MySql
- [Mysql 查詢語句]——查詢欄位MySql
- mysql查詢語句MySql
- [Mysql 查詢語句]——分組查詢group byMySql
- [Mysql 查詢語句]——查詢指定記錄MySql
- mysql查詢語句集MySql
- MySQL查詢阻塞語句MySql
- Mysql之查詢語句MySql
- MySQL之連線查詢和子查詢MySql
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- MySQL之連線查詢MySql
- mysql高階查詢語句MySql
- MySQL基礎查詢語句MySql
- MySQL學習-連線查詢MySql
- MySQL8:連線查詢MySql
- MySQL的簡單查詢語句MySql
- mysql dba常用的查詢語句MySql
- [Mysql 查詢語句]——集合函式MySql函式
- mysql查詢語句優化工具MySql優化
- mysql 查詢建表語句sqlMySql
- linux下開啟mysql慢查詢,分析查詢語句LinuxMySql
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- Hql查詢語句
- 連線查詢
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- mysql查詢效率慢的SQL語句MySql
- 請教一個mysql查詢語句!!MySql
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- select查詢之四:連線查詢
- [Mysql 查詢語句]——對查詢結果進一步的操作MySql
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- Elasticsearch查詢語句語法Elasticsearch
- SQL查詢語句 (Oracle)SQLOracle
- SQL server 查詢語句SQLServer
- Hibernate 查詢語句
- oracle查詢語句大全Oracle
- sql查詢語句流程SQL