MySQL關(guān)聯(lián)中間表是指,在數(shù)據(jù)庫中通過使用一個連接表,將兩個表之間的關(guān)系連接起來,從而實現(xiàn)多對多關(guān)系的數(shù)據(jù)查詢和操作。下面我們通過一個示例來介紹如何使用MySQL關(guān)聯(lián)中間表。
CREATE TABLE `teacher` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '教師姓名', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教師表'; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '學(xué)生姓名', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='學(xué)生表'; CREATE TABLE `teacher_student` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id', `teacher_id` int(11) NOT NULL COMMENT '教師id', `student_id` int(11) NOT NULL COMMENT '學(xué)生id', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='教師學(xué)生關(guān)聯(lián)表';
在這個示例中,我們創(chuàng)建了三個表:teacher, student, teacher_student。其中,teacher和student分別代表教師和學(xué)生兩個實體,teacher_student則是連接這兩個實體的中間表。
下面我們來看一下如何通過MySQL語句進(jìn)行關(guān)聯(lián)查詢,例如查詢某個教師所教授的所有學(xué)生:
SELECT s.name FROM student s INNER JOIN teacher_student ts ON ts.student_id = s.id INNER JOIN teacher t ON t.id = ts.teacher_id WHERE t.id = 1;
這個查詢語句使用了INNER JOIN來連接三個表,其中ts.student_id = s.id和t.id = ts.teacher_id表示連接條件,最后的WHERE子句用來過濾出指定教師的學(xué)生。
通過MySQL關(guān)聯(lián)中間表,我們可以實現(xiàn)更加復(fù)雜的多對多關(guān)系數(shù)據(jù)查詢和操作,如有需要,也可以通過增加更多的中間表來擴(kuò)展這個模型。