목록MSSQL/테이블을 서로 통합하는 조인 (11)
충분히 쌓여가는
공통 테이블 식(Common Table Expression, CTE)주로 데이터베이스에 없는 테이블을 필요할 때 사용하며, 바로 다음에 실행할 SELECT 문에만 사용해야 한다는 특징이 있다.공통 테이블 식은 목적에 따라 '일반 공통 테이블 식'과 '재귀 공통 테이블 식'으로 나뉜다. 일반 CTECTE 안에서 UNION 문, UNION ALL 문, INTERSECT 문, EXCEPT 문을 사용해 여러 개의 일반 CTE 쿼리를 결합할 수 있다.일반 CTE는 복잡한 쿼리를 단순하게 만들 때 사용하기 좋다 CTE의 기본 형식WITH [CTE_테이블 이름] (열 이름 1, 열 이름 2, ...)AS( )SELECT [열 이름] FROM [CTE_테이블 이름]; CTE 사용 방법WITH 문을 입력 한 후 CTE..
SELECT 문에 사용하는 서브 쿼리는 반드시 1개의 행을 반환해야 하므로 SUM, COUNT, MIN, MAX 등의 집계 함수와 함께 사용하는 경우가 많다.하지만 성능 문제가 생기기 쉬우므로 SELECT 문에서는 서브 쿼리의 집계 함수와 함께 사용하지 않는 것이 좋다. 스칼라 서브 쿼리(Scalar Subquery)SELECT 문에 사용된 서브 쿼리스칼라 서브 쿼리는 1개 이상 사용할 수 있다 스칼라 서브 쿼리의 기본 형식SELECT [열 이름], (SELECT [열 이름] FROM [테이블 2] WHERE [테이블 2.열] = [테이블 1.열]) as AliasFROM [테이블 1]WHERE [조건] 스칼라 서브 쿼리 사용-- 테이블 조인SELECT a.symbol, a.company_name..
인라인뷰(Inline View) FROM 문에 사용하는 서브 쿼리 결과는 조인할 수 있으므로 쿼리를 논리적으로 격리할 수 있다. FROM 문에 사용하는 서브 쿼리의 기본 형식SELECT [열 이름]FROM [테이블] AS aINNER JOIN (SELECT [열] FROM [테이블] WHERE [열] = [값]) AS b ON [a.열] = [b.열]WHERE [열] = [값]; 인라인뷰에 INNER JOIN을 활용한 서브 쿼리-- 테이블 조인SELECT a.symbol, a.company_name, a.ipo_year, a.sector, a.industry, b.date, b.[open], b.[high], b.[low], b.[close], b.adj_close, b.volumeFROM nasdaq_..
다중 행 서브 쿼리서브 쿼리에서 반환되는 결과가 2행 이상인 경우IN 문WHERE 절에 있는 IN 문의 소괄호가 서브 쿼리를 안고 있다. WHERE 문에 사용하는 다중 행 서브 쿼리의 기본 형식SELECt [열 이름]FROM [테이블]WHERE [열] IN (SELECT [열] FROM [테이블]) 단일 행 서브 쿼리와 다중 행 서브 쿼리 비교SELECT * FROM nasdaq_companyWHERE symbol IN ('MSFT', 'AMD', 'AMZN');SELECT * FROM nasdaq_companyWHERE symbol IN (SELECT symbol FROM nasdaq_company WHERE symbol IN ('MSFT', 'AMD', 'AMZN'));서브 쿼리에서 검색된 3개의 행..