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

如何使用mysql語句創(chuàng)建聯(lián)結(jié)

[摘要]為什么要使用聯(lián)結(jié)正如所述,分解數(shù)據(jù)為多個表能更有效地存儲,更方便地處理,并且具有更大的可伸縮性。但這些好處是有代價的。如果數(shù)據(jù)存儲在多個表中,怎樣用單條 SELECT 語句檢索出數(shù)據(jù)?答案是使用聯(lián)結(jié)。簡單地說,聯(lián)結(jié)是一種機制,用來在一條 SELECT語句中關(guān)聯(lián)表,因此稱之為聯(lián)結(jié)。使用特殊的語法,可...
為什么要使用聯(lián)結(jié)

正如所述,分解數(shù)據(jù)為多個表能更有效地存儲,更方便地處理,并且具有更大的可伸縮性。但這些好處是有代價的。

如果數(shù)據(jù)存儲在多個表中,怎樣用單條 SELECT 語句檢索出數(shù)據(jù)?

答案是使用聯(lián)結(jié)。簡單地說,聯(lián)結(jié)是一種機制,用來在一條 SELECT語句中關(guān)聯(lián)表,因此稱之為聯(lián)結(jié)。使用特殊的語法,可以聯(lián)結(jié)多個表返回一組輸出,聯(lián)結(jié)在運行時關(guān)聯(lián)表中正確的行。

維護(hù)引用完整性 重要的是,要理解聯(lián)結(jié)不是物理實體。換句話說,它在實際的數(shù)據(jù)庫表中不存在。聯(lián)結(jié)由MySQL根據(jù)需要建立,它存在于查詢的執(zhí)行當(dāng)中。

在使用關(guān)系表時,僅在關(guān)系列中插入合法的數(shù)據(jù)非常重要;氐竭@里的例子,如果在 products 表中插入擁有非法供應(yīng)商ID(即沒有在 vendors 表中出現(xiàn))的供應(yīng)商生產(chǎn)的產(chǎn)品,則這些產(chǎn)品是不可訪問的,因為它們沒有關(guān)聯(lián)到某個供應(yīng)商。

為防止這種情況發(fā)生,可指示MySQL只允許在 products 表的供應(yīng)商ID列中出現(xiàn)合法值(即出現(xiàn)在 vendors 表中的供應(yīng)商)。

這就是維護(hù)引用完整性,它是通過在表的定義中指定主鍵和外鍵來實現(xiàn)的。


創(chuàng)建聯(lián)結(jié)

聯(lián)結(jié)的創(chuàng)建非常簡單,規(guī)定要聯(lián)結(jié)的所有表以及它們?nèi)绾侮P(guān)聯(lián)即可。請看下面的例子:

輸入:

select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id= products.vend_id order by vend_name,prod_name;

輸出:

QQ截圖20170510105032.png

QQ截圖20170510105038.png

分析:我們來考察一下此代碼。 SELECT 語句與前面所有語句一樣指定要檢索的列。這里,最大的差別是所指定的兩個列( prod_name和 prod_price )在一個表中,而另一個列( vend_name )在另一個表中。

現(xiàn)在來看 FROM 子句。與以前的 SELECT 語句不一樣,這條語句的 FROM子 句列出了兩個表,分別是 vendors 和 products 。它們就是這條 SELECT語句聯(lián)結(jié)的兩個表的名字。這兩個表用 WHERE 子句正確聯(lián)結(jié), WHERE 子句指示MySQL匹配 vendors 表中的 vend_id 和 products 表中的 vend_id 。

可 以 看 到 要 匹 配 的 兩 個 列 以 vendors.vend_id 和 products.vend_id 指定。這里需要這種完全限定列名,因為如果只給出 vend_id ,則MySQL不知道指的是哪一個(它們有兩個,每個表中一個)。

完全限定列名 在引用的列可能出現(xiàn)二義性時,必須使用完全限定列名(用一個點分隔的表名和列名)。如果引用一個沒有用表名限制的具有二義性的列名,MySQL將返回錯誤。

【相關(guān)推薦】

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

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

3.mysql中什么是聯(lián)結(jié)和關(guān)系表?

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

以上就是如何使用mysql語句創(chuàng)建聯(lián)結(jié)的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


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