明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

mysql中聯(lián)結(jié)與關(guān)系表簡介

[摘要]聯(lián)結(jié)SQL最強(qiáng)大的功能之一就是能在數(shù)據(jù)檢索查詢的執(zhí)行中聯(lián)結(jié)(join)表。聯(lián)結(jié)是利用SQL的 SELECT 能執(zhí)行的最重要的操作,很好地理解聯(lián)結(jié)及其語法是學(xué)習(xí)SQL的一個(gè)極為重要的組成部分。在能夠有效地使用聯(lián)結(jié)前,必須了解關(guān)系表以及關(guān)系數(shù)據(jù)庫設(shè)計(jì)的一些基礎(chǔ)知識(shí)。下面的介紹并不是這個(gè)內(nèi)容的全部知識(shí),...
聯(lián)結(jié)

SQL最強(qiáng)大的功能之一就是能在數(shù)據(jù)檢索查詢的執(zhí)行中聯(lián)結(jié)(join)表。聯(lián)結(jié)是利用SQL的 SELECT 能執(zhí)行的最重要的操作,很好地理解聯(lián)結(jié)及其語法是學(xué)習(xí)SQL的一個(gè)極為重要的組成部分。

在能夠有效地使用聯(lián)結(jié)前,必須了解關(guān)系表以及關(guān)系數(shù)據(jù)庫設(shè)計(jì)的一些基礎(chǔ)知識(shí)。下面的介紹并不是這個(gè)內(nèi)容的全部知識(shí),但作為入門已經(jīng)足夠了。


關(guān)系表

理解關(guān)系表的最好方法是來看一個(gè)現(xiàn)實(shí)世界中的例子。

假如有一個(gè)包含產(chǎn)品目錄的數(shù)據(jù)庫表,其中每種類別的物品占一行。對(duì)于每種物品要存儲(chǔ)的信息包括產(chǎn)品描述和價(jià)格,以及生產(chǎn)該產(chǎn)品的供應(yīng)商信息。

現(xiàn)在,假如有由同一供應(yīng)商生產(chǎn)的多種物品,那么在何處存儲(chǔ)供應(yīng)商信息(如,供應(yīng)商名、地址、聯(lián)系方法等)呢?將這些數(shù)據(jù)與產(chǎn)品信息分開存儲(chǔ)的理由如下。

1.因?yàn)橥还⿷?yīng)商生產(chǎn)的每個(gè)產(chǎn)品的供應(yīng)商信息都是相同的,對(duì)每個(gè)產(chǎn)品重復(fù)此信息既浪費(fèi)時(shí)間又浪費(fèi)存儲(chǔ)空間。

2.如果供應(yīng)商信息改變(例如,供應(yīng)商搬家或電話號(hào)碼變動(dòng)),只需改動(dòng)一次即可。

3.如果有重復(fù)數(shù)據(jù)(即每種產(chǎn)品都存儲(chǔ)供應(yīng)商信息),很難保證每次輸入該數(shù)據(jù)的方式都相同。不一致的數(shù)據(jù)在報(bào)表中很難利用。

關(guān)鍵是,相同數(shù)據(jù)出現(xiàn)多次決不是一件好事,此因素是關(guān)系數(shù)據(jù)庫設(shè)計(jì)的基礎(chǔ)。關(guān)系表的設(shè)計(jì)就是要保證把信息分解成多個(gè)表,一類數(shù)據(jù)一個(gè)表。各表通過某些常用的值(即關(guān)系設(shè)計(jì)中的關(guān)系(relational))互相關(guān)聯(lián)。在這個(gè)例子中,可建立兩個(gè)表,一個(gè)存儲(chǔ)供應(yīng)商信息,另一個(gè)存儲(chǔ)產(chǎn)品信息。 vendors 表包含所有供應(yīng)商信息,每個(gè)供應(yīng)商占一行,每個(gè)供應(yīng)商具有唯一的標(biāo)識(shí)。此標(biāo)識(shí)稱為主鍵(primary key),可以是供應(yīng)商ID或任何其他唯一值。

products 表只存儲(chǔ)產(chǎn)品信息,它除了存儲(chǔ)供應(yīng)商ID( vendors 表的主鍵)外不存儲(chǔ)其他供應(yīng)商信息。 vendors 表的主鍵又叫作 products 的外鍵,它將 vendors 表與 products 表關(guān)聯(lián),利用供應(yīng)商ID能從 vendors 表中找出相應(yīng)供應(yīng)商的詳細(xì)信息。

外鍵(foreign key) 外鍵為某個(gè)表中的一列,它包含另一個(gè)表的主鍵值,定義了兩個(gè)表之間的關(guān)系。

這樣做的好處如下:

1.供應(yīng)商信息不重復(fù),從而不浪費(fèi)時(shí)間和空間;

2.如果供應(yīng)商信息變動(dòng),可以只更新 vendors 表中的單個(gè)記錄,相關(guān)表中的數(shù)據(jù)不用改動(dòng);

3.由于數(shù)據(jù)無重復(fù),顯然數(shù)據(jù)是一致的,這使得處理數(shù)據(jù)更簡單。總之,關(guān)系數(shù)據(jù)可以有效地存儲(chǔ)和方便地處理。因此,關(guān)系數(shù)據(jù)庫的可伸縮性遠(yuǎn)比非關(guān)系數(shù)據(jù)庫要好。

可伸縮性(scale) 能夠適應(yīng)不斷增加的工作量而不失敗。設(shè)計(jì)良好的數(shù)據(jù)庫或應(yīng)用程序稱之為可伸縮性好(scale well)。

【相關(guān)推薦】

1.什么是mysql子查詢?如何利用子查詢進(jìn)行過濾?

2.mysql創(chuàng)建計(jì)算字段使用子查詢

3.為什么使用聯(lián)結(jié)和如何創(chuàng)建聯(lián)結(jié)

4.MySQL中WHERE子句重要性和如何聯(lián)結(jié)多個(gè)表

以上就是mysql中聯(lián)結(jié)和關(guān)系表簡介的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。