본문 바로가기
DataBase

[postgreSQL] NATURAL JOIN

by 바까 2021. 9. 14.
반응형
--7)NATURAL조인
--두개의 테이블에서 같은 이름을 가진 컬럼 간의 INNER 조인 집합 결과를 출력한다.
--SQL문 자체가 간소해지는 방법
--실무에서 잘 쓰이지 않음
--INNER조인을 더 깊게 이해할 수 있음

select *
from PRODUCTS a 				--PRODUCTS 테이블과
natural join CATEGORIES B;		--CATEGORIES테이블간 NATURAL조인한다.
								--이럴경우 동일하게 가지고 있는 CATEGORY_ID컬럼을 기준으로 INNER조인한다.
								--NATURAL조인은 INNER조인의 또 다른 SQL방식이다.
								--즉 조인컬럼을 명시하지않아도 된다.
								--자동으로 된다는 소리는 안정성이 적어진다는 소리이다.
--동일
select A.CATEGORY_ID, A.PRODUCT_ID,
	   A.PRODUCT_NAME, B.CATEGORY_NAME
from PRODUCTS a 
inner join CATEGORIES b 
on A.CATEGORY_ID = B.CATEGORY_ID;
--동일
select A.CATEGORY_ID, A.PRODUCT_ID,
	   A.PRODUCT_NAME, B.CATEGORY_NAME
from PRODUCTS a 
inner join CATEGORIES b 
on (A.CATEGORY_ID = B.CATEGORY_ID);
--동일
select A.CATEGORY_ID, A.PRODUCT_ID,
	   A.PRODUCT_NAME, B.CATEGORY_NAME
from PRODUCTS a,CATEGORIES b 
where  A.CATEGORY_ID = B.CATEGORY_ID;

--안정성이 적은 예시
select * 
from CITY a
natural join COUNTRY B;  --각각의 테이블에 내용이 있는 것은 확실한데 결과 건수가 없음
--두테이블 간에는 동일한 이름으로 존재하는 칼럼이 COUNTRY_ID와 LAST_UPDATE이다.
--이런 경우 NATURAL JOIN시에 LAST_UPDATE까지 INNER조인에 성공해야만(같아야만) 결과값이 나옴.
--그래서 이렇게 써야함
select *
from CITY a 
inner join COUNTRY b 
on (A.COUNTRY_ID = B.COUNTRY_ID); 
--결과 잘 나옴, 이러한 이유로 NATURAL조인은 잘 사용하지 않음
반응형

'DataBase' 카테고리의 다른 글

[postgreSQL][집합연산자] UNION, UNION ALL  (0) 2021.09.14
[postgreSQL] GROUP BY, HAVING 절  (0) 2021.09.14
[postgreSQL] CROSS JOIN  (0) 2021.09.14
[postgreSQL] FULL OUTER JOIN  (0) 2021.09.14
[postgreSQL] SELF JOIN  (0) 2021.09.14

댓글