詳述資料庫多表查詢

2021-09-26 07:43:41 字數 2160 閱讀 1256

多個表關聯查詢需要依據多表之間列關係將其連線起來,這種連線方式分為三種:內連線(inner join)、外連線(outer join)及交叉連線(cross join)

建立以下兩個**:

內連線(inner join)

如果依據多個表之間列關係進行內連線,查詢結果集僅包括滿足連線條件的資料行。內連線分為等值連線、不等值連線以及自然連線,其中等值連線最為常見。

等值連線:在連線條件中使用等號(=)運算子比較被連線列的列值是否相等,分顯式等值連線和隱式等值連線:

1.顯式等值連線:              

select ui.*,addr.* from user_info ui [inner] join address addr on ui.id = addr.user_id;

2.隱式等值連線:

select ui.*,addr.* from user_info ui,address addr where ui.id = addr.user_id;

上面sql語句執行結果:

外連線(outer join)

如果依據多表之間列關係進行外連線,查詢結果集不僅僅包括滿足on連線條件的資料行,還包括不滿足on連線條件的資料行。

左外連線(left [outer] join):返回的結果集中不僅包含表之間滿足on連線條件的全部資料行,還包含左表(「left [outer] join」關鍵字左邊的表)不滿足on連線條件的資料行;      

右外連線(right [outer] join):返回的結果集中不僅包含表之間滿足on連線條件的全部資料行,還包含右表(即「right [outer] join」關鍵字右邊的表)不滿足on連線條件的資料行;      

【以left或right為參照,如果是left,則顯示該關鍵字左邊表中所有資料,如果從表沒有對應的資料,則顯示null;同樣,如果是right,則顯示該關鍵字右邊表中所有資料,如果從表沒有對應的資料,則顯示null】

全外連線(full [outer] join):

返回的結果集中不僅包含表之間滿足on連線條件的全部資料行,還包含左表(「full [outer] join」關鍵字左邊的表)和右表(「full [outer join」關鍵字右邊的表)中不滿足on連線條件的資料行;

【mysql資料庫不支援全外連線!】

交叉連線(cross join)(了解)

左表(「cross join」關鍵字左邊的表)中的每一行與右表(「cross join」關鍵字右邊的表)中的所有行組合,交叉聯接的結果是乙個笛卡爾積。      

(好像沒有實際意義)

多表查詢資料庫

在專案中建立資料庫的時候,我們經常會進行多表查詢。資料庫中建立乙個表應該與乙個實體類相對應。乙個實體物件應該與一條記錄相對應。資料庫是一種結構化的查詢語言,資料庫語言是非過程化的,寫一句就可以執行一句。進行建表的時候,如果是一對多的關係,應該在多的一方建立乙個字段。該字段為少的一方的id。進行建表的...

資料庫多表查詢

笛卡爾積 select from emp,dept select from emp cross join dept 內連線 inner join 內連線把兩個表連線成乙個表 稱為第三個表 在這個表中僅包含那些滿足連線條件的記錄行 select from emp,dept where emp.dept...

資料庫多表查詢 子查詢

子查詢 查詢中巢狀查詢,稱巢狀巢狀查詢為子查詢 下面要使用的表如下,放在此處便於更好地理解 emp 員工資訊表 dept 部門表 例 查詢公司員工工資最高的員工資訊 首先要得到公司員工的最高工資的值 select max salary from emp 假設查詢結果為10000然後根據上一句sql語...