
[20년 1회]
6. STUDENT 테이블에서 컴퓨터과 학생 50명, 인터넷과 학생 100명, 사무자동화과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는? (단, DEPT 칼럼은 학과명이다.)
( 1 ) SELECT DERP FROM STUDENT
( 2 ) SELECT DISTINCT DEPT FROM STUDENT;
( 3 ) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과';
| 답: (1) 200 (2) 3 (3) 1 ( 1 ) SELECT DERP FROM STUDENT : STUDENT 테이블에서 학과명(DEPT)을 전부 다 가져와라 → 50 + 100 +50 = 200 ( 2 ) SELECT DISTINCT DEPT FROM STUDENT : 학과명(DEPT)을 가져오되, 중복된 이름은 딱 하나씩만 남겨라 → 컴퓨터과, 인터넷과, 사무자동화과 총 3개 ( 3 ) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과' : 학과가 '컴퓨터과'인 학생들 중에서, 중복을 제거한 학과명의 개수를 세어라 → WHERE DEPT = '컴퓨터과' : 일단 '컴퓨터과' 학생 50명만 골라냄 → DISTINCT DEPT : 그 50명의 학과명은 모두 '컴퓨터과'로 똑같으니, 중복을 제거하면 '컴퓨터과' 딱 1개만 남음 → COUNT : 그 남은 개수를 세면 1 |
[26년 1회]
9. 아래 조건을 참고하여 각 SQL 구문을 실행했을 때 반환되는 행(Row)의 수를 쓰시오.
(단, DEPT 칼럼은 학과명이다.)
[테이블 조건]
STUDENT 테이블에는 다음 세 학과의 학생 정보가 저장되어 있다.
컴퓨터과 50명 · 인터넷과 100명 · 사무자동화과 50
[SQL 구문]
1. SELECT DEPT FROM STUDENT;
2. SELECT DISTINCT DEPT FROM STUDENT;
3. SELECT COUNT(DISTINCT DEPT) FROM STUDENT
WHERE DEPT = '컴퓨터과';
| 답: 1. 200 2. 3 3. 1 |
[20년 2회]
6. 학생 테이블은 학번, 이름, 학년, 수강과목, 점수, 연락처를 속성으로 가진다. 아래 조건을 만족하는 SQL문을 작성하시오.

[조건]
- 학생 테이블에서 3,4학년인 학번, 이름을 조회한다.
- IN 연산자 사용해야 한다.
| 답: SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3,4); - 학생 테이블에서 3,4학년인 학번, 이름을 조회한다. - IN 연산자 사용해야 한다. 조회한다 : SELECT 학번, 이름을 조회한다. : SELECT 학번, 이름 테이블에서 : FROM 학생 테이블에서 : FROM 학생 3,4학년인(IN연산자 사용) : WHERE 학년 IN (3,4) |
[20년 2회]
12. 학생 테이블의 name속성에 IDX_NAME 이름으로 인덱스 생성하는 SQL문을 작성하시오.

| 답: CREATE INDEX IDX_NAME ON 학생(NAME); 학생 테이블의 name속성에 IDX_NAME 이름으로 인덱스 생성 생성 : CREATE 인덱스 생성 : CREATE INDEX IDX_NAME 이름으로 인덱스 생성 : CREATE INDEX IDX_NAME 테이블 : ON 학생 테이블 : ON 학생 학생 테이블 의 name속성에 : ON 학생(NAME) |
[20년 3회]
8. 다음 조건을 만족하면서, 과목별 점수의 평균이 90이상인 과목이름, 최소점수, 최대점수를 구하는 SQL문을 작성하시오.

[조건]
- 대소문자를 구분하지 않는다.
- WHERE 구분을 사용하지 않는다.
- GROUP BY, HAVING구문을 반드시 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다.
| 답: SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >= 90; 과목별 점수의 평균이 90이상인 과목이름, 최소점수, 최대점수를 구하는 SQL [결과]에서 나온 것을 토대로 SELECT문을 작성한다. 과목이름, 최소점수, 최대점수 : SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 - MIN(점수) 에서 점수는 [성적] 테이블에서 가져올 항목이다. 불러올 테이블을 작성한다. FROM 성적 조건에서 GROUP BY절을 쓰라고 했으므로, 조건식은 GROUP BY절을 사용한다. 과목별 : GROUP BY 과목이름 점수의 평균이 90이상 : HAVING AVG(점수) >= 90 |
[20년 3회]
9. 학생 테이블에서 이름이 민수인 튜플을 삭제하는 SQL문을 작성하시오

