Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[6주차] 22. 교집합 조인 (inner 조인 = natural 조인)*** 본문

K-DigitalTraining 강의/2. Oracle + PLSQL

[6주차] 22. 교집합 조인 (inner 조인 = natural 조인)***

이대곤 2022. 6. 15. 12:11

예제 연습전 테이블 생성 및 데이터 삽입

-- 예제 연습전 테이블 생성 및 데이터 삽입
drop table producer;

create table producer(
    p_code varchar2(10) primary key,
    p_name varchar2(10),
    p_price number
);

drop table consumer;

create table consumer(
    c_code varchar2(10) primary key,
    c_name varchar2(10),
    c_price number,
    c_addr varchar2(10)
);

insert into producer values('A01', '운동화', 1000);
insert into producer values('A02', '원피스', 2000);
insert into producer values('A03', '바지', 3000);
insert into producer values('A05', '가방', 4000);


insert into consumer values('A01', '전지현', 1100, '서울');
insert into consumer values('A02', '김수현', 2100, '부산');
insert into consumer values('A03', '아이유', 3100, '제주');
insert into consumer values('A04', '태연', 3100,'제주');

inner join 키워드를 사용하지 않고 교집합 조인을 수행하는 방법

select p_code, p_name, c_name, c_addr
from producer, consumer
where p_code = c_code;

두 테이블에 같은 컬럼이름이 존재할 경우 교집합 조인을 수행하는 4가지 방법

* 아래 쿼리들의 결과는 모두 동일함

* 테이블의 별칭 사용시 'as' 키워드는 사용하면 안됨

* 공통되는 컬럼을 맨 앞에 위치시킬 필요는 없음

* 자동으로 공통되는걸 찾는 natural 조인을 제외하고는,
   select 오른편 필드 나열시 공통된 컬럼명에 대해서는 꼭 어느 테이블의 컬럼을 사용할 지 명시해줘야 한다. 

 alter table producer rename column p_code to code;
 alter table consumer rename column c_code to code;

--1. 테이블의 별칭을 사용하지 않고 inner 조인을 수행하는 예시
select producer.code, p_name, c_name, c_addr
from producer, consumer
where producer.code = consumer.code;

--2. 테이블의 별칭을 사용하여 inner 조인을 수행하는 예시
select pro.code, p_name, c_name, c_addr
from producer pro, consumer con
where pro.code = con.code;

--3. (inner join 사용, where 대신 on을 사용하여 inner 조인을 수행하는 예시
select pro.code, p_name, c_name, c_addr
from producer pro inner join consumer con
on pro.code = con.code;

select con.code, p_name, c_name, c_addr
from producer pro inner join consumer con
on pro.code = con.code;

--4. natural join을 사용하여 교집합 조인, 양쪽 테이블의 모든 공통되는 컬럼을 조건으로 교집합 조인을 수행
-- 공통되는걸 알아서 찾기 때문에 별칭을 사용하지 않아야 한다. 안그럼 에러발생
select code, p_name, c_name, c_addr
from producer natural join consumer;

Comments