就聊到這吧(下面我也不是很懂。。。)
說重點,為什麼使用聯結?
如果資料儲存在多個表中,怎麼用一條select語句查詢出資料呢?
答案是使用聯結。
那mysql中有幾種聯結呢?
我這邊搬下課本上的,如果還有歡迎補充!
內聯結(等值聯結)
先交代測試表的結構!
兩張表,products(產品表)與vendors(**商表)
products含有p_name,p_price,v_id(外來鍵)
vendors含有v_id(主鍵),v_name
上**!
這是大家最熟悉的聯結,mysql預設使用的就是內聯結
寫條sql,具體欄位就不解釋了,蠻簡單的一條sql
select v_name,p_name,p_price
from vendors,products
where vendors.v_id = products.p_id
這條sql使用的就是內聯結,相信大家都用過吧,只不過你可能不知道你用
的是內聯結這個知識點而已
那我們把它換一下。
select v_name,p_name,p_price
from vendors inner join products
on vendors.v_id = products.p_id
這樣子寫就是標準的內聯結語法。
這兩條sql作用一樣,寫法不同,第二條是sql規範推薦的
你可能覺得用where更清晰一點,沒錯
但是使用明確的聯結語法能確保不會忘記聯結條件,有時候也會提公升效能
自聯結
自聯結就是在一次select語句中多次引用相同的表
舉個例子
表結構同上
select p_name,p_price
from products
where v_id = (select v_id
from
products where p_id = 'dtntr')
這是用子查詢實現的sql
我們換成自聯結
select p1.p_id,p1.p_name
from products as p1,products as p2
where p1.v_id = p2.v_id and p2.p_id = 'dtntr'
對比一下 『自聯結就是在一次select語句中多次引用相同的表』 這句話
應該不難明白。
自然聯結
關於這個大家可能就很陌生了,在網上查了一下,說的最多的就是下面這句話。
『使用自然連線mysql會自動判斷,以兩個表中相同的字段為連線條件
返回查詢結果』
我在書上面找到了不同的說法
原話很饒,我翻譯並總結下
自然聯結可以排除多次出現的列。
我的理解就是自然聯結的結果集中不會有重複的列被檢索出來
就是返回的表中沒有重複的字段。
說法不一,還是聽課本的吧。。。
而且我感覺目前為止我返回的表中的字段好像都是不重複的。。。
外聯結
說下外聯結的出現原因
有時候查詢的時候會需要包含沒有關聯的行
比如列出所有客戶,包括沒有訂單的客戶
表結構我就不說了,sql很簡單,相信大家能看懂(我好懶。。。。)
這時候使用內聯結就無法查詢出 『沒人訂單的客戶』這一行
怎麼辦?
使用外聯結!
當然外聯結這裡又分為左外聯結和右外聯結,其實二者是可以互換的
我這邊使用左外聯結舉例
select customers.c_id,order.o_num
from customers left outer join orders
on customers.c_id = orders.c_id;
這條sql語句可以返回這樣一行資料
如果不使用外聯結,使用mysql預設的內聯結就不會出現這行資料。
c_id order_num
1002 null
使用外聯結時,必須指定left和right
left表示外聯結聯結的是outer join 左邊的表(也就是customers表)
mysql中的聯結 MySQL中的聯結表
使用聯結能夠實現用一條select語句檢索出儲存在多個表中的資料。聯結是一種機制,用來在一條select語句中關聯表,不是物理實體,其在實際的資料庫表中並不存在,dbms會根據需要建立聯結,且會在查詢期間一直存在。聯結的本質是第乙個表中符合條件的每一行與第二個表中符合條件的每一行進行配對,假如沒有w...
mysql使用聯結的好處 Mysql 聯結
聯結 簡介聯結是一種機制,用來在一條select語句中關聯表,聯結是由mysql根據需要而建立的,它存在於select語句的執行當中。在執行資料檢索查詢中使用聯結是sql強大的功能之一,聯結是利用sql的select能執行的最重要的操作,在使用聯結之前,我們必須要了解下關係表。關係表來個栗子說明下 ...
mysql 聯結主鍵 MySQL基礎 聯結
聯結表 mysql是一種關聯式資料庫,所謂關係就是指把資料分解為多個表,乙個類據一 個表。各表之間通過某些常用的值 即關係 相關聯 就比如說有乙個表儲存了 商資訊,商id為主鍵。另乙個表儲存了一些商品的資訊,但是也需要知道商品相應的 商資訊。那麼可以給商品設定乙個 商id 稱為外來鍵,通過這個外來鍵...