SQL 기초 문법 정리
개발자·데이터 분석가·정보처리기사 응시자를 위한 SQL 핵심 문법을 한 장씩 정리했습니다. SELECT·JOIN·GROUP BY·서브쿼리·윈도우 함수·트랜잭션까지 실무와 시험 모두에서 자주 마주치는 주제를 중심으로 구성했고, 각 카드에 실제 쿼리 예시와 주의점을 담았습니다.
수록 문항
총 18개아래 문항들은 이 학습지에 수록된 카드입니다. 각 카드는 문제(Q)와 답(A)으로 구성되어 있으며, 일부 카드에는 추가 해설이 포함되어 있습니다. 로그인하면 이 학습지를 내 계정으로 복사해 카드를 한 장씩 넘기며 반복 학습할 수 있고, 숙달한 카드는 완료 표시하여 다음 세션에서 제외할 수 있습니다.
-
#1Q.
테이블에서 모든 컬럼을 조회하는 SQL
A.SELECT * FROM 테이블명;
운영 DB에서 *는 성능·유지보수 관점에서 지양하고, 필요한 컬럼만 명시하는 것이 좋다. -
#2Q.
조건을 걸어 특정 행만 조회하는 절
A.WHERE
AND·OR·IN·BETWEEN·LIKE 같은 연산자와 결합해 복합 조건을 만든다. -
#3Q.
중복 행을 제거하고 조회하는 키워드
A.DISTINCT
SELECT DISTINCT col FROM t 형태로 사용. 성능 비용이 있어 인덱스·GROUP BY와 비교해 선택한다. -
#4Q.
두 테이블의 공통 행을 결합하는 조인
A.INNER JOIN
기준 컬럼이 양쪽에 모두 존재할 때만 행이 반환된다. 기본 JOIN 키워드만 써도 동일. -
#5Q.
왼쪽 테이블의 모든 행을 보존하는 조인
A.LEFT OUTER JOIN
오른쪽에 매칭이 없으면 NULL로 채워진다. 누락 데이터 탐지에 자주 쓰인다. -
#6Q.
여러 행을 묶어 집계하는 절
A.GROUP BY
SELECT에 등장하는 비집계 컬럼은 모두 GROUP BY에 포함되어야 한다. -
#7Q.
집계 결과에 조건을 거는 절 (WHERE와 구분)
A.HAVING
WHERE는 행 단위 필터, HAVING은 그룹 단위 필터. 순서는 WHERE → GROUP BY → HAVING. -
#8Q.
조회 결과를 정렬하는 절
A.ORDER BY
ASC(기본)·DESC 지정 가능. 여러 컬럼을 콤마로 나열해 다단계 정렬도 가능. -
#9Q.
결과 행 수를 제한하는 구문 (Postgres/MySQL)
A.LIMIT
LIMIT 10 OFFSET 20 형태로 페이지네이션. 대용량에서는 keyset pagination을 검토. -
#10Q.
테이블 내 새 행을 추가하는 명령
A.INSERT INTO
INSERT INTO t (c1, c2) VALUES (...). 다중 행 삽입은 VALUES를 콤마로 나열. -
#11Q.
기존 행을 수정하는 명령
A.UPDATE
WHERE 절을 빠뜨리면 모든 행이 갱신되므로 반드시 확인. 트랜잭션으로 감싸는 것이 안전. -
#12Q.
행을 삭제하는 명령
A.DELETE
DELETE FROM t WHERE ... 형태. 전체 삭제는 TRUNCATE가 더 빠르나 트리거·롤백 특성이 다르다. -
#13Q.
SELECT 결과를 다른 쿼리의 조건·소스로 쓰는 기법
A.서브쿼리 (Subquery)
스칼라 서브쿼리·인라인 뷰·상관 서브쿼리로 나뉜다. EXISTS가 IN보다 효율적인 경우가 많다. -
#14Q.
행별로 순위·누적 합계 등을 계산하는 함수 군
A.윈도우 함수
ROW_NUMBER(), RANK(), SUM() OVER (PARTITION BY ...) 형태. GROUP BY와 달리 행 단위 유지. -
#15Q.
DB 조회 성능을 높이기 위해 컬럼에 설정하는 자료구조
A.인덱스 (Index)
B-Tree가 기본. 쓰기 성능·디스크 비용이 늘어나므로 조회 패턴에 맞춰 선택적으로 생성. -
#16Q.
일련의 SQL을 원자적으로 실행하기 위한 단위
A.트랜잭션 (Transaction)
BEGIN → COMMIT/ROLLBACK. ACID 속성을 보장. 장기 트랜잭션은 락 경합을 일으킬 수 있어 짧게 유지. -
#17Q.
NULL을 다른 값으로 치환하는 표준 함수
A.COALESCE
COALESCE(col, 0)처럼 사용. Oracle은 NVL, MSSQL은 ISNULL이 유사 기능. -
#18Q.
두 SELECT의 결과를 행 단위로 합치는 집합 연산자
A.UNION
UNION은 중복 제거, UNION ALL은 중복 유지(더 빠름).
이 학습지를 효과적으로 활용하는 방법
- ① 처음에는 전체 문항을 한 번씩 훑어보며 익숙한 항목과 낯선 항목을 분류하세요.
- ② 학습 세션에서 "안 외운 문항만" 옵션으로 아직 숙달하지 못한 카드에 집중합니다.
- ③ 랜덤 순서 학습을 활용해 카드 순서에 의존한 암기를 방지하세요.
- ④ 키보드 단축키(1·2·A·D·Space)를 쓰면 한 손으로도 빠르게 복습할 수 있습니다.
- ⑤ 복사(Fork)한 학습지에는 자유롭게 나만의 해설이나 예문을 덧붙여 내 스타일로 다듬어 보세요.