BOARD / SQL 기본 / 2026-04-13

SQL 기본 정리

SQLD 실습에서 가장 먼저 부딪히는 문법은 결국 SELECT 계열입니다. 화면에 무엇을 보여줄지, 어디서 가져올지, 어떤 조건으로 자를지, 어떤 순서로 정렬할지를 이 한 묶음에서 결정합니다.

게시판 목록BLACK SQL 실습SQLD 문제은행

기본 문법은 각각 따로 외우는 것이 아니라 실행 순서와 역할을 함께 묶어서 기억해야 실습에서 헷갈리지 않습니다. 특히 GROUP BY, HAVING, DISTINCT는 결과를 어떻게 바꾸는지 직접 실행하면서 체감하는 것이 중요합니다.

핵심 체크포인트

  • SELECT는 보여줄 컬럼, FROM은 가져올 테이블, WHERE는 행 조건을 담당합니다.
  • GROUP BY 이후에는 집계 컬럼과 일반 컬럼을 섞는 규칙을 반드시 함께 봐야 합니다.
  • ORDER BY는 가장 마지막에 적용되며 결과 표시 순서를 바꾸는 절입니다.

주제별 설명

SELECT

조회 결과에 어떤 컬럼이나 식을 보여줄지 결정하는 절입니다.

  • 컬럼명, 상수, 함수, 산술식 모두 SELECT에 둘 수 있습니다.
  • 실습 초반에는 `SELECT *`보다 필요한 컬럼만 명시하는 습관이 좋습니다.
SELECT member_id,
       member_name,
       city
FROM members;

FROM

데이터를 읽어올 테이블 또는 인라인 뷰를 지정하는 절입니다.

  • FROM이 있어야 SQL이 어떤 집합을 기준으로 동작하는지 정해집니다.
  • 조인, 서브쿼리, 뷰도 결국 FROM에서 시작합니다.

WHERE

행 단위로 조건을 걸어 필요한 데이터만 남기는 절입니다.

  • 집계 전에 필터링되므로 성능과 결과 모두에 직접 영향을 줍니다.
  • NULL 비교는 `=`가 아니라 `IS NULL`, `IS NOT NULL`을 사용합니다.
SELECT member_name,
       city
FROM members
WHERE city = 'SEOUL'
  AND grade_code = 'VIP';

ORDER BY

조회 결과의 출력 순서를 정하는 절입니다.

  • ASC는 오름차순, DESC는 내림차순입니다.
  • 정렬 컬럼이 여러 개면 앞 컬럼이 먼저 우선순위를 가집니다.

GROUP BY

같은 값끼리 묶어서 COUNT, SUM, AVG 같은 집계를 계산할 때 사용합니다.

  • SELECT에 일반 컬럼이 있다면 대부분 GROUP BY에도 함께 있어야 합니다.
  • GROUP BY는 행을 줄이는 절이라 결과 행 수가 달라지는지 꼭 확인해야 합니다.
SELECT grade_code,
       COUNT(*) AS member_cnt
FROM members
GROUP BY grade_code;

HAVING

GROUP BY로 집계된 결과에 다시 조건을 거는 절입니다.

  • WHERE는 집계 전, HAVING은 집계 후라는 차이를 명확히 구분해야 합니다.
  • 집계 함수 조건은 HAVING에서 다루는 경우가 많습니다.

DISTINCT

중복된 결과 행을 제거해 유일한 값만 보고 싶을 때 사용합니다.

  • DISTINCT는 선택한 컬럼 조합 전체를 기준으로 중복을 제거합니다.
  • GROUP BY와 비슷해 보이지만 집계 의도가 없다면 DISTINCT가 더 직접적입니다.

ALIAS

컬럼이나 테이블에 읽기 쉬운 별칭을 붙여 쿼리를 정리하는 기법입니다.

  • 컬럼 별칭은 결과 컬럼명을 명확하게 만들 때 유용합니다.
  • 테이블 별칭은 조인 쿼리에서 컬럼 출처를 짧게 구분할 때 가장 많이 씁니다.

산술연산자

`+`, `-`, `*`, `/`를 사용해 숫자 계산이나 파생 컬럼을 만들 수 있습니다.

  • 연산 순서는 일반 수학과 비슷하며 괄호로 우선순위를 명확히 줄 수 있습니다.
  • NULL과 계산하면 결과도 NULL이 되는 경우가 많아 NVL과 함께 보는 습관이 좋습니다.

비교연산자

`=`, `<>`, `>`, `<`, `>=`, `<=`, `BETWEEN`, `LIKE`, `IN` 등을 포함합니다.

  • 조건식은 WHERE, HAVING, CASE에서 계속 반복되므로 의미를 정확히 익혀야 합니다.
  • 문자 비교와 날짜 비교는 형 변환 여부까지 같이 보는 것이 안전합니다.

논리연산자

`AND`, `OR`, `NOT`으로 조건식을 결합하거나 반전시킵니다.

  • AND가 OR보다 먼저 계산되므로 복잡한 조건은 괄호로 묶는 것이 좋습니다.
  • 조건이 길어질수록 괄호와 들여쓰기로 읽기 쉽게 정리해야 실수를 줄일 수 있습니다.

실습 흐름 추천

  1. SELECT와 FROM만 먼저 실행해 기본 결과를 확인합니다.
  2. WHERE와 ORDER BY를 하나씩 붙이며 결과 행 수와 순서를 비교합니다.
  3. 집계가 필요하면 GROUP BY와 HAVING을 마지막에 붙여 결과 구조 변화를 확인합니다.
바로 이어서 해보려면

이론만 읽지 말고 바로 blacksql.sqld.kr에서 실행해보고, 문제 풀이 감각은 www.sqld.kr에서 이어가면 학습 속도가 훨씬 빨라집니다.

자주 묻는 질문

WHERE와 HAVING이 가장 자주 헷갈리는데 기준이 있나요?

집계 전 행 조건이면 WHERE, 집계 후 그룹 조건이면 HAVING으로 생각하면 대부분 정리됩니다.

SQL 기본은 어떤 순서로 연습하는 게 좋나요?

SELECT -> WHERE -> ORDER BY -> GROUP BY -> HAVING 순서로 붙여보며 결과가 어떻게 바뀌는지 직접 보는 방식이 가장 안정적입니다.