본문 바로가기
  • 코딩, 허쌤이 떠먹여 줄게
BackEnd/정보처리기사

정보처리기사 실기 SQL 기출 정리 (2020~2024)

by 허쌤 2026. 2. 4.

정보처리기사 실기 SQL 기출 정리 (2020~2024)

안녕하세요.
정보처리기사 실기 시험 기출문제 중 SQL 관련 문제들만 선별하여 정리한 자료입니다.

  • 범위: 2020년 개편 이후 ~ 2024년까지
  • 구성: 연도·회차별로 문제 요약 + 핵심 개념 + 정답 SQL/값
  • 목적: SQL 유형 파악 및 반복 학습용

1. 2020년 1회차 – STUDENT 학과 튜플 수

핵심 개념: SELECT, DISTINCT, COUNT(DISTINCT)

문제

STUDENT 테이블에는 다음과 같은 학생 정보가 저장되어 있다.

  • 컴퓨터과 학생: 50명
  • 인터넷과 학생: 100명
  • 사무자동화과 학생: 50명

DEPT 컬럼은 학생의 학과명을 나타낸다.

다음 SQL 문들의 실행 결과로 출력되는 튜플(행)의 수는 각각 몇 개인가?

SELECT DEPT FROM STUDENT;                      -- ① 전체 학과 출력 (중복 포함)
SELECT DISTINCT DEPT FROM STUDENT;            -- ② 중복 없는 학과명 출력
SELECT COUNT(DISTINCT DEPT)
FROM STUDENT
WHERE DEPT = '컴퓨터과';                       -- ③ 컴퓨터과만 필터링 후 학과 수 카운트
  • 조건

    • 컴퓨터과 50명, 인터넷과 100명, 사무자동화과 50명 (총 200명)
  • 정답
    1) SELECT DEPT FROM STUDENT;200
    2) SELECT DISTINCT DEPT FROM STUDENT;3
    3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과';1


2. 2020년 2회차 – 인덱스 생성

핵심 개념: CREATE INDEX

문제

다음은 학생(STUDENT) 테이블의 구조와 일부 데이터이다.

NAME 속성에 대해 IDX_NAME이라는 이름의 인덱스를 생성하는 SQL문을 작성하시오.

  • 조건: STUDENT 테이블 NAME 컬럼에 IDX_NAME 인덱스 생성

테이블 STUDENT (예시)

STID NAME SCORE DEPTID
1000 김이름 90 1
2000 허이름 95 2
3000 조이름 90 3
4000 장이름 95 4
CREATE INDEX IDX_NAME ON STUDENT(NAME);

3. 2020년 2회차 – IN 연산자 사용

핵심 개념: IN, 조건 조회

문제

다음은 학생(STUDENT) 테이블의 구조와 일부 데이터이다.

아래 조건을 만족하는 SQL문을 작성하시오.

  1. 3학년 또는 4학년 학생의 학번, 이름을 조회할 것
  2. 반드시 IN 연산자를 사용할 것
  • 조건
    • 3학년 또는 4학년 학생의 학번, 이름 조회
    • 반드시 IN 사용

테이블 STUDENT (예시)

학번 이름 학년 수강과목 점수 연락처
1000 김이름 1 수학 90 010-1111-2222
2000 장이름 2 과학 95 010-2222-2222
3000 허이름 3 미술 90 010-3333-3333
4000 조이름 4 음악 95 010-4444-4444
SELECT 학번, 이름
FROM STUDENT
WHERE 학년 IN (3, 4);

4. 2020년 3회차 – 컬럼 추가 (ALTER TABLE)

핵심 개념: ALTER TABLE ... ADD

문제

학생 테이블(학생)에 주소라는 새로운 속성을 추가하려 한다.
아래 SQL 문장의 빈칸을 채워 SQL 문을 완성하시오.

(          1          ) TABLE 학생 (          2          ) 주소 VARCHAR(20);
  • 조건: 학생 테이블에 주소 VARCHAR(20) 컬럼 추가
ALTER TABLE 학생 ADD 주소 VARCHAR(20);

5. 2020년 3회차 – 튜플 삭제

핵심 개념: DELETE ... WHERE

문제

다음은 학생 테이블의 일부 데이터이다.
이름이 '민수'인 튜플을 삭제하는 SQL문을 작성하시오.

  • 조건: 이름이 '민수'인 튜플 삭제

테이블 학생

학번 이름 점수 과목
1000 김정미 90 알고리즘
2000 강은미 95 데이터베이스
3000 홍길동 90 전산수학
4000 민수 95 운영체제
DELETE FROM 학생
WHERE 이름 = '민수';

6. 2020년 3회차 – GROUP BY / HAVING / LOWER

