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查詢語句集MySql
- MySQL之連線查詢和子查詢MySql
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- mysql高階查詢語句MySql
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- MySQL的簡單查詢語句MySql
- mysql dba常用的查詢語句MySql
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- MySQL學習-連線查詢MySql
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- 請教一個mysql查詢語句!!MySql
- mysql查詢效率慢的SQL語句MySql
- 連線查詢
- SQL mother查詢語句SQL
- sql查詢語句流程SQL
- SQL查詢語句 (Oracle)SQLOracle
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- MySQL語句第二高的薪水查詢MySql
- 在mysql查詢效率慢的SQL語句MySql
- Mysql 獲取表設計查詢語句MySql
- MySQL講義第27講——select 查詢之自連線查詢MySql
- PostgreSQL 原始碼解讀(20)- 查詢語句#5(查詢樹Query詳解)SQL原始碼
- Mybatis連線池_動態sql語句_多表查詢實現MyBatisSQL
- oracle 連線查詢Oracle
- SQL連線查詢SQL
- oracle查詢語句查詢增加一列內容Oracle
- MySQL中用通用查詢日誌找出查詢次數最多的語句的教程MySql
- MySQL 連線查詢超全詳解MySql
- PHP連線、查詢MySQL資料庫PHPMySql資料庫
- sql 連線查詢例項(left join)三表連線查詢SQL
- 多表查詢建表語句
- Laravel 子查詢語句用法Laravel
- 資料庫查詢語句資料庫
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- mysql查詢語句陣列下標擷取MySql陣列