일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Dependency Injection
- spring aop
- unix
- Framework
- POJO
- STS
- java spring
- java
- 마이바티스
- AOP
- XML
- SpringJDBC
- @AspectJ
- JDBC TEMPLATE
- Di
- 리눅스
- Spring JDBC
- Linux
- 컨테이너
- pointcut
- 프로퍼티
- @test
- spring framework
- @Spring-Test
- JdbcTemplate
- @JUnit
- Spring Boot
- Ubunt
- spring
- myBatis
- Today
- Total
개키우는개발자 : )
PostgreSQL NATURAL 조인 본문
실습 테이블 만들기 https://dog-developers.tistory.com/140
NATURAL 조인 이란?
두개의 테이블에서 같은 이름을 가진 컬럼 간의 INNER 조인 집합 결과를 출력한다.
SQL문을 보다 짧게 작성할 수 있다.
참고: 실무에선 잘 사용하지 않습니다. 하지만 NATURAL JOIN과 INNER JOIN의 차이로 인해 INNER JOIN을 더 깊게 이해할 수 있습니다.
실습
- PRODUCTS 테이블과 CATEGORIES 테이블을 NATURAL 조인 한다.
CATEGORY_ID 를 동일하게 가지고있는 컬럼을 기준으로 INNER 조인 한다.
SELECT
*
FROM
PRODUCTS A NATURAL
JOIN CATEGORIES B;
장점 - 자동으로 매칭해 코드가 간결해지며 편함.
단점 - 실수로 인해 안정성이 매우 떨어질 수 있음.
같은 결과를 조회하는 다른 문법
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
- 비슷한 테이블 조건의 실습
- CITY 테이블과 COUNTRY 테이블을 NATURAL 조인 하세요
SELECT
*
FROM
CITY A NATURAL
JOIN COUNTRY B
분명 country_id 라는 같은 컬럼을 가지고 있는데 결과는 위의 실습과 다르게 아무것도 조회되지 않습니다.
그 이유는 밑의 조회에서 확인 해봅니다.
CITY 테이블과 COUNTRY 테이블 모두 last_update 라는 컬럼을 가지고 있습니다.
NATURAL JOIN은 동일한 컬럼의 데이터도 같아야 합니다. last_update는 timestamp 타입으로 시간을 저장하는 컬럼인데 시간은 동일할 확률이 정말정말 적기때문에 NATURAL JOIN이 적용되지 않습니다. 이럴경우엔 INNER JOIN을 활용하여 country_id 로만 join을 해줍니다.
SELECT * FROM CITY;
SELECT * FROM COUNTRY;
- INNER 조인을 활용하여 coutry_id를 기준으로 조인하세요
SELECT
*
FROM
CITY A
INNER JOIN COUNTRY B ON
(A.COUNTRY_ID = B.COUNTRY_ID)
위와 같은 상황때문에 잘 INNER 조인을 사용합니다.
'PostgreSQL > 조인과 집계 데이터' 카테고리의 다른 글
PostgreSQL HAVING 절 (0) | 2019.11.05 |
---|---|
PostgreSQL GROUP BY 절 (0) | 2019.11.05 |
PostgreSQL CROSS 조인 (0) | 2019.11.03 |
PostgreSQL FULL OUTER 조인 (0) | 2019.11.03 |
PostgreSQL SELF 조인 (6) | 2019.11.03 |