| 답: DELETE FROM 학생 WHERE 이름 = '민수'; 학생 테이블에서 이름이 민수인 튜플을 삭제 삭제 : DELECT 학생 테이블 : FROM 학생 이름이 민수 : WHERE 이름 = '민수' |
[20년 3회]
20. 학생 테이블에 주소 속성을 추가하는 SQL문을 작성하시오.
( 1 ) TABLE 학생 ( 2 ) 주소 VARCHAR(20);
| 답: (1) ALTER (2) ADD |
[20년 4회]
16. 다음 조건을 만족하면서 학과별로 튜플 수가 얼마인지 구하는 SQL문을 작성하시오.

[조건]
- 대소문자를 구분하지 않는다.
- WHERE 구문을 사용하지 않는다.
- GROUP BY 를 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다. (별칭 사용 시 별칭은 작은 따옴표를 써야 함)
- 집계 함수를 사용해야 한다.
| 답: SELECT 학과, COUNT(학과) AS 학과별튜플수 FROM 학생 GROUP BY 학과; 학과별로 튜플 수가 얼마인지 구하는 SQL문 ![]() 시작은 SELECT 문으로 학과를 기준으로 결과가 나와있으므로 → SELECT 학과 학과별튜플수 별칭이 되어있고, 결과값을 보면 집계함수(개수, COUNT)를 써서 출력됐으므로 → SELECT 학과 COUNT(학과) AS 학과별튜플수 어떤 테이블에서 가져올지를 정해야한다. → FROM 학생 '학과별로' 라고 조건을 지정했고, [조건]에서 GROUP BY를 사용하라고 했으므로 → GROUP BY 학과 |
[21년 1회]
6. 다음 SQL 실행 결과를 숫자만 쓰시오.

[SQL] SELECT COUNT(*) FROM 급여 WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
| 답: 1 SELECT COUNT(*) FROM 급여 WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200; SELECT COUNT(*) : 모든 값들을 세린다. 카운팅 FROM 급여 : 급여 테이블에서 WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200; EMPNO > 100 이고(AND) ![]() SAL >= 3000 이거나(OR) EMPNO = 200; ![]() 결과적으로 ![]() 즉, 한 개가 선택되므로, COUNT(*) 하면 1이 된다. |
[21년 2회]
5. 다음은 테이블을 수정할때의 상황입니다. SQL 보기에서 괄호안에 알맞는 문장을 작성하시오.
( 1 ) 테이블명 ( 2 ) 컬럼 = 값 WHERE 점수 >= 90;
| 답: (1) UPDATE (2) SET |
[21년 2회]
6. 다음 SQL 보기에서 JOIN할 경우 괄호안에 알맞는 문장을 작성하시오.
SELECT .... FROM 학생정보 a JOIN 학과정보 b ( 1 ) a.학과 = b.( 2 )
| 답: (1) ON (2) 학과 |
[21년 2회]
10. SQL문에서 괄호안에 알맞은 답안을 작성하시오.

SELECT .... FROM ... WHERE '이름' LIKE ( 1 ) ORDER BY '컬럼명' ( 2 )
| 답: (1) 이% (2) DESC % : 0개 이상의 모든 문자 _ : 딱 한 글자만 대신 ASC : 오름차순(생략가능) DESC : 내림차순 |
[21년 3회]
13. 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.

| 답: 4 SELECT COUNT(*) CNT FROM T1 A CROSS JOIN T2 B WHERE A.NAME LIKE B.RULE SELECT COUNT(*) CNT : 개수를 세려라. → CNT는 별칭으로 출력하면 CNT가 이름이 된다. (AS가 없어도 별칭을 쓸 수 있다.) FROM T1 A CROSS JOIN T2 B : T1 과 T2의 테이블을 크로스 조인해라. → 크로스 조인(곱셈)은 모든 조합의 경우의 수를 말한다. → T1 A, T2 B 에서 A와 B는 별칭이다. = 4개 |
[22년 1회]
4. 다음 SQL 결과에 알맞는 쿼리을 작성하시오.

