정보처리기사 실기 SQL 문제
※SQL에 사용되는 예약어, 필드명, 변수명 등은 대소문자를 구분하지 않기 때문에 소문자로 작성해도 정답으로 인정됩니다.
###20년 1회
17번 학생 테이블에 전기과 학생이 50명, 전산과 학생이 100명, 전자과 학생이 50명있다고 할 때, 다음 SQL문 1, 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
###20년 2회
6번 다음 <학생> 테이블을 참고하여 <처리조건>에서 요구하는 SQL문을 작성하시오.처리조건>학생>
<학생>
학번 이름 학년 수강과목 점수 연락처
123 김 3 세무행정 4.5 010-1234-5678
124 이 2 토목개론 3 010-1235-4796
125 박 4 실용법학 3.5 010-1237-7411
126 이 1 데이터론 2 010-1238-4972
<처리조건>
3, 4학년의 학번, 이름을 조회한다
IN 예약어를 사용해야 한다
속성명 아래의 괄호는 속성의 자료형을 의미한다
SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3, 4);
###20년 2회
12번 다음
<student>
stid name score deptid
2001 brown 85 PE01
2002 white 45 EF03
2003 black 67 UW11
CREATE INDEX idx_name ON student(name);
###20년 3회
3번 <학생> 테이블에서 '이름'이 "민수"인 튜플을 삭제하고자 한다. 다음 <처리 조건="">을 참고하여 SQL문을 작성하시오.처리>학생>
<처리 조건>
명령문 마지막의 세미콜론은 생략이 가능하다
인용 부호가 필요한 경우 작은 따옴표를 사용한다
DELETE FROM 학생 WHERE 이름=’민수’;
###20년 3회
9번 다음 <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리 조건="">을 참고하여 적합한 SQL문을 작성하시오.처리>성적>
<성적>
학번 과목번호 과목이름 학점 점수
123 101 컴퓨터구조 6 95
124 101 컴퓨터구조 6 84
125 302 데이터베이스 5 89
126 201 인공지능 5 92
127 302 데이터베이스 5 100
128 302 데이터베이스 5 88
129 201 인공지능 5 93
<결과>
과목이름 최소점수 최대점수
데이터베이스 88 100
인공지능 92 93
<처리조건>
WHERE문을 사용하지않는다
GROUP BY와 HAVING을 이용한다
집계함수를 사용하여 명령문을 구성한다
최소점수, 최대점수는 별칭을 위한 AS문을 이용한다
명령문 마지막의 세미콜론은 생략이 가능하다
인용 부호가 필요한 경우 작은 따옴표를 사용한다
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >=90;
###20년 3회
20번 다음 <속성 정의서="">를 참고하여 <학생> 테이블에 대해 20자의 가변 길이를 가진 '주소' 속성을 추가하는
<속성 정의서>
속성명 데이터타입 제약조건 테이블명
학번 CHAR(10) UNIQUE 학생
이름 VARCHAR(8) NOT NULL 학생
주민번호 CHAR(13) 학생
학과 VARCHAR(16) FOREIGN KEY 학생
학년 INT 학생
<SQL문>
(1) TABLE 학생 (2) 주소 VARCHAR(20);
(1) ALTER
(2) ADD
###20년 4회
9번 다음 질의 내용에 대한 SQL문을 작성하시오.
질의 학생 테이블에서 학과별 튜플의 개수를 검색하시오. (단, 아래의 실행 결과가 되도록 한다.)
<학생>
학번 이름 학년 학과 주소
123 김 2 전기 서울
124 이 3 컴퓨터 대구
125 박 1 전자 부산
126 이 3 전자 광주
127 최 4 컴퓨터 울산
<실행 결과>
학과 학과별튜플수
전기 1
전자 2
컴퓨터 2
<처리조건>
Where 조건절은 사용할 수 없다.
GROUP BY는 반드시 포함한다.
집계함수를 적용한다.
학과별튜플수 컬럼이름 출력에 AS를 활용한다.
문장 끝의 세미콜론은 생략해도 무방하다.
인용부호 사용이 필요한 경우 단일 따옴표를 사용한다.
SELECT 학과, COUNT(*) AS 학과별튜플수 FROM 학생 GROUP BY 학과;
###21년 1회
6번
<EMP_TBL>
EMPNO SAL
100 1500
200 3000
300 2000
<처리조건>
SELECT COUNT(*) FROM EMP_TBL WHERE EMPNO > 100 AND SAL >=3000 OR EMPNO =200;
1
###21년 1회
14번 다음 테이블에서 카디널리티와 디그리를 구하시오.
ID 이름 거주지 신청강의
abc 김 마포구 e1
abd 나 관악구 e2
abe 박 서대문구 e3
abf 이 광진구 e4
abt 최 서대문구 e5
카디널리티 : 5
디그리 : 4
###21년 2회
5번 다음은 <학부생>테이블에서 입학생수가 300이상인 튜플의 학과번호를 999로 갱신하는 SQL문이다 괄호(1, 2)에 알맞은 답을 쓰시오.학부생>
<학부생> 테이블
학부 학과번호 입학생수 담당관
정경대학 110 300 김
공과대학 310 250 이
인문대학 120 400 박
정경대학 120 300 최
인문대학 420 180 오
(1) 학부생 (2) 학과번호 =999 WHERE 입학생수>=300;
(1) UPDATE
(2) SET
###21년 2회
6번 다음 <사원> 테이블과 <동아리> 테이블을 조인한 <결과>를 확인하여
<사원>
코드 이름 부서
1 김 인사
2 나 경영지원
3 박 개발
4 이
<동아리>
코드 동아리명
1 테니스
3 탁구
4 볼링
<결과>
코드 이름 동아리명
1 김 테니스
2 나
3 박 탁구
4 이 볼링
<SQL문>
SELECT a.코드, 이름,동아리명 FROM 사원 a LEFT 동아리 b( 1 ) a. 코드=b.( 2 ) ;
(1) ON
(2) 코드
###21년 2회
10번 다음 <회원> 테이블에서 '이름'이 "이"로 시작하는 회원들을 가입일 순으로 내림차순 정렬하는
<회원> 테이블
회원번호 이름 성별 가입일
1 이진성 남 2021-06-23
2 조이령 여 2021-06-24
3 최민수 남 2021-06-28
4 김차희 여 2021-07-03
5 이미경 여 2021-07-10
<SQL문>
SELECT*FROM 회원 WHERE 이름 LIKE '( 1 )' ORDER BY 가입일 ( 2 );
(1) : 이%
(2) : DESC
###21년 3회
10번 테이블과 < B>테이블을 참고하여
<SQL문>
SELECT COUNT(*) CNT FROM A CROSS JOIN B WHERE A.NAME LIKE B.RULE;
4
###22년 1회
4번 다음은 <성적> 테이블에서 이름(name)과 점수(score)를 조회하되, 점수를 기준으로 내림차순 정렬하여 조회하는
<성적>
name class score
김 A 85
나 C 74
박 C 95
이 A 90
최 B 82
<SQL문>
SELECT name, score FROM 성적 ( 1 ) BY ( 2 ) ( 3 )
(1) : ORDER
(2) : score
(3) : DESC
###22년 2회
3번 상품 테이블에서 H제조사 전체 제품의 단가보다 더 큰 단가를 가진 제품을 모두 출력하는 SQL문을 완성하시오.
제조사 제품명 단가
A 과자 1000
B 초콜릿 6000
H 사탕 2000
C 아이스크림 5000
H 사탕 3000
SELECT 제조사, 제품명, 단가 FROM 제품 WHERE 단가 > ( 1 ) (SELECT 단가 FROM 제품 WHERE 제조사='H')
ALL
###22년 2회
4번 다음 SQL 결과에 알맞는 답을 작성하시오.
INDEX col1 col2
1 2 NULL
2 3 6
3 5 5
4 6 3
5 NULL 3
<SQL문>
SELECT count(col2) FROM TABLE WHERE col1 in(2, 3) or col2 in (3,5);
4
###22년 2회
12번 다음 테이블에서 𝝿 TTL(employee)에 대한 연산 결과 값을 작성하시오.
<employee> 테이블
INDEX AGE TTL
1 55 부장
2 35 대리
3 42 과장
4 45 차장
(1) (2) (3) (4) (5)
TTL 부장 대리 과장 차장
###22년 3회
7번 아래 데이터 명령어를 적용할 경우 알맞는 출력값을 작성하시오.
(1) 3
(2) 4
###22년 3회
12번 학생 테이블에 컴퓨터과 학생이 50명, 전기과 학생이 100명, 인터넷과 학생이 50명있다고 할 때, 다음 SQL문 1, 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
###23년 1회
15번 <학생> 테이블에서 '이름'이 "민수"인 튜플을 삭제하고자 한다. 다음 <처리 조건="">을 참고하여 SQL문을 작성하시오.(20년 3회차 기출과 동일)처리>학생>
DELETE FROM 학생 WHERE 이름='민수';
###23년 1회
16번 다음 <성적> 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수'를 검색하고자 한다. <처리 조건="">을 참고하여 적합한 SQL문을 작성하시오. (###20년 3회차 기출과 동일)처리>성적>
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >=90;
###23년 2회
4번 학생 테이블에 아래 데이터를 삽입하는 쿼리문을 작성하시오.
학번 : 9830287
이름 : 한국산
학년 : 3
과목명 : 경영학개론
전화번호 : 050-1234-1234
INSERT INTO 학생 VALUES(9830287, ‘한국산’, 3, ‘경영학개론’, ‘050-1234-1234’);
###23년 2회
17번 뷰를 삭제할 때 참조된 뷰를 연쇄적으로 모두 삭제되도록 빈칸을 작성하시오.
DROP VIEW 뷰이름 (가);
(가 ) cascade
댓글남기기