一般基於 ansi 標準的 sql 列出了五種 join 方式:
內連線(inner join)
全外連線(full outer join/full join)
左外連線(left outer join/left join)
右外連線(right outer join/right join)
交叉連線(cross join)
注意:沒有左內連線盒右內連線
左向外聯接的結果集包括 left outer 子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。
如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的 所有選擇列表列均為空值。
右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。
完整外部聯接返回左表和右表中的所有行。當某行在另乙個表中沒有匹配行時,則另乙個表的選擇列表列包含空值。如果表之間有匹配行,
則整個結果集行包含基表的資料值。
mysql不支援直接的全連線即:select * from jobmark full outer join student on jobmark.id=student.id 會報錯但是可以使用合併連線來實現
內連線為 兩個表中必須都同時滿足條件時,也可以說是兩個表中都必須在另乙個表中有對應的項,而不能為空。才返回該行。
select * from jobmark inner join student on jobmark.id=student.id 或者
對等價連線的進一步特例化,匹配相同的列(只要名字相同就可以,型別不同也可以)。
select * from jobmark natural join student
表資料
查詢結果:
交叉連線即返回這兩個集合的笛卡爾積。這其實等價於內連線的鏈結條件為"永真",或連線條件不存在.
select * from jobmark cross join student
等同於select * from jobmark,student
SQL 中的連線
連線是運算元據庫經常要用到的,分了很多種,各有各的用處,為避免以後混淆,特將概念記錄與此,供日後查閱。在sql server中,通過連線運算可以實現多表查詢,連線是關聯式資料庫模型的主要特點,也是它區別其他資料庫管理系統的乙個標誌。一般連線的寫法如下 from join table join typ...
sql中的連線查詢
create table 產品 產品編號 char 9 not null,產品名稱 varchar 20 not null go create table 產品銷量 產品編號 char 9 not null,銷量 int go insert into 產品 values 001 顯示器 insert...
SQL中的連線查詢
1 整體說明 1 所謂連線,按字面理解就是將表拼在一起,當做一張表使用 2 內連線 顧名思義,也就是兩張表的重疊部分 即青色部分 都滿足才行 3 左外連線 也就是將左邊的表也連線起來,結果就是所有左邊的資料加上滿足重疊部分條件的右邊部分 4 右外連線 右邊所有表的資料,加上滿足重疊部分條件的左邊的資...