SQL中的多表關聯查詢 笛卡爾積 內連線 外連線

2021-10-11 18:53:30 字數 1737 閱讀 6104

笛卡爾乘積是指在數學中,兩個集合x和y的笛卡爾積(cartesian product),又稱直積,表示為x × y,第乙個物件是x的成員而第二個物件是y的所有可能有序對的其中乙個成員。

笛卡爾積由笛卡爾提出。又稱笛卡爾乘積。

簡單概括:舉例說明

集合x=,集合y=;兩個集合的笛卡爾積為.

他們的結果為x集合的成員個數✖y集合成員個數。

通常我們做多表關聯查詢時,很容易就會查出笛卡爾積的結果。

例如stu表和dept表:

dept表

emp表

笛卡爾積查詢

select * from dept,emp;
結果顯示

此圖為笛卡爾積現象,對dept表有5種選擇,對emp表有5種選擇,所以笛卡爾積的結果查詢顯示25條。

內連線查詢:結果集為左邊表和右邊表都能找到對應記錄的記錄

查詢結果集:左邊表全部顯示,對應右邊表沒有的記錄顯示null

查詢結果集:右邊表全部顯示,對應左邊表沒有記錄的顯示null

查詢結果集:在內連線的基礎上增加左邊表有而右邊表沒有的記錄和右邊表有而左表表沒有的記錄

1.原查詢語句:(mysql不支援全外連線)

select * from dept full join emp on dept.id=emp.dept_id;
2.mysql模擬全外連線查詢:(使用union關鍵字)

參考連線:

sql中的笛卡爾積

我們對資料庫表進行操作時,經常會對多張表進行關聯,多表連線查詢大家肯定不會陌生,但是一不小心很容易出來龐大冗餘的資料。笛卡爾積是指在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y,第乙個物件是x的成員而第二個物件是y的所有可能有序對的其中乙個成員。笛卡爾...

SQL多表關聯查詢

關於 有時候,我們查詢資料時,會採用多資料庫關聯查詢的方式。資料庫通過連線兩張表或多張表查詢時,會生成一張臨時的中間表,然後返回給使用者的就是這張臨時表的資料。那麼具體怎麼操作呢?我們可以採用left join,搭配on where來實現。具體備註 1.on條件是在生成臨時表時使用的條件,它不管on...

Mysql資料庫多表聯查出現笛卡爾積問題

以上兩位大佬說明什麼是笛卡爾積及其解決辦法,我遇到的情況是這樣的 sql語句 select from a inner join b on a.id b.id 這樣看確實沒問題,但是查詢之後還是不行,後發現,a表和b表的字段資料型別不一致!我的a表id為varchar b表id為int,查詢後b表in...