정보처리기사 실기 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문을 작성하시오.
- 3학년 또는 4학년 학생의 학번, 이름을 조회할 것
- 반드시
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 문을 작성하시오.
- 대소문자 구분 없음
WHERE절 사용 금지- 반드시
GROUP BY,HAVING절 사용 - 점수 평균이 90 이상인 과목
- 출력 컬럼: 과목이름, 최소점수, 최대점수
- 출력 시 별칭(
AS) 반드시 사용할 것 - 세미콜론(;)은 생략 가능
- 조건
- 대소문자 구분 없음
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문을 작성하시오.
- 학과별로 튜플 수(학생 수)를 집계할 것
- 대소문자 구분 없음
WHERE절 사용 금지GROUP BY구문 사용 필수- 집계 함수(
COUNT등) 사용 필수 - 별칭(
AS) 사용 시 작은따옴표('')를 사용할 것 - 세미콜론(;) 생략 가능
- 조건
- 학과별로 튜플 수(학생 수)를 집계할 것
- 대소문자 구분 없음
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문을 작성하시오.
- 과목이름이
'데이터베이스'인 경우만 출력 WHERE구문 사용 금지- 반드시
GROUP BY와HAVING을 사용할 것 MIN,MAX등 집계함수 사용SELECT절에는 별칭(AS)을 사용하고, 작은따옴표로 감쌀 것- 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문을 작성하시오.
- 이름이
'민수'인 튜플을 삭제할 것 - 문자열 값은 작은따옴표(')로 감쌀 것
- 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
'BackEnd > 정보처리기사' 카테고리의 다른 글
| C언어 기출문제 정리 (2022년~2024년) - 정보처리기사 (0) | 2026.02.09 |
|---|---|
| 정보처리기사 실기 예상 문제 모음 - 네트워크/시스템 (0) | 2026.02.05 |
| 정보처리기사 실기시험 해설 (0) | 2026.02.02 |
| 정보처리기사 실기시험 문제 (0) | 2026.02.02 |
| 정보처리기사 필기시험 정답 및 해설 (0) | 2026.01.27 |