MySQL 是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。在實(shí)際應(yīng)用中,我們通常需要查詢(xún)多個(gè)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析和處理。MySQL 提供了關(guān)聯(lián)查詢(xún)功能可以實(shí)現(xiàn)這一需求。下面將介紹如何使用 MySQL 實(shí)現(xiàn)簡(jiǎn)單的關(guān)聯(lián)查詢(xún)。
-- 假設(shè)我們有兩個(gè)表,一個(gè)商品表和一個(gè)訂單表 -- 商品表結(jié)構(gòu) CREATE TABLE IF NOT EXISTS `product` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `price` decimal(10,2) NOT NULL, PRIMARY KEY (`id`) ); -- 訂單表結(jié)構(gòu) CREATE TABLE IF NOT EXISTS `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `product_id` int(11) NOT NULL, `quantity` int(11) NOT NULL, `total_price` decimal(10,2) NOT NULL, PRIMARY KEY (`id`) );
上述代碼創(chuàng)建了兩個(gè)數(shù)據(jù)庫(kù)表,一個(gè)是商品表 product,包含商品 id、商品名稱(chēng)以及商品價(jià)格等信息。另一個(gè)是訂單表 order,包含訂單 id、產(chǎn)品 id、數(shù)量和總價(jià)等信息。
我們現(xiàn)在需要查詢(xún)每個(gè)訂單的產(chǎn)品名稱(chēng)以及產(chǎn)品價(jià)格,我們可以使用以下 SQL 語(yǔ)句實(shí)現(xiàn)關(guān)聯(lián)查詢(xún):
SELECT o.total_price, o.quantity, p.name, p.price FROM `order` o INNER JOIN `product` p ON o.product_id = p.id
上述代碼將訂單表和商品表連接起來(lái),通過(guò)訂單表中的 product_id 與商品表中的 id 產(chǎn)生關(guān)聯(lián)。關(guān)聯(lián)后結(jié)果集中將包含訂單行項(xiàng)的總價(jià)、數(shù)量、產(chǎn)品名稱(chēng)以及產(chǎn)品價(jià)格。
MySQL 使用 INNER JOIN 關(guān)鍵字連接表。INNER JOIN 關(guān)鍵字返回表中匹配的所有記錄。如果表與另一個(gè)表中沒(méi)有匹配的記錄,則不會(huì)顯示在結(jié)果集中。
關(guān)聯(lián)查詢(xún)可以實(shí)現(xiàn)更加復(fù)雜的數(shù)據(jù)處理。關(guān)聯(lián)查詢(xún)還可以支持多表關(guān)聯(lián)查詢(xún)。如果需要在關(guān)聯(lián)表中聯(lián)接多個(gè)表,請(qǐng)使用 LEFT JOIN 或 RIGHT JOIN 等其他類(lèi)型的聯(lián)接。