色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql三個(gè)表做全連接

呂致盈2年前10瀏覽0評論

在MySQL中,全連接可以用于將多個(gè)表中的數(shù)據(jù)組合在一起。這種連接操作通常使用三個(gè)表進(jìn)行,我們來看一個(gè)例子。

我們假設(shè)有三個(gè)表,分別為“學(xué)生表”、“課程表”和“成績表”,其中學(xué)生表和課程表的主鍵為stuid和cid,成績表則是兩個(gè)外鍵stuid和cid,同時(shí)還有一個(gè)grade列代表成績。

CREATE TABLE students (
stuid INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE courses (
cid INT PRIMARY KEY,
course_name VARCHAR(50)
);
CREATE TABLE scores (
stuid INT,
cid INT,
grade INT,
FOREIGN KEY (stuid) REFERENCES students(stuid),
FOREIGN KEY (cid) REFERENCES courses(cid)
);

現(xiàn)在我們要將學(xué)生表、課程表和成績表進(jìn)行全連接,組合出每個(gè)學(xué)生在每門課程上的成績。

SELECT s.name, c.course_name, sc.grade
FROM students s
FULL JOIN courses c ON 1
FULL JOIN scores sc ON s.stuid = sc.stuid AND c.cid = sc.cid;

在這個(gè)語句中,我們使用FULL JOIN連接三個(gè)表。其中ON 1表示將學(xué)生表和課程表笛卡爾積,而ON s.stuid = sc.stuid AND c.cid = sc.cid則是將成績表和笛卡爾積表連接起來。

這樣我們就可以得到每個(gè)學(xué)生在每門課程上的成績,如果學(xué)生在某個(gè)課程沒有成績記錄,則該值為NULL。

總之,全連接是MySQL中一個(gè)很實(shí)用的操作,可以讓我們在多個(gè)表中進(jìn)行數(shù)據(jù)組合和比對。要注意的是,在使用全連接操作時(shí),一定要注意表之間的關(guān)聯(lián)關(guān)系,否則會得到不符合預(yù)期的結(jié)果。