4. 다음 두 릴레이션 X(A, B)와 Y(A, C)가 있을 때, SQL 문을 수행한 후 생성되는 튜플(tuple)의 갯수는?
(SELECT DISTINCT A FROM X) UNION ALL (SELECT A FROM Y)
정답
9
해설
* 문제에서 갯수를 적으라고 했습니다. 구해지는 값을 쓰시면 오답처리 됩니다.
오늘부터 문제 집중해서 읽기 연습을 꼭 해주세요.
~ 개념을 물어본 문제인지, ~ 목적을 물어본 문제인지, 문제를 잘 읽고, 문제에 포커싱해서 답을 작성해주세요.
추가 해설
SELECT DISTINCT A FROM X 에서 중복 제거된 튜플 수는 4개
1, 2, 3, 5
SELECT A FROM Y 에서는 전체 데이터가 검색되므로 튜플 수는 5개
1, 1, 2, 4, 6
두 레코드를 집합 연산자 UNION ALL 으로 조인했으므로, 4 + 5 = 9개 가 정답
UNION 이었다면 중복을 제거해서 6개가 됨
1, 2, 3, 4, 5, 6
※ 집합연산자
union - 두 집합을 더해서 결과를 출력, 중복제거, 정렬해줌 (합집합)
union all - 두 집합을 더해서 결과를 출력, 중복제거하지 않고, >정렬해주지 않음<
intersect - 두 집합의 교집합 결과를 출력, 정렬해줌
minus - 두 집합의 차집합 결과를 출력, 정렬해줌
8. 다음 '교수' 테이블을 생성하는 SQL문에서 전공과목의 속성값을 '물리학', '심리학'으로 제한하고자 한다. ①, ②에 들어갈 SQL 구문을 쓰시오.
CREATE TABLE 교수
(교수번호 NUMBER NOT NULL,
교수명 CHAR(12),
전공과목 CHAR(15) ① (전공과목 ② ('물리학', '심리학')));
① __________
② __________
정답
① CHECK
② IN
10. 학생 테이블을 이용하여 아래 결과가 나올 수 있도록 SQL 문을 작성하시오.
⁕ [조건] in을 사용하여 1, 4학년 출력
[학생]
이름 |
학년 |
점수 |
과목 |
김군 |
2 |
3.5 |
컴공 |
이군 |
2 |
4 |
컴공 |
박군 |
3 |
2.5 |
물리학 |
최양 |
3 |
2.8 |
물리학 |
구양 |
4 |
3 |
심리학 |
조군 |
1 |
3.5 |
심리학 |
서군 |
1 |
2 |
심리학 |
[결과]
이름 |
학년 |
점수 |
과목 |
구양 |
4 |
3 |
심리학 |
조군 |
1 |
3.5 |
심리학 |
서군 |
1 |
2 |
심리학 |
정답
SELECT 이름,학년,점수,과목
FROM 학생
WHERE 학년 IN (1, 4);
11. 데이터베이스 관리자가 권한을 부여하는 DCL 문을 작성하시오.
- 관리자가 인사담당자 고길동에게 ‘직원’ 테이블에 대해 INSERT할 수 있는 권한을 부여
- 대소문자를 구분하지 않음
정답
GRANT INSERT ON 직원 TO 고길동;
"그온투" !!!
GRANT 권한 ON 테이블 TO 누구;
13. 아래의 쿼리를 실행했을 때, 튜플의 수는 얼마인지 쓰시오.
CREATE TABLE TBB1 ( NAME VARCHAR2(20), AGE NUMBER(3) );
CREATE TABLE TBB2 ( NAME VARCHAR2(20), AGE NUMBER(3) );
INSERT INTO TBB1(NAME, AGE) VALUES('장씨', 30);
INSERT INTO TBB1(NAME, AGE) VALUES('마씨', 35);
INSERT INTO TBB1(NAME, AGE) VALUES('홍씨', 40);
INSERT INTO TBB1(NAME, AGE) VALUES('남씨', 40);
INSERT INTO TBB2(NAME, AGE) VALUES('장씨', 30);
INSERT INTO TBB2(NAME, AGE) VALUES('이씨', 50);
INSERT INTO TBB2(NAME, AGE) VALUES('최씨', 55);
SELECT * FROM TBB1
UNION
SELECT * FROM TBB2;
정답
6
해설
결과는 아래와 같다.
NAME |
AGE |
장씨 |
30 |
마씨 |
35 |
홍씨 |
40 |
남씨 |
40 |
이씨 |
50 |
최씨 |
55 |
** UNION : 중복된 튜플 제거, 정렬 O
** UNION ALL : 중복된 튜플 허용
15. [결제] 테이블을 이용해서 결제유형별 입장객수를 검색하는 SQL문을 쓰시오.
단, 결제 테이블 속성에는 결제일, 결제유형, 결제금액이 있다.
[조건]
테이블명은 결제이다.
별칭은 입장객수로 쓴다.
문장의 끝에는 세미콜론(;)을 표기한다.
[검색 결과]
결제유형 |
입장객수 |
신용카드 |
4 |
현금 |
6 |
정답
SELECT 결제유형, COUNT(*) AS 입장객수
FROM 결제
GROUP BY 결제유형;
16. [학과] 테이블에서 ‘교수명’의 이름이 “황”으로 시작하는 튜플의 ‘학과번호’를 777로 업데이트하는 SQL 구문을 작성하시오.
[학과] 테이블
학과 |
학과번호 |
학과정원 |
교수명 |
전산과 |
110 |
300 |
김일등 |
국문과 |
310 |
250 |
황이등 |
수학과 |
120 |
400 |
이삼등 |
전산과 |
120 |
300 |
김사등 |
수학과 |
420 |
180 |
황오등 |
정답
UPDATE 학과
SET 학과번호 = 777
WHERE 교수명 LIKE '황%';
19. [성과금] 테이블의 '부서', '성과금등급', '성과금'에 대해서 부서별 소계와 전체 합계를 검색하는 SQL 구문을 작성하시오.
[조건]
- [성과금] 테이블의 속성에는 부서, 성과금등급, 성과금이 있다.
- 속성명은 '성과금합계'로 하고, ROLLUP 함수를 사용한다.
[결과]
부서 |
성과금등급 |
성과금합계 |
인사과 |
B |
100 |
인사과 |
A |
200 |
인사과 |
C |
50 |
인사과 |
|
350 |
회계과 |
B |
100 |
회계과 |
C |
50 |
회계과 |
A |
200 |
회계과 |
|
350 |
정보보안과 |
A |
200 |
정보보안과 |
B |
100 |
정보보안과 |
|
300 |
|
|
1,000 |
정답
SELECT 부서, 성과금등급, SUM(성과금) AS 성과금합계
FROM 성과금
GROUP BY ROLLUP(부서, 성과금등급);
추가
rollup() - 주어진 데이터들의 소계를 구해줌 group by절에 주어진 조건으로 소계값을 구해줌
'정보처리기사' 카테고리의 다른 글
(11과목) 응용SW 기초기술 활용 (0) | 2021.04.14 |
---|---|
(5과목) 인터페이스 구현 (0) | 2021.04.14 |
(10과목) 애플리케이션 테스트 관리 (0) | 2021.04.14 |
(9과목) 소프트웨어 개발 보안 구축 (0) | 2021.04.14 |
(6과목) 프로그래밍 언어 활용 (0) | 2021.04.13 |