4、LEFT JOIN EXCLUDING INNER JOIN
返回右表有但左表没有关联数据的记录集。

--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 一般被译作内连接。获取左表和右表中能关联起来的数据。

--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 一般称外连接、全连接,实际查询语句中可以写作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
返回左表和右表里没有相互关联的记录集。

--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 实验示例
创建两张实验表:Students(学生表)和Score(学生成绩表)。
1、初始化实验表
1)Students(学生表):
--学生表,Students(SNO, SNAME)代表 (学号,姓名)
DROP TABLE students;
CREATE TABLE students(
sno INTEGER NOT NULL,
sname varchar(32)
);
--插入数据
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(学生成绩表):
--学生成绩表,Score(SNO, SCGRADE) 代表(学号,成绩)
DROP TABLE score;
CREATE TABLE score(
sno INTEGER NOT NULL,
scgrade DECIMAL(3,1)
);
--插入数据
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(示例)
--根据字段sno获取两个表中都有的数据
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
四、小结
数据库表连接(Join)是将两个或多个表中的数据根据一定的条件进行组合,在实际应用中,数据库表连接可以帮助我们快速地获取所需的数据信息,提高数据处理效率。需要注意的是,不同的数据库系统对表连接的支持程度可能存在差异,需要根据具体的数据库类型选择合适的连接方式。(本文是以GaussDB云数据库为实验平台)
——结束
【版权声明】本文为华为云社区用户原创内容,转载时必须
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




