데이터 분석/SQL

[SQL 문법] NATURAL JOIN

참치바나나 2020. 11. 4. 12:18

자동으로 값의 일부가 같은 행을 묶어준다. 하지만 실무에서는 잘 쓰이지 않는다. 오류가 생길 수 있기 때문

우리가 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