MySQL中多對多關系是指多個數據表之間存在多個相互關聯的數據記錄,這種關系需要借助中間表來實現。下面將介紹如何使用MySQL實現多對多關系。
首先,我們需要創建兩個表,分別表示兩個實體,例如學生和課程。我們可以使用以下代碼創建學生表:
CREATE TABLE students ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL UNIQUE ) ENGINE=InnoDB CHARSET=utf8;
接下來,我們創建課程表:
CREATE TABLE courses ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50) NOT NULL ) ENGINE=InnoDB CHARSET=utf8;
現在我們來創建中間表,用于存儲學生和課程之間的關系:
CREATE TABLE student_course ( student_id INT(11) UNSIGNED NOT NULL, course_id INT(11) UNSIGNED NOT NULL, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE, FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE ) ENGINE=InnoDB CHARSET=utf8;
在上面的中間表中,我們使用兩個外鍵來建立與學生表和課程表的關聯。這里還設置了一個聯合主鍵,以確保每對學生和課程的關系的唯一性。
現在我們的表已經準備好了,我們可以向學生和課程表中插入一些記錄:
INSERT INTO students (name,email) VALUES ('Alice', 'alice@example.com'), ('Bob', 'bob@example.com'), ('Charlie', 'charlie@example.com'); INSERT INTO courses (title) VALUES ('Computer Science'), ('Mathematics'), ('English');
最后,我們可以在中間表中添加記錄,以建立學生和課程之間的關系:
INSERT INTO student_course (student_id, course_id) VALUES (1, 1), (1, 2), (2, 1), (3, 3), (3, 2);
現在我們已經成功地建立了學生和課程之間的多對多關系。