본문 바로가기
자격증/실기

SQL 기출 해설

by 천왕지짐 2023. 6. 26.
정보처리산업기사  2020년 1회부터 현재까지 출제된 SQL 문제에 대해 정리해 놓은 자료이다.

SQL은 Structured Query Language의 약자로, 데이터베이스 관리 시스템에서 데이터를 관리하고 조작하기 위해 사용되는 표준화된 프로그래밍 언어이다. SQL을 잘 알면 프로그래밍을 통해 작업해야할 수많은 동작들을 SQL 명령어 한두줄로 해결할 수 있다. SQL로 데이터베이스에서 데이터를 생성, 수정, 삭제, 조회할 수 있고 심지어 데이터베이스 스키마 정의, 데이터베이스 객체 생성, 권한 관리 등의 작업도 수행할 수 있다. 

SQL을 배워두는 것은 여러모로 중요하다고 할 수 있겠다. 아래에 있는 여러 문제들을 살펴보면 프로그래밍 언어로를 많은 과정들을 거려야 하겠지만 SQL 명령어로는 단 한줄로 해결됨을 알 수 있다. 스스로 느낄 수 있을 때까지 차근차근 알아보자.

 

 2020년 1회 - 17번 문제

학생 테이블에 전기과 학생이 50, 전산과 학생이 100, 전자과 학생이 50명있다고 할 때, 다음 SQL1, 2, 3의 실행 결과로 표시되는 튜플의 수를 쓰시오. (, DEPT 필드는 학과를 의미한다)
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

 

 2020년 2회 - 6번 문제

다음 <학생> 테이블을 참고하여 <처리조건>에서 요구하는 SQL문을 작성하시오.

<학생>

<조건>
3, 4학년의 학번, 이름을 조회한다
IN 예약어를 사용해야 한다
속성명 아래의 괄호는 속성의 자료형을 의미한다
SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3, 4);

 

 2020년 2회 - 12번 문제

다음 <student> 테이블을 참고하여 'name' 속성으로 'idx_name'이라는 인덱스를 생성하는 SQL문을 작성하시오.

<student>
CREATE INDEX idx_name ON student(name);

 

 2020년 3회 - 3번 문제

<학생> 테이블에서 '이름'"민수"인 튜플을 삭제하고자 한다. 다음 <처리 조건>을 참고하여 SQL문을 작성하시오.

<처리조건>
명령문 마지막의 세미콜론은 생략이 가능하다
인용 부호가 필요한 경우 작은 따옴표를 사용한다
DELETE FROM 학생 WHERE 이름='민수';

 

 2020년 3회 - 9번 문제

<성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리 조건>을 참고하여 적합한 SQL문을 작성하시오.

<성적>

<결과>

<처리조건>
WHERE문을 사용하지않는다
GROUP BY와 HAVING을 이용한다
집계함수를 사용하여 명령문을 구성한다
최소점수, 최대점수는 별칭을 위한 AS문을 이용한다
명령문 마지막의 세미콜론은 생략이 가능하다
인용 부호가 필요한 경우 작은 따옴표를 사용한다
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >=90;

 

 2020년 3회 - 20번 문제

다음 <속성 정의서>를 참고하여 <학생> 테이블에 대해 20자의 가변 길이를 가진 '주소' 속성을 추가하는 <SQL>을 완성하시오.
<속성 정의서>

<sql문></sql문>
(1) TABLE 학생 (2) 주소 VARCHAR(20);
(1) ALTER
(2) ADD

 

 2020년 4회 - 9번 문제

다음 질의 내용에 대한 SQL문을 작성하시오.
<질의>
학생 테이블에서 학과별 튜플의 개수를 검색하시오.
(, 아래의 실행 결과가 되도록 한다.)

<학생>

<실행 결과>

<처리조건>
Where 조건절은 사용할 수 없다.
GROUP BY는 반드시 포함한다.
집계함수를 적용한다.
학과별튜플수 컬럼이름 출력에 AS를 활용한다.
문장 끝의 세미콜론은 생략해도 무방하다.
인용부호 사용이 필요한 경우 단일 따옴표를 사용한다.
SELECT 학과, COUNT(*) AS 학과별튜플수 FROM 학생 GROUP BY 학과;

 

 2021년 1회 - 6번 문제

<EMP_TBL> 테이블을 참고하여 <SQL>의 실행 결과를 쓰시오.

<처리조건>
SELECT COUNT(*) FROM EMP_TBL WHERE EMPNO > 100 AND SAL >=3000 OR EMPNO =200;
1

 

 2021년 1회 - 14번 문제

다음 테이블에서 카디널리티와 디그리를 구하시오.
카디널리티 : 5
디그리 : 4

 

 2021년 2회 - 5번 문제

다음은 <학부생>테이블에서 입학생수가 300이상인 튜플의 학과번호를 999로 갱신하는 SQL문이다 괄호(1, 2)에 알맞은 답을 쓰시오.
<학부생> 테이블

(1) 학부생 (2) 학과번호 =999 WHERE 입학생수>=300;
(1) UPDATE
(2) SET

 

 2021년 2회 - 6번 문제

