코드잇/데이터베이스

SQL COALESCE, JOIN, USING, UNION

양상추상츄 2023. 2. 18. 14:05
SELECT p.name AS name, COALESCE(s.sales_volume, '판매량 정보 없음') AS '판매량'
FROM pizza_price_cost p LEFT OUTER JOIN sales s on p.id = s.menu_id
;

 

* COALESCE

SELECT A, COALESCE(A,'널입니다.')
FROM TABLE;

SELECT 문에 사용함 NULL일 때 나타낼 내용을 지정한다. (오라클에서 NVL() 같은것)

 

* JOIN문 

-- OLD ITEM 테이블 기준으로 보기 
-- OLD 테이블에는 있지만 NEW 테이블에는 없는
SELECT
    OLD.ID OLD ID,
    OLD.NAME OLD NAME,
    NEW.ID NEW ID,
    NEW.NAME NEW NAME
FROM ITEM AS OLD LEFT OUTER JOIN ITME_NEMW AS NEW
ON OLD.ID = NEW.ID;

-- NEW ITEM 테이블 기준으로 보기
-- NEW 테이블에는 있지만 OLD에는 없는 
SELECT
    OLD.ID OLD ID,
    OLD.NAME OLD NAME,
    NEW.ID NEW ID,
    NEW.NAME NEW NAME
FROM ITEM AS OLD RIGHT OUTER JOIN ITME_NEMW AS NEW
ON OLD.ID = NEW.ID;

-- INNER JOIN 두테이블에 모두 있는 ROW보기
SELECT
    OLD.ID OLD ID,
    OLD.NAME OLD NAME,
    NEW.ID NEW ID,
    NEW.NAME NEW NAME
FROM ITEM AS OLD INNER JOIN ITME_NEMW AS NEW
ON OLD.ID = NEW.ID;

-- UNION 중복되는 컬럼은 하나로 합쳐서 보여줌
SELECT * FROM ITEM
UNION
SELECT * FROM ITME_NEW;

 

* USING

SELECT
    OLD.ID OLD ID,
    OLD.NAME OLD NAME,
    NEW.ID NEW ID,
    NEW.NAME NEW NAME
FROM ITEM AS OLD INNER JOIN ITME_NEMW AS NEW
ON OLD.ID = NEW.ID;

-- 위의 코드처럼 ON 절에서 컬럼의 이름이 같을 경우 USING을 사용함
SELECT
    OLD.ID OLD ID,
    OLD.NAME OLD NAME,
    NEW.ID NEW ID,
    NEW.NAME NEW NAME
FROM ITEM AS OLD INNER JOIN ITME_NEMW AS NEW
USING(ID);

 

* UNION, UNION ALL

UNION은 테이블의 구조가 같을때 보통 사용하고 구조가 다를 경우에는 SELECT 절에 두테이블에 같이 동시에 있는 컬럼을 사용하면 사용이 가능하다.

UNION ALL은 두테이블의 구조가 달라도 사용이 가능하고 UNION 같은 경우에는 중복되는 데이터를 제거하지만 UNION ALL은 같이 보여준다.

 

* 1:1관계, 1:N 관계 (테이블간의 관계)

하나의 상품에 여러개의 리뷰가 달릴 수 있음 그래서 상품을 기준으로 LEFT OUTER JOIN을 하게 되면 여러개의 ROW가 나오게됨 이런 경우를 1:N 관계라고 함

하나의 리뷰를 한명의 사람이 남기게되는 경우는 1:1의 관계

 

 

 

'코드잇 > 데이터베이스' 카테고리의 다른 글

SQL 서브쿼리 종류  (1) 2023.02.26
SQL 여러 테이블 조인  (0) 2023.02.20
SQL Foreign Key  (0) 2023.02.12
SQL 문법  (0) 2023.02.11
SQL 실용함수들 살펴보기  (0) 2023.02.05