핵심 개념:
GROUP BY, HAVING, 대소문자 무시를 위한 LOWER, 집계함수(MIN, MAX, AVG)

문제

다음은 <성적> 테이블의 일부 데이터이다.

아래 조건을 모두 만족하는 SQL 문을 작성하시오.

  1. 대소문자 구분 없음
  2. WHERE 절 사용 금지
  3. 반드시 GROUP BY, HAVING 절 사용
  4. 점수 평균이 90 이상인 과목
  5. 출력 컬럼: 과목이름, 최소점수, 최대점수
  6. 출력 시 별칭(AS) 반드시 사용할 것
  7. 세미콜론(;)은 생략 가능
  • 조건
    • 대소문자 구분 없음
    • WHERE 절 사용 금지
    • GROUP BY, HAVING 필수
    • 점수 평균이 90 이상인 과목
    • 출력: 과목이름, 최소점수, 최대점수 (별칭 필수)

테이블 성적 (예시)

과목코드 과목이름 성적 점수
1000 컴퓨터과학 A+ 95
2000 운영체제 B+ 85
1000 컴퓨터 과학 B+ 85
2000 운영체제 B 80
SELECT LOWER(과목이름) AS 과목이름,
       MIN(점수)       AS 최소점수,
       MAX(점수)       AS 최대점수
FROM 성적
GROUP BY LOWER(과목이름)
HAVING AVG(점수) >= 90;

7. 2020년 4회차 – 학과별 튜플 수 집계

핵심 개념: GROUP BY, COUNT, 별칭에 작은따옴표

문제

다음은 학생 테이블의 일부 데이터이다.

아래 조건을 모두 만족하는 SQL문을 작성하시오.

  1. 학과별로 튜플 수(학생 수)를 집계할 것
  2. 대소문자 구분 없음
  3. WHERE 절 사용 금지
  4. GROUP BY 구문 사용 필수
  5. 집계 함수(COUNT 등) 사용 필수
  6. 별칭(AS) 사용 시 작은따옴표('')를 사용할 것
  7. 세미콜론(;) 생략 가능
  • 조건
    • 학과별로 튜플 수(학생 수)를 집계할 것
    • 대소문자 구분 없음
    • WHERE 절 사용 금지
    • GROUP BY 구문 사용 필수
    • 집계 함수(COUNT 등) 사용 필수
    • 별칭(AS) 사용 시 작은따옴표('')를 사용할 것
    • 세미콜론(;)은 생략 가능

테이블 학생 (예시)

학과 학생
전기 이순신
컴퓨터 안중근
컴퓨터 윤봉길
전자 이봉창
전자 강우규
SELECT 학과, COUNT(*) AS '학과별 튜플수'
FROM 학생
GROUP BY 학과;

8. 2021년 1회 – 논리 연산자 AND, OR

핵심 개념: AND / OR 평가 순서

테이블 급여

EMPNO SAL
100 1000
200 3000
300 1500

문제

다음은 급여 테이블의 일부 데이터이다.
다음 SQL 문을 실행했을 때 결과로 출력되는 튜플 수는 몇 개인가?

SELECT COUNT(*) FROM 급여
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
  • 조건을 해석하면:
    (EMPNO > 100 AND SAL >= 3000) OR (EMPNO = 200)
  • 정답 튜플 수: 1

9. 2021년 2회차 – LIKE / ORDER BY 내림차순

핵심 개념: LIKE '패턴', ORDER BY ... DESC

문제

다음은 '이름' 컬럼에서 '이'로 시작하는 문자열만 조회하고,
결과를 내림차순 정렬한 SQL문을 완성하는 문제이다.

아래 SQL문의 (1), (2)에 들어갈 알맞은 내용을 채우시오.

SELECT  *  FROM  테이블명
WHERE 이름 LIKE (      1      )
ORDER BY (      2      )
  • 조건
    • 이름이 '이'로 시작 ('이%')
    • 결과를 내림차순 정렬
SELECT *
FROM 테이블명
WHERE 이름 LIKE '이%'
ORDER BY 이름 DESC;

※ 문제 형식상 (2)에 DESC만 들어가는 형태.


10. 2021년 2회차 – JOIN ON 절

핵심 개념: JOIN ... ON, 조인 조건

문제

다음 SQL 보기에서 JOIN을 수행할 때, 괄호 안에 들어갈 알맞은 SQL 문장을 작성하시오.

SELECT ....
FROM 학생정보 a
JOIN 학과정보 b (      1      )
a.학과 = b.(      2      )
SELECT ...
FROM 학생정보 a
JOIN 학과정보 b ON a.학과 = b.학과;
  • (1) ON
  • (2) 학과

