SQL SELECT 완전 정복 - WHERE, ORDER BY, GROUP BY, 집계함수

DBSQLSELECT
읽는데 10분 소요
처음 쓰여진 날: 2026-03-30
마지막 수정일: 2026-03-30
조회수: 5

요약

SQL SELECT 문의 WHERE, IN, LIKE, ORDER BY, DISTINCT, 집계함수(COUNT, SUM, AVG, MIN, MAX), GROUP BY, HAVING, UNION을 정보처리기사 실기 기출문제와 함께 학습합니다.

SELECT 핵심 정리

SELECT는 DML(데이터 조작어)에 속하는 명령어로, 테이블1에서 데이터를 조회할 때 사용합니다.

아래 표는 SQL 작성 순서 기준입니다. 실행 순서는 이와 다릅니다(아래 "SQL 실행 순서" 참고).

역할키워드
SELECT조회할 컬럼2 지정DISTINCT, 집계함수3, AS(별칭4)
FROM조회할 테이블 지정-
WHERE5 필터링 (조건)=, IN, LIKE, BETWEEN, AND, OR
GROUP BY그룹화6-
HAVING그룹 조건 필터링집계함수 조건
ORDER BY정렬ASC(오름차순), DESC(내림차순)

SQL 실행 순서

SQL문은 작성 순서와 실행 순서가 다릅니다.

text
코드 하이라이팅 중...

시험에서 실행 결과를 구할 때, 이 순서대로 단계별로 풀면 됩니다.



SELECT 기본 구문

sql
코드 하이라이팅 중...

모든 컬럼을 조회하려면 *(와일드카드7)를 사용합니다.

sql
코드 하이라이팅 중...

WHERE - 조건으로 행 필터링

sql
코드 하이라이팅 중...

비교 연산자

연산자의미예시
=같다WHERE DEPT = '개발'
!= 또는 <>같지 않다WHERE DEPT != '영업'
>, <크다, 작다WHERE SAL > 3000
>=, <=크거나 같다, 작거나 같다WHERE SAL >= 3000

IN - 여러 값 중 하나와 일치

sql
코드 하이라이팅 중...

컬럼명 = 값1 OR 컬럼명 = 값2 OR 컬럼명 = 값3과 같은 의미입니다.

예시:

sql
코드 하이라이팅 중...

LIKE - 패턴 매칭

sql
코드 하이라이팅 중...
와일드카드의미예시
%0개 이상의 임의 문자'개%' → 개, 개발, 개발팀 모두 일치 (0개도 포함)
_정확히 1개의 임의 문자'_감자' → 아무 글자 1개 + 감자 (총 3글자)

LIKE 패턴 예시:

패턴의미일치하는 값
'S%'S로 시작SMITH, SCOTT
'%T%'T를 포함SMITH, SCOTT
'_미%'두번째 글자가 미김미정, 이미란

BETWEEN - 범위 조건

sql
코드 하이라이팅 중...

값1 이상 값2 이하와 같은 의미입니다 (양 끝값 포함).

예시:

sql
코드 하이라이팅 중...


AND / OR 우선순위

sql
코드 하이라이팅 중...

위 조건은 AND가 먼저 평가되어 아래와 같이 해석됩니다.

sql
코드 하이라이팅 중...

각 행별 조건 평가 예시:

EMPNOSALEMPNO > 100 AND SAL > 3000EMPNO = 200최종 (OR)
1001000FALSEFALSEFALSE
2003000FALSETRUETRUE
3001500FALSEFALSEFALSE

EMPNO=200 행에서 SAL=3000이지만 조건은 SAL > 3000(초과)이므로 FALSE입니다. 3000은 3000보다 크지 않습니다. EMPNO > 100 AND SAL > 3000이 FALSE이더라도 EMPNO = 200이 TRUE이면 OR로 최종 TRUE가 됩니다.


ORDER BY - 정렬

sql
코드 하이라이팅 중...
옵션의미
ASC오름차순 (기본값, 생략 가능)
DESC내림차순

여러 컬럼으로 정렬할 때는 쉼표로 구분합니다. 앞에 쓴 컬럼이 먼저 정렬되고, 앞 컬럼 값이 같은 행끼리는 다음 컬럼으로 정렬합니다.

sql
코드 하이라이팅 중...

정렬 전/후 비교:

정렬 전 원본 데이터:

부서위치부서명
서울개발
부산영업
서울기획
부산총무

ORDER BY 부서위치 DESC, 부서명 DESC 적용 후:

부서위치부서명
서울기획
서울개발
부산총무
부산영업

부서위치를 내림차순(서울 → 부산)으로 먼저 정렬하고, 부서위치가 같은 "서울" 행끼리는 부서명을 내림차순(기획 → 개발)으로 정렬합니다.



