본문 바로가기
DB/SQL

SQL 문법과 실행 순서 : SQL 쿼리 동작 순서와 최적화

by 커져라불어라 2023. 8. 3.
반응형

SQL은 데이터베이스에서 데이터를 조회, 조작하기 위한 언어입니다.

SQL 쿼리는 원하는 데이터를 가져오기 위해 다양한 단계에 의해 실행됩니다.

 

이번 글에서는 SQL의 기본 문법과 쿼리의 실행 순서에 대해 알아보겠습니다.

 

[1]. SQL의 기본 문법

 

1. SELCT ~ FROM ORDER BY

SELECT 
	[distinct] * or 컬럼명 
FROM 스키마.테이블 as alia명
order by 컬럼명 [asc / desc]

 

데이터를 조회하기 위해선 기본적으로 SELECT ~ FROM 을 통해 질의합니다.

먼저 FROM 절뒤는 어떤 데이터를 조회할 것인지를 작성하게 되고, SELECT 절은 FROM절의 데이터에서 어떤 column을 조회할것인지 혹은 전체를 조회할것인지를 결정하게 됩니다.

order by 는 데이터를 정렬할 때 사용합니다. acs 는 오름차순 desc는 내림차순을 의미하는데, order by 만 작성할 경우 Default로 asc가 적용됩니다.

 

추가적으로 distinct는 조회한 데이터의 중복되지 않은 값을 조회 할 필요가 있을 때. 사용합니다.

 

alias명은 이후 추가적인 SQL문을 작성 시 해당 테이블을 바꿔서 부를고 싶을 때 사용하고, 가독성을 위해 사용하게 됩니다.

 

2. WHERE 조건

SELECT 
	[distinct] * or 컬럼명 
FROM 스키마.테이블 as alia명
where 1=1
and column명 = 조건

 

where를 통해 SQL은 소위 Filter를 걸어 데이터를 조회할 수 있습니다.

이때 = , != , in , not in , like , not like , exitst , not exists , between 등 다양한 SQL 문법을 활용해 사용가능합니다. 해당 조건은 추후에 쓸 글에서 자세히 다루도록 하겠습니다.

 

 

3. JOIN

SELECT 
	[distinct] * or 컬럼명 
FROM 스키마.테이블 as alia명
JOIN 스키마.테이블 as alia명
	on 첫번쨰 alias명.key = 두번째 alia명.key

 

JOIN은 테이블과 테이블을 연결 각 테이블간의 정보를 조회하고자 할때 사용합니다. 흔히 Excel에서는 VlookUp 함수를 생각하면 될 것같네요! JOIN은 하나의 주제로 작성할 수 있을 만큼 알려드리고자 하는 내용이 많으니 다음 작성될 글을 기대해 주세요!

 

4. GROUP BY / HAVING

SELECT 
	컬럼명
    ,그룹함수(컬럼명) as alias명
FROM 스키마.테이블 as alias명
GROUP BY 그룹COLUMN 명
HAVING 그룹함수(컬럼명) > 1

 

GROUP BY는 데이터를 그룹으로 묶어 count, sum, avg 등 통계적 수치를 조회할 때 사용하게 됩니다.

HAVING은 GROUP BY한 상태에서 조건을 입력하여 뽑을 때, 사용하게 됩니다.

 

 

[2]. SQL의 실행 순서

 

1.  FROM 절:
SQL 쿼리의 첫 번째 단계는 FROM 절입니다. FROM 절은 데이터를 조회할 테이블이나 뷰를 지정하는 부분으로, 쿼리의 기본 데이터 소스를 결정합니다. 데이터베이스는 이 FROM 절에 명시된 테이블에서 데이터를 읽어옵니다. 혹은 JOIN이 있다면 함께 처리됩니다.

2. WHERE 절:
WHERE 절은 FROM 절에서 가져온 데이터 중에서 조건을 만족하는 행만을 선택하는 역할을 합니다. 여기서 조건은 비교 연산자, 논리 연산자 등을 사용하여 표현됩니다. WHERE 절을 사용하여 원하는 조건에 맞는 데이터를 필터링할 수 있습니다.

3. GROUP BY 절:
GROUP BY 절은 데이터를 특정 기준으로 그룹화하는 역할을 합니다. 이 절을 사용하면 그룹별로 데이터를 합계, 평균 등과 같은 집계 함수를 사용하여 처리할 수 있습니다. GROUP BY 절은 집계된 결과를 반환합니다.

4. HAVING 절:
HAVING 절은 GROUP BY 절과 함께 사용되며, 그룹화된 결과에 대한 조건을 지정할 때 사용됩니다. WHERE 절은 개별 행에 대한 조건을 지정하는 반면, HAVING 절은 그룹에 대한 조건을 지정합니다.

5. SELECT 절:
SELECT 절은 쿼리의 결과로 반환될 컬럼들을 선택하는 부분입니다. 이 절에서는 원하는 컬럼을 지정하거나, 계산된 필드를 추가하거나, 함수를 적용할 수 있습니다. SELECT 절은 데이터를 최종적으로 가공하여 결과를 제공합니다.

6. ORDER BY 절:
ORDER BY 절은 결과를 정렬하는데 사용됩니다. 이 절은 하나 이상의 컬럼에 대해 오름차순 또는 내림차순으로 정렬할 수 있습니다. 결과는 ORDER BY 절에 명시된 순서대로 반환됩니다.

 

위와 같은 순서로 쿼리가 실행되게 됩니다.

 

쿼리가 실행되는 순서를 알게 되면 복잡한 SQL을 작성할 때, 어느 부분 먼저 튜닝을 해야할지 혹은 어디를 데이터 사이즈를 줄이고 SQL을 작성할 지 등 기본적인 생각을 가질 수 있습니다.

 

오늘은 여기까지!

공부 혹은 업무 하시는데 제 글이 작게나마 도움이 되었으면 합니다!

감사합니다!

 

반응형