SELECT name, score FROM 성적 ( 1 ) BY ( 2 ) ( 3 )
| 답: (1) ORDER (2) score (3) DESC ORDER BY ( ): 순서를 정렬해라. ( ) 기준으로 ASC : 오름차순 (생략가능) DESC : 내림차순 성적테이블의 score 가 내림차순 되어있다. 내림차순 : 큰 수 → 작은 수 (점점 작아짐) 오름차순 : 작은 수 → 큰 수 (점점 커짐) |
[22년 2회]
3. H회사의 전체 제품 단가 보다 큰 제품 출력을 하고자 한다. 괄호안에 들어갈 알맞는 용어를 작성하시오.

SELECT 제조사, 제품명, 단가
FROM 제품
WHERE 단가 > ( ) (SELECT 단가 FROM 제품 WHERE 제조사='H')
| 답: ALL ALL : 모든 조건 만족 - 나머지 전부보다 커야함, 최대값(MAX)보다 큰지 확인 ANY : 하나라도 만족 - 그중 누구라도 하나보다만 크면 됨, 최소값(MIN)보다 큰지 확인 IN : 목록에 포함 - 이 리스트 안에 있는 값이랑 똑같아야함, OR연산의 반복 EXISTS : 서브쿼리의 결과가 존재하는지만 확인 DISTINCT : 중복 제거 그룹 함수 - COUNT( ) : 개수 - SUM( ) : 합계 - AVG( ) : 평균 - MAX( ) / MIN( ) : 최대/최소 |
[22년 2회]
4. 다음 SQL 결과에 알맞는 답을 작성하시오.

SELECT count(col2)
FROM TABLE
WHERE col1 in(2,3) or col2 in(3,5);
| 답: 4 COUNT : NULL 값을 제외하고 개수를 세림 col1 in(2,3) ![]() col2 in(3,5) ![]() WHERE col1 in(2,3) or col2 in(3,5) ![]() ![]() |
[22년 3회]
7. 아래 데이터 명령어를 적용할 경우 알맞는 출력값을 작성하시오.
CREATE TABLE 부서 (
부서코드 int,
부서명 varchar(50),
PRIMARY KEY (부서코드),
FOREIGN KEY (부서코드)
REFERENCES 직원(부서코드)
ON DELETE CASCADE
);
CREATE TABLE 직원 (
직원코드 int,
부서코드 int,
PRIMARY KEY (직원코드),
FOREIGN KEY (부서코드)
REFERENCES 부서(부서코드)
);
INSERT INTO 부서 (부서코드, 부서명) VALUES (10, '영업부');
INSERT INTO 부서 (부서코드, 부서명) VALUES (20, '기획부');
INSERT INTO 부서 (부서코드, 부서명) VALUES (30, '개발부');
INSERT INTO 직원 (직원코드, 부서코드) VALUES (1000, 10);
INSERT INTO 직원 (직원코드, 부서코드) VALUES (2000, 10);
INSERT INTO 직원 (직원코드, 부서코드) VALUES (3000, 20);
INSERT INTO 직원 (직원코드, 부서코드) VALUES (4000, 20);
INSERT INTO 직원 (직원코드, 부서코드) VALUES (5000, 20);
INSERT INTO 직원 (직원코드, 부서코드) VALUES (6000, 30);
INSERT INTO 직원 (직원코드, 부서코드) VALUES (7000, 30);
( 1 )
SELECT DISTINCT COUNT(직원코드)
FROM 직원
WHERE 부서코드 = '20';
( 2 )
DELETE FROM 부서
WHERE 부서코드 = '20';
SELECT DISTINCT COUNT(직원코드)
FROM 직원;
| 답: (1) : 3 (2) : 4 ![]() (1) SELECT DISTINCT COUNT(직원코드) FROM 직원 WHERE 부서코드 = '20'; ![]() → 부서코드 20에 있는 직원코드 중 중복이 없으므로 세리면(COUNT) = 3 ( 2 ) DELETE FROM 부서 WHERE 부서코드 = '20'; SELECT DISTINCT COUNT(직원코드) FROM 직원; ![]() → 빨간색 글자는 삭제, ON DELETE CASCADE 이므로 직원 테이블에서도 삭제 → 직원 코드에 남은 것은 중복을 제외하고 = 4 |
[22년 3회]
12. STUDENT 테이블에서 컴퓨터과 학생 50명, 전기과 학생 100명, 인터넷과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는? (단, DEPT 칼럼은 학과명이다.)
( 1 ) SELECT DERP FROM STUDENT;
( 2 ) SELECT DISTINCT DEPT FROM STUDENT;
( 3 ) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '인터넷과';
| 답: (1): 200 (2): 3 (3): 1 |
[23년 1회]
13. [학생] 테이블에서 학생 이름이 '민수'인 튜플을 삭제하는 쿼리를 작성하시오.

