본문 바로가기
SQL, Database

SQL: 가상의 테이블(view, with) - 서브쿼리 가독성 높이기

by yj-data 2025. 8. 13.
-- 원래 코드
SELECT co.code, co.name, ci.name, ci.population
FROM country co
JOIN ( SELECT * 
	   FROM city 
       WHERE population >= 800 * 10000
	   ) ci
ON co.code = ci.countrycode;

 

VIEW

# 직접 데이터 저장 X : 주소값만 저장
# > READ만 가능 : CREATE, UPDATE, DELETE 불가
# CREATE VIEW <view_name> AS ( <SQL code> )
-- view 생성
CREATE VIEW city_800 AS 
SELECT * 
FROM city 
WHERE population >= 800 * 10000;

--VIEW 활용
SELECT co.code, co.name, ci.name, ci.population
FROM country co
JOIN city_800 ci
ON co.code = ci.countrycode;

 

WITH

# 쿼리 실행전에 미리 실행할 임시쿼리를 작성하여 원래 쿼리를 간결하게 작성하는 방법
# 여러개의 WITH 설정, MySQL 8.0 버전부터 사용 가능
# WITH <with_name> AS ( <SQL code> )
WITH city_cte AS(
	SELECT * 
	FROM city 
	WHERE population >= 800 * 10000
)
SELECT co.code, co.name, ci.name, ci.population
FROM country co
JOIN city_cte ci
ON co.code = ci.countrycode;

'SQL, Database' 카테고리의 다른 글

SQL: WITH ROLLUP  (2) 2025.08.13
SQL: 서브쿼리 (+WITH)  (3) 2025.08.13
SQL: JOIN  (5) 2025.08.13
SQL: 조건문 (if, case when, 정렬 커스텀하기(order by case when))  (0) 2025.08.13
SQL : 다중행함수, UNION, UNION ALL  (1) 2025.08.13