다음 <사원> 테이블과 <동아리> 테이블을 조인한 <결과>를 확인하여 <SQL>의 괄호(1, 2)에 들어갈 알맞은 답을 쓰시오.
<사원>

<동아리>

<결과>

<SQL문>
SELECT a.코드, 이름,동아리명 FROM 사원 a LEFT 동아리 b( 1 ) a. 코드=b.( 2 ) ;
(1) ON
(2) 코드

 

 2021년 2회 - 10번 문제

다음 <회원> 테이블에서 '이름'""로 시작하는 회원들을 가입일 순으로 내림차순 정렬하는 <SQL>이다 괄호(1, 2)에 들어갈 알맞은 답을 쓰시오
<회원> 테이블

<SQL문>
SELECT*FROM 회원 WHERE 이름 LIKE '( 1 )' ORDER BY 가입일 ( 2 );
(1) : %
(2) : DESC

 

 2021년 3회 - 10번 문제

<A> 테이블과 < B>테이블을 참고하여 <SQL>의 실행결과를 쓰시오

<SQL문>
SELECT COUNT(*) CNT FROM A CROSS JOIN B WHERE A.NAME LIKE B.RULE;
4

 

 2022년 1회 - 4번 문제

다음은 <성적> 테이블에서 이름(name)과 점수(score)를 조회하되, 점수를 기준으로 내림차순 정렬하여 조회하는 <SQL>이다. 괄호(1~3)에 알맞은 답을 적어 <SQL>을 완성하시오.
<성적>

<SQL문>
SELECT name, score FROM 성적 ( 1 ) BY ( 2 ) ( 3 )
(1) : ORDER
(2) : score
(3) : DESC

 

 2022년 2회 - 3번 문제

상품 테이블에서 H제조사 전체 제품의 단가보다 더 큰 단가를 가진 제품을 모두 출력하는 SQL문을 완성하시오.

SELECT 제조사, 제품명, 단가 FROM 제품 WHERE 단가 > ( 1 ) (SELECT 단가 FROM 제품 WHERE 제조사='H')
ALL

 

 2022년 2회 - 4번 문제

다음 SQL 결과에 알맞는 답을 작성하시오.

<SQL문>
SELECT count(col2) FROM TABLE WHERE col1 in(2, 3) or col2 in (3,5);
4

 

 2022년 2회 - 12번 문제 - 문제  누락

다음 테이블에서 TTL(employee)에 대한 연산 결과 값을 작성하시오.
<employee> 테이블

(1) 
(2) 
(3) 
(4) 
(5) 
TTL
부장
대리
과장
차장

 

 2022년 3회 - 7번 문제

아래 데이터 명령어를 적용할 경우 알맞는 출력값을 작성하시오.
CREATE TABLE 부서 (
  부서코드 int, 부서명 varchar(50)
  PRIMART KEY (부서코드)
  FOREIGN KEY (부서코드)
  REFERENCES 직원(부서코드)
  ON DELETE CASCADE
);

CREATE TABLE  직원 (
  직원코드 int, 부서코드 int
  PRIMART KEY (직원코드)
  FOREIGN KEY (부서코드)  REFERENCES 부서(부서코드)
);

insert into 부서 (부서코드, 부서명) value (10, 영업부);
insert into 부서 (부서코드, 부서명) value (20, 기획부);
insert into 부서 (부서코드, 부서명) value (30, 개발부);

insert into 부서 (직원코드, 부서코드) value (1000, 10);
insert into 부서 (직원코드, 부서코드) value (2000, 10);
insert into 부서 (직원코드, 부서코드) value (3000, 20);
insert into 부서 (직원코드, 부서코드) value (4000, 20);
insert into 부서 (직원코드, 부서코드) value (5000, 20);
insert into 부서 (직원코드, 부서코드) value (6000, 30);
insert into 부서 (직원코드, 부서코드) value (7000, 30);

1. SELECT DISTINCT COUNT(직원코드) FROM 직원 WHERE 부서코드='20';
(     (1)     )                

2. DELETE FROM 부서 WHERE 부서코드='20';
    SELECT DISTINCT COUNT(직원코드) FROM 직원;
(     (2)     )                
(1) 3
(2) 4

 

 2022년 3회 - 12번 문제

학생 테이블에 컴퓨터과 학생이 50, 전기과 학생이 100, 인터넷과 학생이 50명있다고 할 때, 다음 SQL1, 2, 3의 실행 결과로 표시되는 튜플의 수를 쓰시오. (, DEPT 필드는 학과를 의미한다)
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

 

 2023년 1회 - 15번 문제

<학생> 테이블에서 '이름'이 "민수"인 튜플을 삭제하고자 한다. 다음 <처리 조건>을 참고하여 SQL문을 작성하시오.
DELETE FROM 학생 WHERE 이름='민수';

 

 2023년 1회 - 16번 문제

다음 <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리 조건>을 참고하여 적합한 SQL문을 작성하시오.
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >=90;

 

'자격증 > 실기' 카테고리의 다른 글

Python 언어 기출 해설  (0) 2023.06.26
JAVA 언어 기출 해설  (0) 2023.06.26
C 언어 기출 해설  (0) 2023.06.26

댓글