資料庫多表鏈結

2021-06-27 21:18:01 字數 2815 閱讀 4141

unity學習筆記

多表聯合查詢

定義:聯合查詢(連線查詢)的表中需要有資料型別和長度都相同的屬性,稱為「連線屬性」,實現查詢的時候需要兩個資料表的連線屬性相同。

比如兩個表:學生(學號,姓名,年齡)和學習(學號,課程號,成績),實現連線查詢的語句為:

select 學生.學號,姓名,年齡,課程號,成績

from 學生,學習

where 學生.學號=學習.學號;

連線查詢分類:

1.自連線查詢,對同乙個表進行連線操作

2.內連線查詢,《又分為:自然連線,等值連線,不等值連線三種》

3.外連線查詢,《又分為:左外連線,右外連線,全外連線三種》

4.交叉連線查詢,也稱為 無條件查詢。

5.聯合查詢

(一)  自連線查詢

乙個表 自己 與 自己 建立 連線 稱為自連線或自身連線。

進行自連線就如同兩個分開的表 一樣,可以把乙個表的某一行與同一表中的另一行連線起來。

(二) 內連線(inner join)

內連線是最常用的一種連線方式,它只返回兩個資料集合之間 匹配關係的 那些行。將位於兩個相互交叉的資料集合中重疊部分以內 的那些資料行  連線起來.

內連線(inner join)使用比較運算子進行表間某(些)列資料的比較操作,並列出這些表中與連線條件相匹配的資料行。

根據所使用的比較方式不同,內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。

語法: select 欄位名列表 from 表名 [inner] join 表名 on 連線條件 [where 條件表示式]

內連線分三種:

1、等值連線:

所謂等值連線,是指表之間通過「等於」關係連線起來,產生乙個臨時表,然後對該臨時表進行處理後生成最終結果。其查詢結果中列出被連線表中的所有列,包括其中的重複列。

2、不等值連線

是指表之間的連線關係不是「等於」,而是其它關係。這些運算子包括》、>=、<=、<、!>、!《和<>。

3、自然連線:

在等值連線中消除重複列就是自然連線。

(三)外連線(outer join):

與內連線不同的是,外連線不只列出與連線條件相匹配的行,而是列出左表(左外連線時)、右表(右外連線時)或兩個表(全外連線時)中所有符合搜尋條件的資料行。

外連線是對內連線的擴充,除了將兩個資料集合中重疊部分以內的那些資料行連線起來之外,還可以根據要求返回左側或右側資料集合中非匹配的資料或全部的資料.即 左外連線(left outer join);右外連線(right outer join);全部連線(full outer join).

外連線語法:

select 欄位名列表 from 表名 left|right|full [outer] join 表名 on 連線條件

外連線分為:

1。左外連線(left outer join或left join):

在結果表中包含第乙個表中滿足條件的所有記錄。

如果是在連線條件上匹配的記錄,則第二個表返回相應值,否則第二個表返回空值。

2。右外連線(right outer join或right join):

在結果表中包含第二個表中滿足條件的所有記錄。

如果是在連線條件上匹配的記錄,則第乙個表返回相應值,否則第乙個表返回空值。

3。全外連線(full outer join或full join):

在結果表中包含兩個表中滿足條件的所有記錄。

如果是在連線條件上匹配的元組,則另乙個表返回相應值,否則另乙個表返回空值。

(四)交叉連線:

交叉連線不使用任何連線條件來限制結果集合,將各表的記錄以「笛卡爾」積的方式組合起來,是分別使用兩個資料來源中的行以所有可能的方式進行組合,即資料集中的每一行都要與另一表每一行組成乙個新的行.

(五)聯合查詢

union運算子可以將兩個或兩個以上上select語句的查詢結果集合合併成乙個結果集合顯示,即執行聯合查詢。

//將使用者表和訂單表進行多表查詢

arraylist list2 = new arraylist();

public arraylist show()

link.close(con, reader);

return list2;}

然後在類中呼叫就可以實現多表鏈結

資料庫兩表鏈結

現在有兩個表,學生表 記錄了學生的基本資訊,有 學號 姓名 成績 表記錄了學生選修的課程,以及對應課程的成績。這兩個表通過 學號 進行關聯。現在要查詢出所有學生的學號,姓名,課程和成績。解題思路 1.確定查詢結果 題目要求查詢所有學生的姓名,學號,課程和成績資訊 select 學號,姓名,課程,成績...

多表鏈結查詢語句

多表查詢常涉及到到表連線的問題,主要涉及到內連線 inner join 外連線 left join or left outer join right join or right outer join full join 和交叉連線 cross join inner join 也叫等值鏈結。內連線具有...

mysql 多表鏈結查詢

我要做乙個按銷售數量排序的查詢sql操作,現在有如下3個表,要求獲取d product表中的所有資料 包括沒有銷售記錄的資料 以及d item表中的銷售數量 product num欄位的值 查詢條件是d category表的id,按d item表中的銷售數量 product num欄位的值 請問這樣...