11. 2021년 2회차 – UPDATE / SET

핵심 개념: UPDATE, SET

문제

다음은 테이블의 데이터를 수정하려는 상황이다.
아래 SQL 보기에서 괄호 안에 알맞은 문장을 작성하시오.

(      1      ) 테이블명
(      2      ) 컬럼 = 값
WHERE 점수 >= 90;
UPDATE 테이블명
SET 컬럼 = 값
WHERE 점수 >= 90;
  • (1) UPDATE
  • (2) SET

12. 2021년 3회차 – CROSS JOIN + LIKE

핵심 개념: CROSS JOIN, 패턴 매칭 개수 세기

테이블 T1

CODE NAME
3258 Smith
4324 Allen
5432 Scott

테이블 T2 (RULE)

CODE RULE
12 s%
32 %t%

문제

테이블 T1, T2가 다음과 같을 때,
다음 SQL 문을 실행했을 때 CNT에 출력되는 값은 얼마인지 구하시오.

SELECT COUNT(*) CNT
FROM T1 A
CROSS JOIN T2 B
WHERE A.NAME LIKE B.RULE;
  • 정답: 4

13. 2022년 1회차 – ORDER BY / DESC

핵심 개념: 정렬

테이블 성적 (예시)

index name score
1 Kim 95
2 Gun 90
3 Son 80
4 Jung 60

문제

다음 SQL문에서 괄호 (1), (2), (3)에 들어갈 알맞은 SQL 키워드를 작성하시오.

SELECT name, score
FROM 성적 ( 1 ) BY ( 2 ) ( 3 )
SELECT name, score
FROM 성적
ORDER BY score DESC;
  • (1) ORDER
  • (2) score
  • (3) DESC

14. 2022년 2회차 – π 연산 (프로젝션)

핵심 개념: 관계대수 프로젝션

문제

다음은 성적/직급 정보를 가진 테이블이다.
이 테이블에 대해 πTTL(employee) 연산을 수행한 결과를 작성하시오.

테이블 employee

index Age TTL
1 55 부장
2 35 대리
3 42 과장
4 45 차장
  • 연산: πTTL(employee)
  • 결과
TTL
부장
대리
과장
차장

15. 2022년 2회차 – COUNT(col2) + NULL

핵심 개념:
COUNT(컬럼)NULL을 세지 않는다, IN 조건 평가

테이블 TABLE

index col1 col2
1 2 NULL
2 3 6
3 5 5
4 6 3
5 NULL 3

문제

다음은 TABLE의 일부 데이터이다.
아래 SQL의 실행 결과로 출력되는 값(카운트)을 구하시오.

SELECT COUNT(col2)
FROM TABLE
WHERE col1 IN (2, 3)
   OR col2 IN (3, 5);
  • 조건을 만족하는 행: 1~5번 중 1번을 제외한 2,3,4,5번
  • 이 중 col2가 NULL인 것은 1번뿐이므로, 집계되는 행 수는 4

정답: 4


16. 2022년 3회차 – STUDENT 학과 튜플 수 (유사 2020 1회)

핵심 개념: SELECT, DISTINCT, COUNT(DISTINCT)

문제

STUDENT 테이블에는 다음과 같은 학과 정보가 저장되어 있다.

  • 컴퓨터과 학생: 50명
  • 전기과 학생: 100명
  • 인터넷과 학생: 50명

DEPT 컬럼은 학과명이다.

아래 SQL문들의 실행 결과로 출력되는 튜플(행)의 수는 각각 몇 개인가?

(1) SELECT DEPT FROM STUDENT;

(2) SELECT DISTINCT DEPT FROM STUDENT;

(3) SELECT COUNT(DISTINCT DEPT)
    FROM STUDENT
    WHERE DEPT = '인터넷과';
  • 조건

    • 컴퓨터과 50명, 전기과 100명, 인터넷과 50명 → 총 200명
  • 정답
    1) SELECT DEPT FROM STUDENT;200
    2) SELECT DISTINCT DEPT FROM STUDENT;3
    3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '인터넷과';1


17. 2023년 1회 – GROUP BY / HAVING (특정 과목만)

핵심 개념: GROUP BY, HAVING, 집계함수, 별칭 + 작은따옴표

  • 조건
    • '데이터베이스' 과목만
    • WHERE 사용 금지
    • GROUP BY, HAVING 필수

문제

다음은 성적 테이블의 일부 데이터이다.

출력 결과는 다음과 같다.

과목이름 최소점수 최대점수
데이터베이스 89 92

