MySQL多對多關系建表有許多方法,但最常見的方法是使用中間表。中間表允許兩個表之間的多對多關系降為一對多關系。
CREATE TABLE table1 ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE table2 ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE middle_table ( id INT(11) NOT NULL AUTO_INCREMENT, table1_id INT(11) NOT NULL, table2_id INT(11) NOT NULL, PRIMARY KEY (id), INDEX table1_id_idx (table1_id), INDEX table2_id_idx (table2_id), CONSTRAINT table1_fk FOREIGN KEY (table1_id) REFERENCES table1 (id) ON DELETE CASCADE, CONSTRAINT table2_fk FOREIGN KEY (table2_id) REFERENCES table2 (id) ON DELETE CASCADE );
這個代碼創建了三個表:table1、table2和它們之間的中間表middle_table。注意中間表中有兩個外鍵,它們是對應兩個表中的主鍵,它們的作用是鏈接兩個表,同時它們也是中間表的一部分。如果需要刪除主表中的一行數據,中間表的數據也將被自動刪除。
如果想要進行查詢操作,可以在中間表上連接兩個表。例如:
SELECT table1.name, table2.name FROM table1 JOIN middle_table ON table1.id = middle_table.table1_id JOIN table2 ON middle_table.table2_id = table2.id;
這個查詢將返回table1和table2表中的數據,盡管它們之間沒有直接的聯系,因為中間表起到了連接兩個表的作用。
上一篇css讓ul顯示在同一行
下一篇mysql多對多查的意義