MySQL是一種開(kāi)放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),廣泛應(yīng)用于web應(yīng)用開(kāi)發(fā)中。在MySQL中,當(dāng)需要根據(jù)多個(gè)表中的數(shù)據(jù)進(jìn)行查詢(xún)和分析時(shí),我們需要使用到表關(guān)聯(lián)的概念。下面我們將通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)介紹MySQL三張表關(guān)聯(lián)的使用方法。
我們假設(shè)有三張表,分別為“學(xué)生表”、“學(xué)生選課表”、“課程表”,它們的結(jié)構(gòu)分別如下:
CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(20), age INT, gender VARCHAR(2) ); CREATE TABLE student_course ( id INT PRIMARY KEY, student_id INT, course_id INT, score INT, FOREIGN KEY(student_id) REFERENCES student(id), FOREIGN KEY(course_id) REFERENCES course(id) ); CREATE TABLE course ( id INT PRIMARY KEY, name VARCHAR(20), teacher VARCHAR(20) );
其中,“學(xué)生表”中存儲(chǔ)學(xué)生基本信息,包括學(xué)生編號(hào)、姓名、年齡和性別;“學(xué)生選課表”中存儲(chǔ)學(xué)生選修的課程信息,包括選課記錄編號(hào)、學(xué)生編號(hào)、課程編號(hào)和成績(jī);“課程表”中存儲(chǔ)課程基本信息,包括課程編號(hào)、課程名稱(chēng)和授課教師。
現(xiàn)在,我們需要查詢(xún)每個(gè)學(xué)生選修了哪些課程以及每門(mén)課程的平均成績(jī)。此時(shí),我們需要使用到MySQL三張表關(guān)聯(lián)的方法,具體實(shí)現(xiàn)代碼如下:
SELECT s.name AS student_name, c.name AS course_name, sc.score FROM student s, student_course sc, course c WHERE s.id = sc.student_id AND c.id = sc.course_id; SELECT c.name AS course_name, AVG(sc.score) AS avg_score FROM student s, student_course sc, course c WHERE s.id = sc.student_id AND c.id = sc.course_id GROUP BY c.id;
在以上代碼中,我們使用了MySQL的SELECT語(yǔ)句來(lái)實(shí)現(xiàn)三張表的關(guān)聯(lián)查詢(xún)。在第一條語(yǔ)句中,我們查詢(xún)了學(xué)生姓名、課程名稱(chēng)和學(xué)生成績(jī);在第二條語(yǔ)句中,我們查詢(xún)了課程名稱(chēng)和平均成績(jī),并通過(guò)GROUP BY語(yǔ)句對(duì)查詢(xún)結(jié)果進(jìn)行分組。通過(guò)這種方式,我們可以輕松地查詢(xún)?nèi)龔埍碇械南嚓P(guān)數(shù)據(jù)。