다음 조건을 만족하는 SQL문을 작성하시오.

  1. 과목이름이 '데이터베이스'인 경우만 출력
  2. WHERE 구문 사용 금지
  3. 반드시 GROUP BYHAVING을 사용할 것
  4. MIN, MAX 등 집계함수 사용
  5. SELECT 절에는 별칭(AS)을 사용하고, 작은따옴표로 감쌀 것
  6. SQL 문 끝의 세미콜론은 생략 가능

테이블 성적 (예시)

순번 과목이름 점수
1 데이터베이스 89
2 데이터베이스 92
3 네트워크 88
4 소프트웨어 91
5 네트워크 89
6 소프트웨어 85
SELECT 과목이름 AS '과목이름',
       MIN(점수) AS '최소점수',
       MAX(점수) AS '최대점수'
FROM 성적
GROUP BY 과목이름
HAVING 과목이름 = '데이터베이스';

18. 2023년 1회차 – 튜플 삭제 (이름 조건)

핵심 개념: DELETE ... WHERE

테이블 학생 (예시)

순번 학년 이름
1 1 종현
2 2 민수
3 2 수연
4 3 수지

문제

다음은 [학생] 테이블의 일부 데이터이다.
다음 조건을 만족하는 SQL문을 작성하시오.

  1. 이름이 '민수'인 튜플을 삭제할 것
  2. 문자열 값은 작은따옴표(')로 감쌀 것
  3. SQL 마지막에 세미콜론(;)은 생략 가능
DELETE FROM 학생
WHERE 이름 = '민수';

20. 2024년 1회 – 서브쿼리 + IN

핵심 개념: 서브쿼리, IN

테이블 R1

A B C
1 a x
2 b x
1 c w
3 d w

테이블 R2

C D E
x k 3
y k 3
z s 2

문제

다음은 두 개의 테이블 R1, R2와 SQL문이다.
해당 SQL문의 실행 결과로 출력되는 값을 표로 작성하시오.

SELECT B
FROM R1
WHERE C IN (SELECT C FROM R2 WHERE D = 'k');
  • R2에서 D='k' 인 C는 x
  • R1에서 C='x' 인 행의 B: a, b
  • 결과
B
a
b

21. 2024년 1회차 – COUNT(*) (2021 1회와 동일 유형)

핵심 개념: 논리 연산자 결합

테이블 TABLE

EMPNO SAL
100 1000
200 3000
300 1500

문제

다음은 TABLE의 데이터와 SQL문이다.
해당 SQL문의 실행 결과로 출력되는 값을 작성하시오.

SELECT COUNT(*) FROM TABLE
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
  • 결과 튜플 수: 1

22. 2024년 2회 – INSERT / SELECT / FROM / UPDATE SET

핵심 개념: INSERT ... VALUES, INSERT ... SELECT, SELECT ... FROM, UPDATE ... SET

테이블 구조

  • 사원: 사원번호(PK), 이름, 나이, 부서
  • 부서: 사원번호(PK), 이름, 주소, 나이

문제

다음은 SQL 구문에 관한 문제이다.
아래 테이블과 SQL 문장을 참고하여, 각 문장의 빈칸 (①~④)에 들어갈 알맞은 SQL 키워드를 작성하시오.

1) 신입 사원 추가

INSERT INTO 사원 (사원번호, 이름, 주소, 부서)
VALUES (32431, '정실기', '서울', '영업');

2) 사원 테이블에서 검색해 부서 테이블에 추가

INSERT INTO 부서 (사원번호, 이름, 나이, 부서)
SELECT 사원번호, 이름, 나이, 23
FROM 사원
WHERE 이름 = '정실기';

3) 전체 사원 조회

SELECT *
FROM 사원;

4) 퇴사로 인해 부서 값을 '퇴사'로 변경

UPDATE 사원
SET 부서 = '퇴사'
WHERE 사원번호 = 32431;
  • (①) VALUES / (②) SELECT / (③) FROM / (④) SET

23. 2024년 3회차 – JOIN + 서브쿼리 + GROUP BY HAVING

핵심 개념:
JOIN, 서브쿼리 안의 GROUP BY ... HAVING COUNT(*) < 2, IN

테이블 employee

no first_name last_name project_id
1 John Doe 10
2 Jim Carry 20
3 Rachel Redmond 10

테이블 project

project_id name
10 Alpha
20 Beta
10 Gamma

문제

다음은 employee, project 테이블이다.
아래 SQL문의 실행 결과로 출력되는 행 수를 구하시오.

SELECT COUNT(*)
FROM employee AS e
JOIN project AS p
  ON e.project_id = p.project_id
WHERE p.name IN (
    SELECT name
    FROM project p
    WHERE p.project_id IN (
        SELECT project_id
        FROM employee
        GROUP BY project_id
        HAVING COUNT(*) < 2
    )
);
  • 정답 튜플 수: 1