目錄
一、前言
二、GaussDB JOIN
1、LEFT JOIN
2、LEFT JOIN EXCLUDING INNER JOIN
3、RIGHT JOIN
4、LEFT JOIN EXCLUDING INNER JOIN
5、INNER JOIN
6、FULL OUTER JOIN
7、FULL OUTER JOIN EXCLUDING INNER JOIN
三、GaussDB 實(shí)驗(yàn)示例
1、初始化實(shí)驗(yàn)表
2、LEFT JOIN(示例)
3、RIGTH JOIN(示例)
4、INNER JOIN(示例)
5、FULL JOIN(示例)
四、小結(jié)
一、前言
SQL是用于數(shù)據(jù)分析和數(shù)據(jù)處理的最重要的編程語(yǔ)言之一,表連接(JOIN)是數(shù)據(jù)庫(kù)中SQL的一種常見(jiàn)操作,在實(shí)際應(yīng)用中,我們需要根據(jù)業(yè)務(wù)需求從兩個(gè)或多個(gè)相關(guān)的表中獲取信息。
二、GaussDB JOIN
GaussDB是華為推出的企業(yè)級(jí)分布式關(guān)系型數(shù)據(jù)庫(kù)。GaussDB JOIN 子句是基于兩個(gè)或者多個(gè)表之間的共同字段把它們進(jìn)行結(jié)合。在GaussDB數(shù)據(jù)庫(kù)中,常用的JOIN有如下幾種連接及用法:INNER JOIN、LEFT JOIN、RIGHT JOIN、 FULL JOIN、CROSS JOIN。
1、LEFT JOIN
LEFT JOIN 一般稱左連接,也寫(xiě)作 LEFT [OUTER] JOIN。左連接查詢會(huì)返回左表中所有記錄,且在右表中找到的關(guān)聯(lián)數(shù)據(jù)列也會(huì)被一起返回。
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
LEFT JOIN table2 t2
ON t1.id=t2.id ;
2、LEFT JOIN EXCLUDING INNER JOIN
返回左表有但右表沒(méi)有關(guān)聯(lián)數(shù)據(jù)的記錄集。
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
LEFT JOIN table2 t2
ON t1.id=t2.id
WHERE t2.id IS NULL ;
3、RIGHT JOIN
RIGHT JOIN 一般稱右連接,也寫(xiě)作 RIGHT [OUTER] JOIN。右連接查詢會(huì)返回右表中所有記錄,且在左表中找到的關(guān)聯(lián)數(shù)據(jù)列也會(huì)被一起返回。
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.id=t2.id
4、LEFT JOIN EXCLUDING INNER JOIN
返回右表有但左表沒(méi)有關(guān)聯(lián)數(shù)據(jù)的記錄集。
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.id=t2.id
WHERE t1.id IS NULL ;
5、INNER JOIN
INNER JOIN 一般被譯作內(nèi)連接。獲取左表和右表中能關(guān)聯(lián)起來(lái)的數(shù)據(jù)。
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
INNER JOIN table2 t2
ON t1.id=t2.id ;
6、FULL OUTER JOIN
FULL [OUTER] JOIN 一般稱外連接、全連接,實(shí)際查詢語(yǔ)句中可以寫(xiě)作FULL JOIN。外連接查詢能返回左右表里的所有記錄。
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
FULL OUTER JOIN table2 t2
ON t1.id=t2.id ;
7、FULL OUTER JOIN EXCLUDING INNER JOIN
返回左表和右表里沒(méi)有相互關(guān)聯(lián)的記錄集。
?
--SQL示例
SELECT t1.column1
,…
,t2.column1
,…
FROM table1 t1
FULL OUTER JOIN table2 t2
ON t1.id=t2.id
WHERE t1.id IS NULL
OR t2.id IS NULL ;
除以上幾種外,另有 CROSS JOIN(迪卡爾集),但此用法不常用,可做拓展研究。
三、GaussDB 實(shí)驗(yàn)示例
創(chuàng)建兩張實(shí)驗(yàn)表:Students(學(xué)生表)和Score(學(xué)生成績(jī)表)。
1、初始化實(shí)驗(yàn)表
1)Students(學(xué)生表):
--學(xué)生表,Students(SNO, SNAME)代表 (學(xué)號(hào),姓名)
DROP TABLE students;
CREATE TABLE students(
sno INTEGER NOT NULL,
sname varchar(32)
);
--插入數(shù)據(jù)
INSERT INTO students(sno,sname) VALUES (1001,'張三');
INSERT INTO students(sno,sname) VALUES (1002,'李四');
INSERT INTO students(sno,sname) VALUES (1003,'王五');
INSERT INTO students(sno,sname) VALUES (1004,'趙六');
INSERT INTO students(sno,sname) VALUES (1005,'韓梅');
INSERT INTO students(sno,sname) VALUES (1006,'李雷');
--查看表信息
SELECT * FROM students;
?2)Score(學(xué)生成績(jī)表):
--學(xué)生成績(jī)表,Score(SNO, SCGRADE) 代表(學(xué)號(hào),成績(jī))
DROP TABLE score;
CREATE TABLE score(
sno INTEGER NOT NULL,
scgrade DECIMAL(3,1)
);
--插入數(shù)據(jù)
INSERT INTO score(sno,scgrade)values(1001,98);
INSERT INTO score(sno,scgrade)values(1002,95);
INSERT INTO score(sno,scgrade)values(1003,97);
INSERT INTO score(sno,scgrade)values(1004,99);
--查看表信息
SELECT * FROM score;
2、LEFT JOIN(示例)
--表students為主表
SELECT t1.sno
,t1.sname
,t2.sno
,t2.scgrade
FROM students t1
LEFT JOIN score t2
ON t1.sno=t2.sno
3、RIGTH JOIN(示例)
--表score 為主表
SELECT t1.sno
,t1.sname
,t2.sno
,t2.scgrade
FROM students t1
RIGHT JOIN score t2
ON t1.sno=t2.sno
4、INNER JOIN(示例)
--根據(jù)字段sno獲取兩個(gè)表中都有的數(shù)據(jù)
SELECT t1.sno
,t1.sname
,t2.sno
,t2.scgrade
FROM students t1
INNER JOIN score t2
ON t1.sno=t2.sno
5、FULL JOIN(示例)
--獲取左右表里的所有記錄。
SELECT t1.sno
,t1.sname
,t2.sno
,t2.scgrade
FROM students t1
FULL JOIN score t2
ON t1.sno=t2.sno
?
四、小結(jié)
數(shù)據(jù)庫(kù)表連接(Join)是將兩個(gè)或多個(gè)表中的數(shù)據(jù)根據(jù)一定的條件進(jìn)行組合,在實(shí)際應(yīng)用中,數(shù)據(jù)庫(kù)表連接可以幫助我們快速地獲取所需的數(shù)據(jù)信息,提高數(shù)據(jù)處理效率。需要注意的是,不同的數(shù)據(jù)庫(kù)系統(tǒng)對(duì)表連接的支持程度可能存在差異,需要根據(jù)具體的數(shù)據(jù)庫(kù)類型選擇合適的連接方式。(本文是以GaussDB云數(shù)據(jù)庫(kù)為實(shí)驗(yàn)平臺(tái))文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-639315.html
——結(jié)束文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-639315.html
到了這里,關(guān)于GaussDB數(shù)據(jù)庫(kù)SQL系列-表連接(JOIN)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!