[조건]
- 컬럼의 값이 문자열일 경우 작은 따옴표 (' ')를 표시하시오.
- SQL 마지막에 세미콜론(;)은 표기하지 않아도 관계 없습니다.
| 답: DELETE FROM 학생 WHERE 이름 = '민수'; [학생] 테이블에서 학생 이름이 '민수'인 튜플을 삭제 튜플을 삭제 : DELETE [학생] 테이블에서 : FROM 학생 학생 이름이 '민수'인 : WHERE 이름 = '민수' |
[23년 1회]
16. 다음 성적 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수' 를 검색하고자 한다. [조건]을 참고하여 적합한 SQL문을 작성하시오.

[조건]
- where사용하지 말하야 한다.
- SELECT절에 별칭을 사용하여 작성해야 한다.
- SQL 구문 마지막에 세미콜론 생락 가능하다.
- 반드시 GROUP BY와 having을 사용해야 한다.
- 집계함수를 사용해야 한다.
| 답: SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >= 90 성적 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수' 를 검색 검색 : SELECT '과목이름', '최소점수', '최대점수' 를 검색 : SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 - 결과에 이름 값이 별칭(AS)으로 되어있기 때문에 그에 맞춘다. 성적 테이블에서 : FROM 성적 과목별 점수의 평균이 90점 이상 (조건절) - GROUP BY 절을 사용하라고 했으므로 조건절을 그에 맞춘다. : GROUP BY 과목이름 : HAVING AVG(점수) >= 90 |
[23년 2회]
4. 다음은 테이블에 데이터를 삽입하기 위한 과정이다. 보기의 조건식에 맞게 데이터 삽입을 위한 SQL문을 작성하시오.
CREATE TABLE 학생 (
학번 int,
이름 varchar(20),
학년 int,
전공 varchar(30),
전화번호varchar(20)
);
[결과값]
학번 이름 학년 전공 전화번호 9830287 뉴진스 3 경영학개론 010-1234-1234
| 답: INSTER INTO 학생(학번,이름,학년,전공,전화번호) VALUES(9830287,'뉴진스',3,'경영학개론','010-1234-1234'); INSERT INTO 테이블명 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...); |
[24년 1회]
13. 아래 보기의 SQL 문장과 테이블을 참고하여 출력 값을 표로 작성하시오.
SELECT B
FROM R1
WHERE C IN (SELECT C FROM R2 WHERE D="k");

답:![]() SELECT B FROM R1 → B를 선택 → R1 테이블에서 ![]() WHERE C IN (SELECT C FROM R2 WHERE D="k"); SELECT C FROM R2 : R2 테이블에서 C선택 WHERE D="k" : D에서 "k" 인것만 선택 WHERE C IN : C에서 두번째 SELECT에서 선택된 것만 선택 최종적으로 B셀 선택 ![]() ※ 파란색 → 녹색 → 주황색 → 노란색으로 읽을 수 있다. |
[24년 1회]
18. 아래의 SQL 코드와 테이블을 참고하여 결과 값을 작성하시오.

