sql連線查詢基礎概念

2021-09-28 13:49:46 字數 2548 閱讀 1828

交叉連線即笛卡爾積,是指兩個關係中所有元祖的任意組合。一般情況下,交叉查詢是沒有實際意義的。

select * from student cross join course
1、等值連線(列出被連線表中的所有列,包括其中的重複列。連線條件中的運算子為=。這種查詢方式形成的中間表為兩個表的笛卡爾積,有inner join的連線查詢稱為顯示的內連線形成的中間表為兩個表經過on條件過濾後的笛卡爾積。)

select * from student,sc where student.sno=sc.sno;
2、不等連線:在連線條件使用除等於運算子以外的其它比較運算子比較被連線的列的列值。這些運算子包括》、>=、<=、<、!>、!《和<>。

3、自然連線(在等值連線中去除重複的屬性列。)

select student.sno,sname,cno,grade from student,sc where student.sno=sc.sno;
如果在乙個連線查詢中,涉及到的兩個表都是同乙個表,這種查詢就稱為自連線查詢。同一張表在from字句中多次出現,為了區別該錶的每一次出現,需要為表定義乙個別名。自連線是一種特殊的內連線

select e1.employename from employe e1,employe e2 where e1.employeid = e2.leaderid
這部分很熟了,跳過詳細介紹。

1左外連線(leftouter join

2、右外連線(rightouterjoin

3、全外連線(full outer join

1、等值連線:2個表會先進行笛卡爾乘積運算(select * from table1,table2),生成乙個新**,佔據在電腦記憶體裡,當表的資料量很大時很耗記憶體,這種方法效率比較低,盡量不用。

2、內連線:2個表根據共同id進行逐條匹配,不會出現笛卡爾乘積的現象,效率比較高,優先使用這種方法。

1、sql查詢的基本原理:兩種情況介紹。

第一、單錶查詢:根據where條件過濾表中的記錄,形成中間表(這個中間表對使用者是不可見的);然後根據select的選擇列選擇相應的列進行返回最終結果。

第二、兩表連線查詢:對兩表求積(笛卡爾積)並用on條件和連線連線型別進行過濾形成中間表;然後根據where條件過濾中間表的記錄,並根據select指定的列返回查詢結果。

第三、多表連線查詢:先對第乙個和第二個表按照兩表連線做查詢,然後用查詢結果和第三個表做連線查詢,以此類推,直到所有的表都連線上為止,最終形成乙個中間的結果表,然後根據where條件過濾中間表的記錄,並根據select指定的列返回查詢結果。

2、on後面的條件(on條件)和where條件的區別:

on條件:是過濾兩個鏈結表笛卡爾積形成中間表的約束條件。

where條件:在有on條件的select語句中是過濾中間表的約束條件。在沒有on的單錶查詢中,是限制物理表或者中間查詢結果返回記錄的約束。在兩表或多表連線中是限制連線形成最終中間表的返回結果的約束。從這裡可以看出,將where條件移入on後面是不恰當的。推薦的做法是:on只進行連線操作,where只過濾中間表的記錄。

3、union

union 操作符用於合併兩個或多個 select 語句的結果集。union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時每條 select 語句中的列的順序必須相同。union all 命令和 union 命令幾乎是等效的,不過 union all 命令會列出所有的值。

八、總結

連線查詢是sql查詢的核心,連線查詢的連線型別選擇依據實際需求。如果選擇不當,非但不能提高查詢效率,反而會帶來一些邏輯錯誤或者效能低下。下面總結一下兩表連線查詢選擇方式的依據:

1、 查兩表關聯列相等的資料用內連線。

2、 col_l是col_r的子集時用右外連線。

3、 col_r是col_l的子集時用左外連線。

4、 col_r和col_l彼此有交集但彼此互不為子集時候用全外。

5、 求差操作的時候用聯合查詢。

多個表查詢的時候,這些不同的連線型別可以寫到一塊。例如:

select t1.c1,t2.cx,t3.cy

from tab1 t1

inner join tab2 t2 on (t1.c1=t2.c2)

inner join tab3 t3 on (t1.c1=t2.c3)

left outer join tab4 on(t2.c2=t3.c3);

where t1.x >t3.y;

sql基礎 sql連線查詢

這兩天在專案中寫連線查詢的時候突然回憶了一下各種連線查詢的語法 結果等,發現自己出了經常用的left join on 和等值連線以外其他的都不是很確定,於是乎就看看了相關的資料便有了這篇博文。sql 92標準所定義的from子句的連線語法格式為 fromjoin tablejoin typejoin...

SQL基礎 查詢資料 連線查詢

連線查詢時另一種型別的多表查詢 簡單地來說,就是先確定乙個主表作為結果集,然後,把其他表的行有選擇性地 連線 在主表結果集上 例項 選出students表的所有學生資訊 select s.id,s.name,s.class id,s.gender,s.score from students s 查詢...

SQL語句基礎之連線查詢

介紹sql連線多表進行查詢,包括對inner join left join right join等的基礎使用 例項用以下兩張表進行演示 student表結構如下圖 teacher表結果如下圖 兩張表以id為主外來鍵關係進行關聯 作用 inner join 關鍵字在表中存在至少乙個匹配時返回行,使用i...