達夢資料庫基礎多表連線查詢

2021-10-13 19:15:49 字數 2569 閱讀 6484

對連線的兩張表記錄做笛卡爾集,產生最終結果輸出,即可有過濾條件也可以沒有。

示例:查詢使用者的姓名和密碼

本例中的查詢資料必須來自 i_basic 和 i_user 兩個表。因此,應在 from 子句中給出這兩個表的表名(為了簡化採用了別名),在 where 子句中給出連線條件(即要求兩個表中 phone 的列值相等)。當參加連線的表**現相同列名時,為了避免混淆,可在這些列名前加表名字首。

該例的查詢結果是 i_basic 和 i_user 在 phone 列上做等值連線產生的。條件「b.phone=u.phone」稱為連線條件或連線謂詞。當連線運算子為「=」號時,稱為等值連線,使用其它運算子則稱非等值連線。

說明:連線謂詞中的列型別必須是可比較的,但不一定要相同,只要可以隱式轉換即可;

不要求連線謂詞中的列同名;

連線謂詞中的比較操作符可以是》、>=、;

where 子句中可同時包含連線條件和其它非連線條件。

根據連線條件,結果集僅包含滿足全部連線條件的記錄,我們稱這樣的連線為內連線。

示例:從i_category和i_goods中查詢商品的類別名稱和商品名稱

(內容為隨機生成,並不準確)

外連線對結果集進行了擴充套件,會返回一張表的所有記錄,對於另一張表無法匹配的字段用 null 填充返回。dm 資料庫支援三種方式的外連線:左外連線、右外連線、全外連線。

外連線中常用到的術語:左表、右表。根據表所在外連線中的位置來確定,位於左側的表,稱為左表;位於右側的表,稱為右表。例如 select * from t1 left join t2 on t1.c1=t2.d1,t1 表為左表,t2 表為右表。

返回所有記錄的表根據外連線的方式而定。

左外連線:返回左表所有記錄;

右外連線:返回右表所有記錄;

全外連線:返回兩張表所有記錄。處理過程為分別對兩張表進行左外連線和右外連線,然後合併結果集。

在左外連線和右外連線中,如果需要對未能匹配的缺失資料進行填充,可以使用分割槽外連線(partition outer join),分割槽外連線通常用於處理稀疏資料以得到分析報表。

示例:從dmhr_city、dmhr_region 中查詢城市的所有名稱和

所屬地區名稱,包括沒有地區的城市。

示例:從dmhr_city、dmhr_region 中查詢城市的所有名稱和

所屬地區名稱,包括沒有城市的地區。

select c.city_name, r.region_name

from dmhr.city c right outer join dmhr.region r

on c.region_id = r.region_id;

所屬地區名稱。

外連線還有一種寫法,在連線條件或 where 條件中,在列後面增加(+)指示左外連線或者右外連線。如果表 a 和表 b 連線,連線條件或者 where 條件中,a 的列帶有(+)字尾,則認為是 b left join a。如果使用者的(+)指示引起了外連線環,則報錯。

達夢資料庫是乙個國產資料庫,本文所介紹的只是其中一些基本的多表聯查的方式,還有一些其他的方法沒有介紹,需要進一步去學習。對達夢的學習讓我更深入了國產的資料庫,發現國產資料庫也很出色,學習達夢能更好的有助於國產軟體的發展,加油!!!

達夢資料庫查詢多表聯查

小結 select 列名列表 from 表 1,表 2 where 兩表關聯列條件表示式 select 列名列表 from 表 1 inner join on 兩表關聯列條件表示式 外連線可分為 左連線 右連線 完全外連線。左外連線 左外連線包含left join左表所有行,如果左表中某行在右表沒有...

資料庫多表連線查詢

一 多表查詢 多表查詢,又稱表聯合查詢,即一條sql語句涉及到的表有多張,資料通過特定的連線進行聯合顯示。1 笛卡爾積 在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y.假設集合a 集合b 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查...

使用odbc連線達夢資料庫

下面是具體步驟 輸出內容已省略 odbc驅動編譯 root loaclhost tar xvf unixodbc 2.3.1.tar.gz root loaclhost cd unixodbc 2.3.1 root loaclhost unixodbc 2.3.0 configure root lo...