如何使用mysql語句創(chuàng)建聯(lián)結(jié)
發(fā)表時間:2023-08-31 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]為什么要使用聯(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;
輸出:
分析:我們來考察一下此代碼。 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知識。