자동으로 값의 일부가 같은 행을 묶어준다. 하지만 실무에서는 잘 쓰이지 않는다. 오류가 생길 수 있기 때문
우리가 natural join 에 기대하는 상황
CREATE TABLE CATEGORIES
(
CATEGORY_ID SERIAL PRIMARY KEY
,CATEGORY_NAME VARCHAR (255) NOT NULL
);
CREATE TABLE PRODUCTS
(
PRODUCT_ID SERIAL PRIMARY KEY
,PRODUCT_NAME VARCHAR(255) NOT NULL
,CATEGORY_ID INT NOT NULL
,FOREIGN KEY (CATEGORY_ID)
REFERENCES CATEGORIES (CATEGORY_ID)
);
INSERT INTO CATEGORIES (CATEGORY_NAME)
VALUES
('SMART PHONE')
,('LAPTOP')
,('TABLET')
;
INSERT INTO PRODUCTS (PRODUCT_NAME, CATEGORY_ID)
VALUES
('IPHONE', 1)
,('SAMSUNG GALAXY',1)
,('HP ELITE',2)
,('LENOVO THINKPAD', 2)
,('IPAD',3)
,('KINDLE FIRE',3)
;
SELECT * FROM categories ;
SELECT * FROM products ;
SELECT *
FROM PRODUCTS A
NATURAL JOIN
CATEGORIES B
;
inner join과 같다
SELECT *
FROM PRODUCTS A
INNER JOIN CATEGORIES B
ON A.CATEGORY_ID = B.CATEGORY_ID;
종종 NATURAL JOIN이 작동하지 않는 상황
SELECT *
FROM CITY A
NATURAL JOIN country c ;
결과가 나올거라 기대하지만, timestamp 형 때문에 아얘 안나옴
같은 sql
SELECT *
FROM CITY A
INNER JOIN country c
ON A.country_id = C.country_id ;
SELECT *
FROM CITY A, country c
WHERE A.country_id = C.country_id ;
'데이터 분석 > SQL' 카테고리의 다른 글
[SQL 문법] HAVING (0) | 2020.11.04 |
---|---|
[SQL 문법] GROUP BY (0) | 2020.11.04 |
[SQL 문법] CROSS JOIN (0) | 2020.11.04 |
[SQL 문법] FULL OUTER JOIN (0) | 2020.11.03 |
[SQL 문법] SELF JOIN + ON (0) | 2020.11.03 |