SELECT COUNT(*)
FROM TABLE
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200
| 답: 1 SELECT COUNT(*) FROM TABLE WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200 ![]() → 1개만 선택된다. COUNT(*) 이므로, 출력값은 1 → ※ or 먼저한 뒤에 and를 한다. |
[24년 3회]
3. 아래의 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
WHERE project_id IN(
SELECT project_id
FROM employee
GROUP BY project_id
HAVING COUNT(*) < 2
답: 1![]() |
[25년 1회]
7. 다음은 SQL 문제이다. 아래 두 테이블을 참고하여 보기에 쿼리 실행 결과를 작성하시오.

[보기] SELECT name, incentive FROM emp, sal WHERE emp.id=sal.id And incentives>=500
답:![]() '파란색 → 주황색 → 초록색' 순으로 생각하면 쉽다. |
[25년 3회]
10. 다음은 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.

| 답: 4 SELECT COUNT(*) CNT → 아래의 조건에 일치하는 행의 개수를 세어서 CNT라는 이름으로 출력 ※행의 개수 = COUNT(*) FROM T1 A CROSS JOIN T2 B ※ CROSS JOIN : 모든 가능한 조합을 만드는 조인 ※ T1 A : T1 테이블을 A라고 표현하겠다. → T1의 행의 수 : 3개 → T2의 행의 수 : 2개 → 즉, 총 6개(2x3)의 데이터 쌍이 만들어짐 ![]() WHERE A.NAME LIKE B.RULE → 조건. A 테이블의 NAME 과 B 테이블의 RULE 가 일치(LIKE) 하는 것 ![]() 즉, 4개가 일치한다. ※ LIKE 연산자의 특수 문자 s%: 's'로 시작하는 모든 것 (예: smith, scott, sun) %s: 's'로 끝나는 모든 것 (예: bus, lens) %s%: 's'가 어디든 포함된 것 (예: asset, bus, smith) s_: 's'로 시작하는 딱 2글자 (예: so, si) ※JOIN의 종류 INNER JOIN : 조건에 맞는 교집합만 추출 LEFT OUTER JOIN: 왼쪽 테이블 전체 + 오른쪽 일치 항목 CROSS JOIN : 모든 경우의 수 (카테시안 곱) |
[25년 3회]
20. 다음은SQL에 관한 문제이다.아래A테이블을 참고하여 쿼리의 결과를 작성하시오.

[SQL]
SELECT count(col2) FROM A WHERE col1 IN (2, 3) OR col2 IN (3, 5)
| 답: 4 SQL의 역순으로 본다. [조건] WHERE col1 IN (2, 3) OR col2 IN (3, 5) col1 IN (2, 3) ![]() col2 IN (3, 5) ![]() col1 IN (2, 3) OR col2 IN (3, 5) ![]() → OR(또는) 이므로 모두 포함된다. [테이블] FROM A [출력] SELECT count(col2) ※ COUNT(*): 조건에 맞는 모든 행의 개수를 셉니다 (NULL 포함). ※ COUNT(컬럼명): 해당 컬럼의 값이 NULL이 아닌 행의 개수만 셉니다. ![]() → NULL이 아닌 값을 세므로, 4개가 나온다. |
[26년 1회]
10. 아래는 선수(PLAYER) 정보를 관리하는 테이블을 정의하는 SQL 문이다. 팀(TEAM) 테이블의 특정 칼럼을 참조하는 외래키 제약 조건을 추가하려 할 때, 괄호 ①~⑤에 들어갈 적절한 예약어(keyword) 또는 칼럼명을 아래 조건을 참고하여 쓰시오.
[조건]
외래키 제약 조건의 이름은 TEAM_TF 로 지정한다.
PLAYER 테이블의 TEAM_ID 칼럼이 외래키 역할을 한다.
TEAM 테이블의 TEAM_ID2 칼럼을 참조 대상으로 한다.
[SQL 문]
CREATE TABLE PLAYER (
PLAYER_ID CHAR(7) NOT NULL,
PLAYER_NAME VARCHAR2(20) NOT NULL,
TEAM_ID CHAR(3) NOT NULL,
PRIMARY KEY (PLAYER_ID),
( 1 ) TEAM_TF
( 2 ) KEY ( 3 )
( 4 ) TEAM ( 5 )
);
| 답: 1. CONSTRAINT 2. FOREIGN 3. TEAM_ID 4. REFERENCES 5. TEAM_ID2 |
[26년 1회]
18. 다음은 SQL에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.

SELECT COUNT(*)
FROM employee e
JOIN dept d ON e.dep_id = d.dept_id
WHERE d.budget > (
SELECT AVG(budget) FROM dept
);
| 답: 2 |
'자격증 요약 > 정보처리기사' 카테고리의 다른 글
| [정보처리기사 실기] 자바(JAVA) 기출 유형_1 (반복문, 제어문, 연산) (0) | 2026.04.07 |
|---|---|
| [정보처리기사 실기] 파이썬(Python) 기출 (0) | 2026.04.06 |
| [20년 1회] 정보처리기사 실기 문제 풀이 (0) | 2026.02.27 |
| [20년 2회] 정보처리기사 실기 문제 풀이 (0) | 2026.02.27 |
| [20년 3회] 정보처리기사 실기 문제 풀이 (0) | 2026.02.27 |























