Oracle 连接 JOIN、INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN的理解和用法。
首先了解连接后的数据情况会是什么样:
模拟一下数据情况:
CREATE TABLE FRUIT_COUNTER (
NAME VARCHAR2(20),PRICE NUMBER
);
COMMENT ON TABLE FRUIT_COUNTER IS '水果-柜台售卖';
COMMENT ON COLUMN FRUIT_COUNTER.NAME IS '水果-名称';
COMMENT ON COLUMN FRUIT_COUNTER.PRICE IS '水果-价格';
INSERT INTO FRUIT_COUNTER (NAME,PRICE) VALUES ('苹果',8);
INSERT INTO FRUIT_COUNTER (NAME,PRICE) VALUES ('草莓',15);
INSERT INTO FRUIT_COUNTER (NAME,PRICE) VALUES ('樱桃',45);
COMMIT;
CREATE TABLE FRUIT_REPERTORY (
NAME VARCHAR2(20),REPERTORY NUMBER
);
COMMENT ON TABLE FRUIT_REPERTORY IS '水果库存';
COMMENT ON COLUMN FRUIT_REPERTORY.NAME IS '水果-名称';
COMMENT ON COLUMN FRUIT_REPERTORY.REPERTORY IS '水果-库存数量';
INSERT INTO FRUIT_REPERTORY (NAME,REPERTORY) VALUES ('苹果',200);
INSERT INTO FRUIT_REPERTORY (NAME,REPERTORY) VALUES ('青提',300);
INSERT INTO FRUIT_REPERTORY (NAME,REPERTORY) VALUES ('樱桃',100);
COMMIT;
一、JOIN / INNER JOIN
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。
语法:
SELECT column1,column2,...
FROM table1
JOIN table2 ON condition;
参数说明:
- column1,...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
- table1:要连接的第一个表。
- table2:要连接的第二个表。
- condition:连接条件,用于指定连接方式。
举例:
获取'柜台'和'仓库'两张表的同种水果的数据
SELECT *
FROM FRUIT_COUNTER C
JOIN FRUIT_REPERTORY R ON C.NAME = R.NAME ;
同时出现在柜台和仓库表中的数据
二、LEFT JOIN
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SQL LEFT JOIN 语法
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
举例:
获取柜台上的水果在仓库的库存
SELECT *
FROM FRUIT_COUNTER C
LEFT JOIN FRUIT_REPERTORY R ON C.NAME = R.NAME ;
三、LEFT JOIN
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SQL RIGHT JOIN 语法
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。
举例:
获取库存水果在柜台上的价格
SELECT *
FROM FRUIT_COUNTER C
RIGHT JOIN FRUIT_REPERTORY R ON C.NAME = R.NAME ;
四、FULL JOIN
FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
SQL FULL OUTER JOIN 语法
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
举例:
获取柜台水果的库存,获取库存水果的价格
SELECT *
FROM FRUIT_COUNTER C
FULL JOIN FRUIT_REPERTORY R ON C.NAME = R.NAME ;
总结:
以上就是数据库通过JOIN连接的几种方式,可以在数据库中做几次练习方便直观的理解。
原文地址:https://blog.csdn.net/qq_57226198/article/details/129839023
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。