sql基礎 sql連線查詢

2021-07-12 00:52:03 字數 2941 閱讀 7050

這兩天在專案中寫連線查詢的時候突然回憶了一下各種連線查詢的語法、結果等,發現自己出了經常用的left join…on…,和等值連線以外其他的都不是很確定,於是乎就看看了相關的資料便有了這篇博文。

sql-92標準所定義的from子句的連線語法格式為:

fromjoin_tablejoin_typejoin_table

[on(join_condition)]

其中join_table指出參與連線操作的表名,連線可以對同乙個表操作,也可以對多表操作,對同乙個表操作的連線又稱做自連線

join_type指出連線型別,可分為三種:內連線、外連線和交叉連線。

為了更好的說明這些連線關係,我建立乙個測試庫(包括user和userdetail兩張表,都沒有設定主鍵)具體的**結構如下:

內連線(innerjoin)使用比較運算子進行表間某(些)列資料的比較操作,並列出這些表中與連線條件相匹配的資料行。根據所使用的比較方式不同,內連線又分為等值連線、自然連線和不等連線三種

sql語句

select * from `user` inner join userdetailon `user`.id = userdetail.id;

select * from `user`,userdetail where`user`.id = userdetail.id;

執行結果

上面兩條sql語句是等效的,查詢出的結果入下:

sql語句

select * from `user` natural joinuserdetail;
執行結果

sql語句

select * from `user`,userdetail where`user`.id <> userdetail.id;
執行結果

外連線分為

左外連線

(left outer join

或left join

,兩者是等效的

)、右外連線

(right outer join

或right join)

和全外連線

(full outer join

或full join)

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

sql語句

select * from `user` left outer joinuserdetail on `user`.id = userdetail.id;

select * from `user` left join userdetailon `user`.id = userdetail.id;

執行結果

上面兩句效果相同,outer關鍵字可以省略

sql語句

select * from `user` full outer joinuserdetail on `user`.id= userdetail.id;
執行結果

sql語句

select * from `user` full outer joinuserdetail on `user`.id= userdetail.id;
執行結果

我用的mysql做的測試,而mysql不支援全外連線所以這裡我用leftjoin、union、right join代替其所得執行結果

交叉連線(crossjoin)沒有where 子句,它返回連線表中所有資料行的笛卡爾積,其結果集合中的資料行數等於第乙個表中符合查詢條件的資料行數乘以第二個表中符合查詢條件的資料行數。

sql語句

select * from `user` cross join userdetail;
執行結果

總結上面就是sql中的各種連線,自己寫了一遍**之後理解深刻多了,如果你也不是很輕快,建議自己也做個測試。

SQL基礎 查詢資料 連線查詢

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

sql連線查詢基礎概念

交叉連線即笛卡爾積,是指兩個關係中所有元祖的任意組合。一般情況下,交叉查詢是沒有實際意義的。select from student cross join course1 等值連線 列出被連線表中的所有列,包括其中的重複列。連線條件中的運算子為 這種查詢方式形成的中間表為兩個表的笛卡爾積,有inner...

SQL 連線查詢

連線查詢是指乙個查詢同時涉及到兩個及以上的表。包括 等值連線,自然連線,非等值連線,自身連線,外連線,復合查詢.等.color red size large 1.等值連線 於非等值連線 size color 查詢每個學生及選課的情況 select student.sc.from student,sc...