在MySQL中建立多對多關(guān)系表需要使用一個關(guān)聯(lián)表。關(guān)聯(lián)表包含了兩個主表的關(guān)鍵字來創(chuàng)建對應(yīng)關(guān)系。在這個表中,一列用來引用主表A中的主鍵,第二列用來引用主表B中的主鍵。這兩列形成了這兩個主表之間的連接。
下面的代碼展示了一個簡單的多對多關(guān)系建表:
CREATE TABLE `tableA` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `tableB` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `tableA_tableB` ( `tableA_id` int(11) NOT NULL, `tableB_id` int(11) NOT NULL, PRIMARY KEY (`tableA_id`,`tableB_id`) );
在這個例子中,我們?yōu)閮蓚€主表創(chuàng)建了一個名為“tableA_tableB”的關(guān)聯(lián)表。這張關(guān)聯(lián)表包含了兩個外鍵,“tableA_id”和“tableB_id”,通過這兩個外鍵建立了主表A和主表B之間的多對多關(guān)系。
我們可以使用下面的代碼來添加一個新的多對多關(guān)系:
INSERT INTO `tableA_tableB` (`tableA_id`, `tableB_id`) VALUES (1, 1);
這個查詢向“tableA_tableB”關(guān)聯(lián)表增加了一條新的記錄,將主表A中具有id=1的記錄與主表B中具有id=1的記錄關(guān)聯(lián)起來。
多對多關(guān)系查詢可以使用MySQL內(nèi)置的JOIN語句來執(zhí)行。下面是一個示例:
SELECT tableA.name AS 'A', tableB.name AS 'B' FROM tableA_tableB JOIN tableA ON tableA.id = tableA_tableB.tableA_id JOIN tableB ON tableB.id = tableA_tableB.tableB_id WHERE tableA.id =1;
這個查詢返回了主表A中具有id=1的記錄相關(guān)聯(lián)的主表B中的所有記錄。
在MySQL中建立多對多關(guān)系需要使用關(guān)聯(lián)表。這個關(guān)聯(lián)表包含了兩個主表之間的連接。通過使用INNER JOIN語句,我們可以查詢關(guān)聯(lián)的數(shù)據(jù)并查找相關(guān)的記錄。