MySQL開發技巧 如何正確使用Join語句

2021-07-04 07:12:43 字數 2249 閱讀 9934



sql語言相信學過資料庫的人都會使用,但是能正確使用sql的人卻相對不多。正確使用sql很重要嗎?當然,下面我就列出了正確使用sql語句的幾個好處

這篇文章,我將先介紹如何正確的使用join從句

舉例中使用的表如下:西天取經四人組 vs 悟空的朋友們

首先,我們來看看sql標準中join的型別

內連線(inner)

全外連線(full outer)

左外連線(left outer)

右外連線(right outer)

交叉連線(cross)

我們首先根據上面的兩張表,來介紹這五種join型別的使用場景

join操作的型別——inner join

內連線inner join基於連線謂詞將兩張表(如a和b)的列組合在一起,產生新的結果表。

我們寫出查詢語句如下:select a.user_name,a.id.b.id from t1 a inner join t2 b on a.user_name=b.username;連線謂詞是 user_name。

由查詢結果可以看出:我們得到的是兩張表的公共部分。

join操作的型別——left outer join

舉個例子:我們要查詢取經四人組中哪些人不是悟空的結拜兄弟?

查詢語句:select a.user_name,a.id,b.id from t1 a left join t2 b on a.user_name=b.user_name where b.username is null;

join操作的型別——right outer join

舉個例子:我們要查詢悟空的結拜兄弟中哪些人沒有去取經?

查詢語句:select b.user_name,b.id,a.id from t1 a right join t2 b on a.user_name=b.user_name where a.user_name is null;

join操作的型別——full join

mysql中預設是不能使用全連線型別的,如果使用,則會報錯。

那麼問題就來了:full join的問題該如何解決呢?我們可以用union all操作來間接使用full join。

查詢語句:select a.user_name,a.id,b.id from t1 a left join t2 b on a.user_name=b.user_name union all select b.user_name,b.id,a.id from t1 a right join t2 b on a.user_name=b.user_name;

join操作的型別——cross join

交叉連線,又稱笛卡爾連線(cartesian join)或叉乘(product),如果a和b是兩個集合,它們的交叉連線就記為:a x b。

查詢語句:select a.user_name,a.id,b.user_name,b.id from t1 a cross join t2 b;

如何理解並正確使用MySQL索引

1 概述 索引是儲存引擎用於快速查詢記錄的一種資料結構,通過合理的使用資料庫索引可以大大提高系統的訪問效能,接下來主要介紹在mysql資料庫中索引型別,以及如何建立出更加合理且高效的索引技巧。注 這裡主要針對的是innodb儲存引擎的b tree索引資料結構 2 索引的優點 1 大大減輕了伺服器需要...

如何正確安裝Mysql

安裝步驟 第一步解壓檔案 位置為你想要安裝的碟符 第二步載入環境變數載入的是bin目錄 第三步初始化 在cmd終端中輸入 mysqld initialize insecure 以上三步已經可以完成簡單的互動了 在命令框中輸入mysqld就可以開啟服務端 在另乙個cmd中輸入mysql uroot p...

MYSQL開發技巧

a表取經四人組 b表悟空的兄弟 1.join操作的型別 inner join 內連線inner join 基於連線謂詞將兩張表 如a和b 的列組合在一起,產生新的結果表。產生的結果集如 圖一 紅色區域 例如 同時存在與取經四人組中的和悟空的兄弟表中的記錄為 2.join操作的型別 left oute...