현재 선택한 정보처리 과정

정보처리기사 실기 이론 학습

이론 목록으로 돌아가기

SELECT·조건·정렬·중복

SELECT의 논리 처리 순서를 따라 결과 행을 줄이고 정렬한다.

예상 읽기 3

실기 학습 목표

SELECT의 논리 처리 순서를 따라 결과 행을 줄이고 정렬한다.

핵심 이론

기본 흐름은 FROM/JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY이다. 실제 DB 실행 계획과 논리적 의미 순서를 혼동하지 않는다.

WHERE는 조건 결과가 TRUE인 행만 남긴다. 비교·BETWEEN·IN·LIKE와 AND/OR의 괄호를 확인한다. BETWEEN은 양끝을 포함한다.

DISTINCT는 선택된 열 조합의 중복을 제거한다. ORDER BY가 없으면 행 순서를 보장하지 않는다. 동률까지 순서를 요구하면 추가 정렬 키가 필요하다.

NULL은 =NULL로 검사하지 않고 IS NULL/IS NOT NULL을 쓴다. LIKE의 %는 0개 이상 문자, _는 한 문자다. 문자 정렬·NULL 정렬 위치 등 DBMS별 조건은 문제의 명시를 따른다.

개념 도식

좌우로 이동해 그림을 확인하세요.그림 크게 보기
SELECT·조건·정렬·중복의 관계와 흐름을 보여 주는 도식
SELECT·조건·정렬·중복의 관계와 흐름을 보여 주는 도식

SQL은 행 선택과 열 선택을 나눠 계산한다

학습용 논리 순서는 FROM → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY다. 실제 DBMS의 물리 실행 순서를 뜻하는 것은 아니다. 간단한 SELECT도 원본 표에서 WHERE를 만족하는 행을 먼저 표시하고, 그 행에서 요구 열을 꺼내야 중복과 정렬을 정확히 셀 수 있다.

예를 들어 (A,10)·(A,20)·(B,5) 중 값이 10 이상인 행은 앞의 두 개다. 분류 열만 SELECT하면 A가 두 번 나오고 DISTINCT를 붙이면 한 번 나온다. 조건을 만족하는 행 수 2와 최종 결과 행 수 1은 다르다.

AND는 양쪽이 모두 참이어야 하고 OR는 한쪽만 참이어도 통과한다. 괄호를 먼저 적용하며 일반적으로 AND가 OR보다 우선한다. NULL 비교 결과가 UNKNOWN이면 WHERE를 통과하지 않는다. NULL 확인에는 IS NULL을 쓴다.

LIKE에서 %는 길이 0 이상 문자열, _는 문자 하나에 대응한다. 리터럴 밑줄을 찾는 문제라면 ESCAPE 조건을 확인한다. ORDER BY는 첫 기준이 같을 때 다음 기준을 사용한다. DESC·ASC를 열마다 따로 적어 비교하고, ORDER BY 없는 결과에 임의의 행 순서를 단정하지 않는다.

풀이 예시

아래 테이블에 대해 SQL을 실행한 결과를 열의 순서대로 쓰시오. NULL은 NULL로 표기한다.

[Signal]

idreadydelay
119
2012
31NULL
403
512

[실행할 SQL]

SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
SELECT id FROM Signal WHERE (ready=1 AND delay<=5) OR delay IS NULL ORDER BY id;

예시 정답

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
3
5

풀이 과정

3번은 delay IS NULL을 만족한다. 5번은 ready=1이면서 delay<=5이다. 4번의 지연은 짧아도 ready=0이므로 제외된다.

답안 점검

위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.