1. 为什么我们需要JOIN操作?
想象你经营一家水果店,柜台里摆着各种水果标价,仓库里堆着不同水果的库存。作为老板,你肯定想知道:哪些水果既在卖又有库存?哪些水果已经卖完了但仓库还有货?哪些水果在卖但库存已经见底?这些问题都需要同时查看两个地方的数据。
这就是JOIN操作的用武之地。在Oracle数据库中,JOIN就像个数据桥梁,能把分散在不同表里的信息智能地拼接起来。我刚开始学数据库时,总觉得JOIN特别抽象,直到用水果店的例子实操后才恍然大悟。下面我们就用这个贯穿始终的案例,手把手带你掌握四种核心JOIN操作。
先来创建我们的模拟环境。柜台销售表记录水果名称和售价,库存表记录水果名称和库存量:
sql复制-- 创建柜台销售表
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 '销售单价';
-- 创建仓库库存表
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_COUNTER VALUES ('苹果', 8);
INSERT INTO FRUIT_COUNTER VALUES ('草莓', 15);
INSERT INTO FRUIT_COUNTER VALUES ('樱桃', 45);
INSERT INTO FRUIT_REPERTORY VALUES ('苹果', 200);
INSERT INTO FRUIT_
