SQL 기본 문법 알아보기

 

Contents
1. 기본 SELECT 문
WHERE 절
2. 심화 SELECT문
GROUP BY 절
HAVING 절

1. 기본 SELECT 문

SELECT문은 SQL에서 가장 많이 사용되는 문법입니다. SELECT문은 이미 구축된 테이블에서 데이터를 추출하고 불러오는 역할을 합니다. SELECT (데이터) FROM (테이블) WHERE (조건)이 기본 구조입니다. 아래와 같이 확장할 수 있습니다.

SELECT 열이름 FROM 테이블 이름
    WHERE 조건
    GROUP BY 열 이름
    HAVING 조건식
    ORDER BY 열 이름
    LIMIT 숫자;
  1. SELECT 열이름: 특정 테이블에서 조회하고자 하는 열을 지정합니다.
  2. FROM 테이블 이름: 데이터를 조회할 테이블의 이름을 지정합니다.
  3. WHERE 조건: 특정 조건을 만족하는 행만을 선택하기 위해 사용됩니다. WHERE 절이 없으면 모든 행이 선택됩니다.
  4. GROUP BY 열 이름: 그룹별로 데이터를 묶을 열을 지정합니다. 특정 열 값을 기준으로 그룹을 형성 합니다.
  5. HAVING 조건식: GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정합니다. GROUP BY의 조건식이라고 할 수 있습니다.
  6. ORDER BY 열 이름: 결과를 정렬하는 데 사용됩니다. 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다.
  7. LIMIT 숫자: 반환되는 결과 집합의 행 수를 제한합니다. 특정 수의 행만을 반환하도록 제한합니다.

 

예를 들어, 직원 테이블에서 부서별로 평균 급여를 계산하고, 평균 급여가 50,000 이상인 부서에서 평균 급여의 상위 5개를 표시하는 SQL 쿼리는 다음과 같습니다.

SELECT DepartmentID, AVG(Salary) AS AvgSalary FROM Employment
    GROUP BY Department ID
    HAVING AVG(Salary) >= 50000
    ORDER BY AvgSalary DESC
    LIMIT 5;

 

WHERE 절

WHERE 절은 SELECT 문의 조건을 나타냅니다. 자주 활용되는 조건 식을 살펴보겠습니다.

  • 여러 개의 조건문을 동시에 만족하는 데이터를 조회할 때, 논리 연산자 AND, OR 등을 사용합니다.
SELECT mem_name, height, mem_number FROM member
	WHERE height >= 165 AND mem_number >6;

 

  • 숫자형 데이터에서 범위 안에 있는 데이터를 조회할 때, BETWEEN ~ AND를 사용합니다.
SELECT mem_name, height FROM member
	WHERE hight BETWEEN 163 AND 165;

 

  • 문자형 데이터에서 특정 문자가 포함된 데이터를 조회할 때, IN()을 사용합니다.
SELECT mem_name, addr FROM member
	WHERE addr IN('경기', '서울', '전북');

 

  • 문자형 데이터에서 일부 글자만을 가진 조건을 조회할 때, LIKE를 사용합니다. '우%'는 우로 시작하는 모든 데이터를 의미합니다.
SELECT * FROM member
	WHERE mem_name LIKE '우%';

 

  • 문자형 데이터에서 한 글자씩 매칭하기 위해서는 언더바(_)를 사용합니다. '__시대'는 'xx시대' 구조로 이루어진 데이터를 의미합니다.
SELECT * FROM member
	WHERE mem_name LIKE '__핑크';

 

2. 심화 SELECT문

GROUP BY 절

GROUP BY 절은 특정 열의 값에 따라 결과를 그룹화 합니다. 주로 집계 함수와 함께 사용되고, 그룹별로 집계를 수행하고 분류된 결과를 반환합니다. 자주 활용되는 집계 함수는 다음과 같습니다.

집계 함수 설명
SUM() 합계
AVG() 평균
MIN() 최소 값
MAX() 최대 값
COUNT() 그룹 별 행의 개수
COUNT(DISTINCT) 그룹 별 유니크 행의 개수

 

각 회원(mem_id) 별로 물품을 구매한 개수(amount)를 합계하여 구하는 쿼리는 다음과 같습니다.

SELECT mem_id "회원 아이디", SUM(amount) "총 구매 개수" FROM buy GROUP BY mem_id;

 

 

각 회원(mem_id) 별로 물품을 구매한 평균 개수(amount)를 구하는 쿼리는 다음과 같습니다.

SELECT mem_id, AVG(amount) FROM member
	GROUP BY mem_id;

 

HAVING 절

HAVING 절은 집계 함수에 대해서 조건을 제한합니다. HAVING 절은 반드시 GROUP BY 절 뒤에 나옵니다.

물품을 구매한 개수(amount)를 합계가 5개 이상인 회원(mem_id)을 구하는 쿼리는 다음과 같습니다.

SELECT mem_id, SUM(amount) FROM buy
	GROUP BY mem_id
    	HAVING SUM(amount) > 5;

 

총 구매 개수가 많은 순서대로 정렬하면 다음과 같습니다.

SELECT mem_idm SUM(amount) FROM buy
	GROUP BY mem_id
    HAVING SUM(amount) >= 5
    ORDER BY SUM(amount) DESC;

 

반응형