반응형
--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 |
댓글