表連線的共性:第一步均為將所有參與操作的表進行了乙個笛卡兒積,然後才依據各連線條件進行記錄的篩選。
(一) 笛卡爾積(交叉連線)
交叉連線的兩種方式,得到的結果為笛卡爾積形式:(二)條件連線隱式交叉連線:select * from student, score;
顯示交叉連線:select * fromstudent cross join score;
交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。
條件連線就是在多個表的笛卡爾積中選取滿足條件的行的連線(三)自然連線例如:select * from a,b where a.a > a.b
等值連線(特殊的條件連線)
例如:select * from a,b where a.a = b.b(條件為某欄位=某字段時)
專業術語:自然連線是在廣義笛卡爾積r×s中選出同名屬性上符合相等條件元組,再進行投影,去掉重複的同名屬性,組成新的關係。(四)內連線自然連線(natural join)是一種特殊的等值連線,自然連線無需指定連線列,sql會檢查兩個表中是否相同名稱和型別的列,如果沒有則返回錯誤。它要求兩個關係中進行比較的分量必須是相同的屬性組,並且在結果中把重複的屬性列去掉。
select * from table1 natural [inner/left outer/right outer/full outer] join table2;
返回連線表中符合連線條件和查詢條件的資料行1)隱式內連線(等值連線)
select * from table1t1, table2 t2 where t1.field1=t2. field2;2)顯式內連線
select * from table1t1 inner join table2 t2 on t1. field1 =t2. field2;(五)外連線內連線和等值連線的區別:執行效果等價,只是寫法不一樣。等值連線用where,內連線用inner join … on
(在某種意義上,笛卡爾積、條件連線、自然連線、等值連線均可以歸類為內連線,因為都是在笛卡爾積的基礎上加上條件進行篩選。)
1.左外連線(左連線)left join或left outer join(會將left outer join左側的表的所有內容顯示出來,沒有對應的值為空)
select *from student s
left outer join score sc on s.studentid=sc.studentid;
(六)聯合查詢(union join)左向外聯接的結果集包括 left outer子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。
2.右外連線(右連線)right join 或 right outer join
(會將連線表右側的表中所有內容都顯示出來)
select *
from student s
right outer join score sc on s.studentid=sc.studentid;
右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。
3.全外連線(全連線)full join 或 full outer join
select *
from student s
full outer join score sc on s.studentid=sc.studentid;
完整外部聯接返回左表和右表中的所有行。當某行在另乙個表中沒有匹配行時,則另乙個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。
這是一種很少見的連線方式。oracle、mysql均不支援,其作用是:找出全外連線和內連線之間差異的所有行。這在資料分析中排錯中比較常用。也可以利用資料庫的集合操作來實現此功能。
資料庫連線總結
mysql string driver com.mysql.jdbc.driver 驅動程式 string url jdbc mysql localhost 3306 db name 連線的url,db name為資料庫名 string username username 使用者名稱 string ...
資料庫 資料庫表連線Join
一條sql join語句對應著關係代數裡的乙個join操作,它對關聯式資料庫裡乙個或多個表的列進行合併。ansi標準的sql規定了5種型別的join inner,left outer,right outer,full outer和cross。除此之外乙個表能夠對自身進行連線,即self join。以...
資料庫 資料庫基礎5 表連線 多表連線
2 多表連線 表的數量 2 2 外部連線 前提 有時需要的資料不止在一張表中,需要多個表做結合的查詢就可以用表連線實現 1 第一種 where連線 select 表名1.列名1,表名2.列名1,表名1.列名2,表名2.列名2 from 表名1,表名2 where 表名1.列名1 表名2.列名1 2 ...