連結
SQL最強大的功能之一就是能在資料擷取查詢的執行中聯結(join)表。聯結是利用SQL的 SELECT 能執行的最重要的操作,很好地理解聯結及其語法是學習SQL的一個極為重要的組成部分。
在能夠有效地使用聯結前,必須了解關係表以及關聯式資料庫設計的一些基礎知識。以下的介紹並不是這個內容的全部知識,但作為入門已經足夠了。
關係表
#理解關係表的最好方法是來看一個現實世界中的例子。
假如有一個包含產品目錄的資料庫表,其中每個類別的物品佔一行。對於每種物品要儲存的資訊包括產品描述和價格,以及生產該產品的供應商資訊。
現在,假如有由同一供應商生產的多種物品,那麼在何處儲存供應商資訊(如,供應商名、地址、聯絡方式等)呢?將這些資料與產品資訊分開儲存的理由如下。
1.因為同一供應商生產的每個產品的供應商資訊都是相同的,對每個產品重複此資訊既浪費時間又浪費儲存空間。
2.如果供應商資訊改變(例如,供應商搬家或電話號碼變更),只需改變一次即可。
3.如果有重複資料(即每種產品都儲存供應商資訊),很難保證每次輸入該資料的方式都相同。不一致的數據在報表中很難利用。
關鍵是,相同資料出現多次絕不是一件好事,此因素是關係資料庫設計的基礎。關係表的設計就是要確保把資訊分解成多個表,一類資料一個表。各表透過某些常用的值(即關係設計中的關係(relational))互相關聯。在這個例子中,可建立兩個表,一個儲存供應商信息,另一個儲存產品資訊。 vendors 表包含所有供應商訊息,每個供應商佔一行,每個供應商具有唯一的識別。此識別稱為主鍵(primary key),可以是供應商ID或任何其他唯一值。
products 表只儲存產品信息,它除了儲存供應商ID( vendors 表的主鍵)外不儲存其他供應商資訊。 vendors 表的主鍵又稱為 products 的外鍵,它將 vendors 表與 products 表關聯,利用供應商ID能從 vendors 表中找出對應供應商的詳細資料。
外鍵(foreign key) 外鍵為某表中的一列,它包含另一個表的主鍵值,定義了兩個表之間的關係。
這樣做的好處如下:
1.供應商資訊不重複,從不浪費時間和空間;
2.如果供應商資訊變動,可以只更新vendors 表中的單一記錄,相關表中的資料不用改動;
3.由於資料無重複,顯然資料是一致的,這使得處理資料更簡單。總之,關係資料可以有效地儲存和方便地處理。因此,關聯式資料庫的可擴展性遠比非關聯式資料庫好。
可擴展性(scale) 能夠適應不斷增加的工作量而不失敗。設計良好的資料庫或應用程式稱之為可伸縮性好(scale well)。
【相關推薦】
1.什麼是mysql子查詢?如何利用子查詢進行過濾?
2.mysql建立計算欄位使用子查詢
3.為什麼使用聯結和如何建立聯結
4.MySQL中WHERE子句重要性和如何連結多個表
以上是mysql中聯結和關聯表簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!