資料庫表與表連線的方式:內連線、外連線(左連線、右連線、全連線)、交叉連線。
一、內連線
內連線分為三種:
1、等值連線:在連線條件中使用等於號(=)運算子比較被連線列的列值,其查詢結果中列出被連線表中的所有列,包括其中的重複列。
2、非等值連線:在連線條件使用除等於運算子以外的其它比較運算子比較被連線的列的列值。
3、自然連線:在連線條件中使用等於(=)運算子比較被連線列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連線表中的重複列。
select *
from book,student
where book.studentid=student.studentid
相當於select *
from book inner join student
where book.studentid=student.studentid
以為inner join可以預設,這是系統預設
查詢的所有列為book表的列加上student表的列,即兩張表拼接在一起。表的拼接位置取決於from book inner join student語句表達位置,第乙個表在左邊
二、外連線
返回到查詢結果集合中的不僅包含符合連線條件的行,而且還包括左表(左外連線時)、右表(右外連線時)或兩個邊接表(全外連線)中的所有資料行。
1、左外連線
select *
from book left join student
on book.studentid=student.studentid
注意,判斷條件是on而不是where,同樣是兩表拼接,左表顯示全部列,右表未滿足條件的列顯示null
2、右外連線
select *
from book right join student
on book.studentid=student.studentid
與左外連線類似,只不過這次是右表顯示全部列,左表顯示null;
3、全連線(mysql中不支援 full outer join)
select *
from [book] as bfull outer join [student] as s
on b.studentid=s.studentid
即以from [book] full outer join[student]中先以book表進行左外連線,然後以student表進行右外連線。
三、交叉連線
交叉連線不帶where子句,它返回被連線的兩個表所有資料行的笛卡爾積,返回到結果集合中的資料行數等於第乙個表中符合查詢條件的資料行數乘以第二個表中符合查詢條件的資料行數。例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連線檢索到的記錄數將等於6*8=48行。
select *
from book cross join student
order by book.bookid
資料庫表的連線
資料庫表的連線 left join 是left outer join的簡寫,left join預設是outer屬性的。inner join inner join 邏輯運算子返回滿足第乙個 頂端 輸入與第二個 底端 輸入聯接的每一行。這個和用select查詢多表是一樣的效果,所以很少用到 outer ...
資料庫表的連線方式
連線方式分為內連線 inner join 外連線 outer join 交叉連線 cross join 外連線又分為左連線 left join 右連線 right join 全連線 full join 聯合 union union all 舉例 產品表和訂單表 產品表 tbl product inf...
資料庫 資料庫表連線Join
一條sql join語句對應著關係代數裡的乙個join操作,它對關聯式資料庫裡乙個或多個表的列進行合併。ansi標準的sql規定了5種型別的join inner,left outer,right outer,full outer和cross。除此之外乙個表能夠對自身進行連線,即self join。以...