DISTINCT - 중복 제거

sql
코드 하이라이팅 중...

조회 결과에서 중복된 값을 제거합니다.

예시:

감자(GAMJA) 테이블에 알감자 10개, 왕감자 30개, 돼지감자 50개가 있을 때:

sql
코드 하이라이팅 중...

집계 함수

함수설명
COUNT(*)모든 행의 개수 (NULL8 포함)
COUNT(컬럼명)NULL이 아닌 값의 개수
SUM(컬럼명)합계
AVG(컬럼명)평균
MIN(컬럼명)최솟값
MAX(컬럼명)최댓값

예시:

C1C2
2NULL
36
23
NULL5
45
sql
코드 하이라이팅 중...


GROUP BY + HAVING

GROUP BY - 그룹화

지정한 컬럼의 값이 같은 행끼리 묶어서 그룹별로 집계합니다.

sql
코드 하이라이팅 중...

HAVING - 그룹 조건 필터링

GROUP BY로 만든 그룹에 조건을 걸어 필터링합니다.

sql
코드 하이라이팅 중...

예시 (단계별):

원본 데이터(회사 테이블):

부서명부서인원
개발5
영업8
개발7
총무3
영업4
sql
코드 하이라이팅 중...

단계별 처리 과정:

1단계 GROUP BY 부서명 후 집계:

부서명SUM(부서인원)
개발12
영업12
총무3

2단계 HAVING SUM(부서인원) >= 10 필터링 후 최종 결과:

부서명부서인원합계
개발12
영업12

별칭 (AS)

조회 결과의 컬럼명에 임시 이름(별칭)을 지정합니다. AS는 생략 가능합니다. 별칭은 출력 화면에만 적용되며, 같은 쿼리의 WHERE/HAVING 절에서는 사용할 수 없습니다.

sql
코드 하이라이팅 중...


UNION - 집합 연산

두 개의 SELECT 결과를 합칩니다. JOIN은 두 테이블을 좌우(컬럼 방향)로 합치지만, UNION은 두 쿼리의 결과를 위아래(행 방향)로 합칩니다.

연산집합 개념설명
UNION합집합9두 결과 합치기 (중복 제거)
UNION ALL합집합두 결과 합치기 (중복 포함)
INTERSECT교집합10두 결과 모두에 있는 행만
EXCEPT차집합11첫 번째 결과에서 두 번째 결과를 뺀 행
sql
코드 하이라이팅 중...

UNION은 중복을 제거합니다. 위 쿼리에서 T1과 T2에 같은 값이 있으면 한 번만 나타납니다.

주의: 두 SELECT문의 컬럼 수와 데이터 타입이 일치해야 합니다. 일치하지 않으면 오류가 발생합니다.

INTERSECT / EXCEPT 예시:

sql
코드 하이라이팅 중...

정보처리기사 실기 대비 문제






Footnotes

  1. 테이블(Table): 행과 열로 구성된 데이터 저장 구조. 관계형 DB에서 릴레이션(Relation)이라고도 합니다.

  2. 컬럼(Column): 테이블에서 세로 방향의 데이터 항목. 속성(Attribute)이라고도 합니다. 예: 이름, 나이, 부서명.

  3. 집계함수: COUNT, SUM, AVG, MIN, MAX처럼 여러 행의 값을 하나의 결과로 계산하는 함수.

  4. 별칭(Alias): 조회 결과 컬럼명에 임시로 붙이는 이름. AS 키워드로 지정하며 AS는 생략 가능합니다.

  5. 행(Row): 테이블에서 가로 방향의 데이터 한 건. 튜플(Tuple)이라고도 합니다. 예: 홍길동/25/개발팀.

  6. 그룹화: 특정 컬럼의 값이 같은 행끼리 묶어 집계 계산을 적용하는 것.

  7. 와일드카드(Wildcard): "모두"를 의미하는 특수 기호. SELECT *에서 *는 "모든 컬럼"을 뜻합니다.

  8. NULL: 값이 없음(미입력)을 의미하는 특수 값. 0이나 공백('')과는 다릅니다.

  9. 합집합: A와 B 둘 다를 합친 결과. UNION은 중복을 자동 제거합니다.

  10. 교집합: A와 B 모두에 속하는 결과만 반환합니다.

  11. 차집합: A에는 있지만 B에는 없는 결과만 반환합니다. Oracle에서는 EXCEPT 대신 MINUS를 사용합니다.


관련 글

(20개)
제목태그시험
SQL DDL과 DCL - 테이블 정의와 권한 관리
DCL
-
SQL DML - INSERT, UPDATE, DELETE로 데이터 조작하기
DML
-
SQL JOIN과 서브쿼리 - 테이블 결합과 중첩 질의
서브쿼리
-
학습 경로
범위: 1단계