SQL連表查詢筆記二

2021-08-22 13:34:36 字數 2190 閱讀 7302

兩張表:學生表(t_student)和班級表(t_class)。

內連線(inner join)1.等值連線:在連線條件中使用等號(=)運算子,其查詢結果中列出被連線表中的所有列,其中包括重複列。

select * from t_student s,t_class c where s.classid=c.classid

select * from t_student s inner join t_classid on s.classid=c.classid

結果是:

2.不等連線:在連線條件中使用除等於號之外運算子(>、、>=、<=、!>和!

select * from t_student s inner join t_class c on s.classid<>c.classid

結果是:

外連線(left join/right join/outer join)

外連線分為左連線或左外連線、右連線或右外連線、全連線或全外連線。

1.左連線:返回左表中的所有行,如果左表中行在右表中沒有匹配行,則結果中右表中的列返回空值。

select * from t_student s left join t_class c on s.classid=c.classid

結果是:

*總結:左連線顯示左表全部行,和右表與左表相同行。*

2.右連線:恰與左連線相反,返回右表中的所有行,如果右表中行在左表中沒有匹配行,則結果中左表中的列返回空值。

總結:右連線恰與左連線相反,顯示右表全部行,和左表與右表相同行。

.全連線:

全連線返回左表和右表中的所有行。當某行在另一表中沒有匹配行,則另一表中的列返回空值。

select * from t_student s full join t_class c on s.classid=c.classid

結果是:

總結:返回左表和右表中的所有行。

交叉連線(笛卡爾積):

不帶where條件子句,它將返回被連線的兩個表的笛卡爾積,返回結果的行數等於兩個表行業的乘積(例如t_student 和t_class,返回4*4=16條記錄),如果帶where,返回或顯示的是匹配的行數。

1.不帶where:

select * from t_student,t_class

結果是:

總結:相當與笛卡爾積,左表和右表組合。

2.有where子句,往往會先生成兩個錶行數乘積的資料表,然後才根據where條件從中選擇。

select * from t_student s cross join t_class c where s.classid=c.classid

查詢結果跟等值連線的查詢結果是一樣。

SQL連表查詢

感覺好笨,老大寫過想了一會才想明白。因為資料都是在兩個表中的兩個表中,所以是四個表。應該先把乙個表中的兩個表篩選出來,然後再用union.sql union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的 select 語句必須擁有相同數量的列。...

sql連表查詢

1.join和union區別 join 是兩張表做交連後裡面條件相同的部分記錄產生乙個記錄集,交集 union是產生的兩個記錄集 欄位要一樣的 並在一起,成為乙個新的記錄集。並集 join用於按照on條件聯接兩個表,主要有四種 inner join 內部聯接兩個表中的記錄,僅當至少有乙個同屬於兩表的...

SQL連表查詢 JOIN

select operation,time,ip,name cnt,mac from tbl left join user on tbl.mid user.mid 最外層select查詢項可以是t user表的字段也可以是tbl表中的字段 sql中的幾種join 1 left join表示式 連線組...