SQLD 모의고사 4회
50문항 · 제한 시간 90분. 다 풀면 과목별 점수와 합격 여부, 문제마다 해설을 보여 줘요.
1. 다음 사례에서 가장 직접적으로 드러난 데이터 모델링의 특징은?
B사 영업팀은 '매출일'을 계약 체결일로, 회계팀은 세금계산서 발행일로 입력해 와서 월별 매출 집계가 부서마다 달랐다. 모델링 과정에서 '매출일자'를 '세금계산서가 발행된 날짜(YYYY-MM-DD)'로 정의하여 누가 입력하고 조회하든 같은 의미로 해석되도록 하였다.
- 추상화(Abstraction)
- 단순화(Simplification)
- 명확화(Clarity)
- 구체화(Concretization)
2. 프랜차이즈 본사의 업무를 분석하다가 다음 엔터티 후보가 제시되었다.
본사정보: 본사의 상호, 대표자명, 사업자등록번호, 본사 주소를 관리한다. 본사는 하나뿐이므로 이 후보에는 항상 1건의 데이터만 존재한다.
이 후보를 엔터티로 보기 어려운 이유로 가장 적절한 것은?
- 영속적으로 존재하는 2개 이상의 인스턴스 집합이어야 한다는 조건을 만족하지 못한다.
- 엔터티를 설명하는 속성을 하나도 가지고 있지 않으므로 엔터티가 될 수 없다.
- 다른 엔터티로부터 발생한 행위 엔터티이므로 독립적으로 존재할 수 없다.
- 업무에서 관리할 필요가 전혀 없는 정보이므로 엔터티가 될 수 없다.
3. 학사 시스템의
수강엔터티에 다음 속성들이 정의되어 있다.속성 설명 학번 학생의 주식별자를 상속받아 수강의 주식별자 일부로 사용과목코드 과목의 주식별자를 상속받아 수강의 주식별자 일부로 사용담당교수번호 교수의 주식별자를 상속받아 일반 속성으로 사용취득점수 학기말 평가 점수 구성 방식에 따른 속성 분류로 가장 적절한 것은?
- 학번은 PK 속성이므로 동시에 FK 속성이 될 수는 없다.
- 담당교수번호는 주식별자에 포함되지 않으므로 일반 속성이다.
- 취득점수는 다른 엔터티와의 관계에서 포함되었으므로 FK 속성이다.
- 과목코드는 PK 속성이면서 동시에 FK 속성에 해당한다.
4. 동호회 관리 시스템에 다음 요구사항이 있다.
한 회원은 여러 동호회에 가입할 수 있고, 한 동호회에는 여러 회원이 가입한다. 회원이 동호회에 가입한 날짜와 동호회별 회원등급도 관리해야 한다.
이 관계를 관계형 데이터베이스로 구현하기 위한 모델링으로 가장 적절한 것은?
- 회원 엔터티에 가입동호회코드 속성을 두고 여러 코드를 구분자로 이어 저장한다.
- 회원과 동호회 사이에 가입 엔터티를 두어 두 개의 1:M 관계로 해소한다.
- 동호회 엔터티에 회원번호를 FK로 두어 1:M 관계로 단순화하여 구현한다.
- M:N 관계는 그대로 구현할 수 있으므로 별도 엔터티 없이 관계선만 정의한다.
5.
회원엔터티의 주식별자를 (회원번호, 가입일자)로 정의하였다. 회원번호는 가입 시 시스템이 부여하며, 모든 회원에게 반드시 존재하고 서로 중복되지 않으며 변경되지도 않는다.이 설계가 위배한 주식별자의 특징으로 가장 적절한 것은?
- 유일성
- 최소성
- 불변성
- 존재성
6. 다음
회원테이블의 PK는 회원번호이다.회원번호 회원명 연락처 M01 정우진 010-1111-2222, 02-333-4444 M02 서지아 010-5555-6666 위 테이블에 대한 설명으로 가장 적절한 것은?
- 회원번호가 단일 속성 PK이므로 이 테이블은 이미 제2정규형까지 만족한다.
- 연락처 컬럼에 여러 값이 함께 저장되어 원자값 조건을 어기므로 제1정규형 위반이다.
- 연락처를 연락처1, 연락처2 컬럼으로 나누어 저장하면 제1정규형을 만족하게 된다.
- 회원명이 연락처를 결정하는 이행 함수 종속이 있으므로 제3정규형 위반이다.
7. 학생과 과목은 M:N 관계이며, 교차 엔터티
ENROLL로 해소하였다.STUDENT
STU_NO STU_NM S1 한결 S2 다온 S3 이랑 S4 누리 COURSE
CRS_CD CRS_NM C1 DB C2 OS C3 NW C4 AI ENROLL
STU_NO CRS_CD S1 C1 S1 C2 S2 C1 S2 C3 S3 C3 S3 C2 다음 SQL의 결과 행 수로 옳은 것은?
SELECT S.STU_NM, C.CRS_NM FROM STUDENT S JOIN ENROLL R ON S.STU_NO = R.STU_NO JOIN COURSE C ON R.CRS_CD = C.CRS_CD WHERE C.CRS_NM = 'DB' OR S.STU_NM = '이랑';- 2건
- 3건
- 4건
- 5건
8. 포인트 결제 트랜잭션은 '회원 포인트 차감(UPDATE) → 결제 내역 기록(INSERT)'으로 구성된다. 다음 상황과 트랜잭션 특성(ACID)의 연결로 가장 적절하지 않은 것은?
- 결제 내역 INSERT가 실패하자 이미 수행된 포인트 차감까지 모두 취소되었다. - 원자성
- 결제 중인 트랜잭션이 차감한 포인트 잔액을 다른 트랜잭션은 커밋 전까지 볼 수 없다. - 고립성
- 트랜잭션 수행 전과 후 모두 '포인트 잔액은 0 이상'이라는 제약이 지켜진다. - 일관성
- 커밋이 끝난 결제 내역이 서버 장애 후 재기동했을 때에도 그대로 남아 있다. - 원자성
9.
EMP테이블의 데이터가 다음과 같을 때, SQL의 결과로 조회되는 EMP_ID의 순서로 옳은 것은? (Oracle 기준)EMP_ID COMM E1 300 E2 NULL E3 100 E4 NULL E5 200 SELECT EMP_ID FROM EMP ORDER BY COMM DESC, EMP_ID;- E2, E4, E1, E5, E3
- E1, E5, E3, E2, E4
- E4, E2, E1, E5, E3
- E1, E5, E3, E4, E2
10.
수강신청테이블은 시퀀스로 생성한수강신청ID를 PK로 사용한다. 그런데 실제 조회는 대부분WHERE 학번 = :1 AND 강좌코드 = :2형태로 수행되고, 같은 학생이 같은 강좌를 두 번 신청하는 일도 막아야 해서 DBA가 (학번, 강좌코드)에 유니크 인덱스를 추가로 생성하였다.이 상황에 대한 설명으로 가장 적절한 것은?
- 수강신청ID의 PK 인덱스가 업무 조회에 주로 사용되므로 추가 인덱스는 불필요하다.
- 인조식별자는 업무 의미가 없으므로 수강신청ID의 PK 제약과 인덱스는 삭제해도 무방하다.
- 업무 조회와 중복 방지를 위한 인덱스가 추가되어 저장 공간과 DML 시 인덱스 유지 비용이 늘어난다.
- (학번, 강좌코드)에 인덱스를 추가했으므로 이 테이블의 주식별자는 본질식별자로 바뀐다.
11. 관계형 데이터베이스와 SQL에 대한 설명으로 적절하지 않은 것은?
- 정규화를 통해 데이터 중복과 이상현상(Anomaly)을 줄일 수 있다.
- PK, FK, CHECK 등 무결성 제약조건으로 데이터 품질을 보장한다.
- SQL은 데이터를 '어떻게' 가져올지 처리 절차를 직접 기술하는 절차적 언어다.
- 동시성 관리와 병행 제어로 여러 사용자가 동시에 데이터를 안전하게 다룬다.
12. 다음 [T] 테이블에 SQL을 실행했을 때 R 컬럼의 값을 ID 순서대로 나열한 것으로 옳은 것은? (Oracle)
[T]
ID A B 1 10 2 2 20 NULL 3 6 3 SELECT A + A / B * 2 AS R FROM T ORDER BY ID;12.5, NULL, 720, 20, 105, NULL, 220, NULL, 10
13. 다음 중 Oracle에서 실행 시 오류가 발생하는 SQL은? (EMP 테이블에는 DEPTNO, JOB 컬럼이 있다.)
SELECT DISTINCT DEPTNO, JOB FROM EMP;SELECT DEPTNO, DISTINCT JOB FROM EMP;SELECT ALL DEPTNO FROM EMP;SELECT DISTINCT (JOB) FROM EMP;
14. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)
SELECT INITCAP('hello sql world') AS A, LENGTH(' S Q L ') AS B, UPPER(SUBSTR('database', -4, 2)) AS C FROM DUAL;Hello Sql World, 7, BAHello sql world, 7, BAHello Sql World, 3, ASHELLO SQL WORLD, 5, BA
15. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)
SELECT TO_CHAR(DATE '2025-03-10' + 30/24, 'YYYY-MM-DD HH24:MI') AS A, DATE '2025-03-10' - DATE '2025-02-28' AS B FROM DUAL;2025-04-09 00:00, 102025-03-11 06:00, 112025-03-11 06:00, 102025-03-11 18:00, 10
16. 단일행 함수에 대한 설명으로 적절하지 않은 것은?
- 각 행마다 하나의 결과를 반환한다.
- WHERE 절에는 사용할 수 없고 SELECT 절과 ORDER BY 절에서만 사용한다.
- 여러 개의 인수를 받더라도 행마다 하나의 결과값만 반환한다.
- 함수 안에 다른 함수를 중첩하여 사용할 수 있다.
17. 다음 [MEMBER] 테이블에 SQL을 실행했을 때 결과 값은? (Oracle, NAME은 VARCHAR2 타입)
[MEMBER]
ID NAME 1 ALLEN 2 BAKER 3 CHO 4 D 5 DAVE 6 NULL SELECT COUNT(*) FROM MEMBER WHERE NAME BETWEEN 'B' AND 'D';- 2
- 3
- 4
- 5
18. 다음 [CODE_T] 테이블에 SQL을 실행했을 때 결과 값은?
[CODE_T]
ID CODE 1 KIM 2 KAMI 3 AKIM 4 K_M 5 KM 6 KOREA 7 NULL SELECT COUNT(*) FROM CODE_T WHERE CODE LIKE 'K_M%';- 1
- 2
- 3
- 4
19. 다음 [PRODUCT] 테이블에 SQL을 실행한 결과로 옳은 것은?
[PRODUCT]
PID CATEGORY PRICE 1 식품 1000 2 가전 5000 3 식품 2000 4 NULL 3000 5 의류 NULL 6 식품 1000 7 NULL 2000 SELECT COUNT(*), COUNT(CATEGORY), COUNT(DISTINCT CATEGORY), COUNT(DISTINCT PRICE) FROM PRODUCT;7, 5, 4, 57, 7, 3, 47, 5, 3, 45, 5, 3, 5
20. 다음 [PAYMENT] 테이블에 (가), (나) SQL을 실행한 결과로 옳은 것은?
[PAYMENT]
PNO AMT 1 300 2 NULL 3 500 4 200 5 NULL -- (가) SELECT SUM(AMT) FROM PAYMENT HAVING COUNT(*) > 4; -- (나) SELECT SUM(AMT) FROM PAYMENT HAVING COUNT(AMT) > 4;- (가) 1000 (1행), (나) 결과 없음(0행)
- (가) 1000 (1행), (나) NULL (1행)
- (가) 오류 발생, (나) 오류 발생
- (가) 1000 (1행), (나) 1000 (1행)
21. 다음 [MEMBER] 테이블에 SQL을 실행한 결과의 출력 순서로 옳은 것은?
[MEMBER]
MID NAME GRADE 1 하늘 SILVER 2 바다 VIP 3 구름 GOLD 4 노을 VIP 5 별빛 NULL 6 단비 GOLD SELECT NAME FROM MEMBER ORDER BY CASE GRADE WHEN 'VIP' THEN 1 WHEN 'GOLD' THEN 2 ELSE 3 END, MID DESC;- 바다, 노을, 구름, 단비, 하늘, 별빛
- 노을, 바다, 단비, 구름, 하늘, 별빛
- 별빛, 노을, 바다, 단비, 구름, 하늘
- 노을, 바다, 단비, 구름, 별빛, 하늘
22. 다음 [ORDER_ITEM] 테이블에 SQL을 실행한 결과의 출력 순서로 옳은 것은? (문자는 가나다순으로 정렬된다.)
[ORDER_ITEM]
ITEM PRICE QTY 펜 500 10 공책 2000 3 지우개 300 20 가위 3000 2 풀 1000 4 SELECT ITEM, PRICE * QTY AS AMT FROM ORDER_ITEM ORDER BY 2 DESC, ITEM;- 공책, 지우개, 가위, 펜, 풀
- 가위, 공책, 지우개, 펜, 풀
- 풀, 펜, 가위, 공책, 지우개
- 가위, 공책, 풀, 펜, 지우개
23. 다음 [T1], [T2] 테이블에 SQL을 실행했을 때 결과 값은?
[T1]
K V1 1 a 1 b 2 c 3 d NULL e [T2]
K V2 1 x 1 y 1 z 2 w NULL v SELECT COUNT(*) FROM T1, T2 WHERE T1.K = T2.K;- 5
- 7
- 8
- 25
24. 다음 [SCORE], [PT_GRADE] 테이블에 SQL을 실행한 결과로 옳은 것은?
[SCORE]
SNO PT 1 55 2 60 3 75 4 80 5 95 [PT_GRADE]
LV MINPT MAXPT C 0 60 B 60 80 A 80 100 SELECT G.LV, COUNT(*) AS CNT FROM SCORE S, PT_GRADE G WHERE S.PT BETWEEN G.MINPT AND G.MAXPT GROUP BY G.LV ORDER BY G.LV;A, 1/B, 2/C, 2A, 2/B, 1/C, 2A, 2/B, 2/C, 1A, 2/B, 3/C, 2
25. 다음 [EMP], [DEPT] 테이블에 SQL을 실행했을 때, 결과에 포함되지 않는 행(DNAME, ENAME)은?
[EMP]
EMPNO ENAME DEPTNO 101 김 10 102 이 20 103 박 20 104 최 NULL [DEPT]
DEPTNO DNAME 10 인사 20 개발 30 영업 40 재무 SELECT D.DNAME, E.ENAME FROM EMP E RIGHT OUTER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;NULL, 최영업, NULL개발, 박재무, NULL
26. EMP(EMPNO, ENAME, DEPTNO), DEPT(DEPTNO, DNAME, LOC) 테이블이 있다. 두 테이블에서 이름이 같은 컬럼은 DEPTNO뿐일 때, Oracle에서 오류가 발생하는 SQL은?
SELECT E.ENAME, DEPTNO, D.DNAME FROM EMP E JOIN DEPT D USING (DEPTNO);SELECT ENAME, DNAME FROM EMP E JOIN DEPT D USING (DEPTNO) WHERE DEPTNO = 10;SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D USING (DEPTNO) WHERE D.DEPTNO = 10;SELECT E.ENAME, D.LOC FROM EMP E LEFT OUTER JOIN DEPT D USING (DEPTNO);
27. 다음 SQL의 실행 결과로 옳은 것은? (DEPTNO:MX 형식으로 표기)
[DEPT]
DEPTNO DNAME 10 총무 20 영업 30 개발 [EMP]
ENAME DEPTNO SAL A 10 300 B 10 500 C 20 400 SELECT D.DEPTNO, (SELECT MAX(E.SAL) FROM EMP E WHERE E.DEPTNO = D.DEPTNO) AS MX FROM DEPT D ORDER BY D.DEPTNO;10:500, 20:400(2행)10:500, 20:400, 30:NULL(3행)10:500, 20:400, 30:0(3행)- 실행 시 오류 발생
28. 다음 EMP 테이블에 대해 실행했을 때 오류가 발생하는 SQL은? (Oracle 기준, DEPT 테이블에는 LOC 컬럼이 있다)
[EMP]
ENAME DEPTNO SAL A 10 300 B 10 500 C 20 400 D 30 200 SELECT ENAME FROM EMP WHERE SAL > (SELECT AVG(SAL) FROM EMP);SELECT ENAME FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE LOC = '서울');SELECT ENAME FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 99);SELECT ENAME FROM EMP WHERE SAL >= (SELECT SAL FROM EMP WHERE DEPTNO = 10);
29. 다음 SQL의 결과 건수는?
[T1]
A B 1 x 1 NULL 2 NULL 1 NULL [T2]
A B 1 NULL 2 y NULL NULL SELECT A, B FROM T1 UNION SELECT A, B FROM T2;- 5행
- 4행
- 6행
- 7행
30. 다음 SQL을 실행했을 때 첫 번째로 출력되는 행의 NM 값은? (Oracle 기준, SCORE는 숫자형)
[T1]
NM SCORE 가 80 나 NULL [T2]
NM SCORE 다 90 라 70 SELECT NM, SCORE FROM T1 UNION ALL SELECT NM, SCORE FROM T2 ORDER BY 2 DESC;- 가
- 다
- 나
- 라
31. 다음 SQL의 결과에 포함되지 않는 행은? (REGION | PROD | S 순서로 표기)
[SALES]
REGION PROD AMT 서울 A 10 서울 B 20 부산 A 30 부산 A 5 SELECT REGION, PROD, SUM(AMT) AS S FROM SALES GROUP BY CUBE(REGION, PROD);NULL | A | 45부산 | NULL | 30NULL | B | 20NULL | NULL | 65
32. 다음 SQL의 결과 건수는?
[EMP]
DEPTNO JOB SAL 10 CLERK 100 10 CLERK 200 10 MANAGER 300 20 CLERK 150 20 ANALYST 250 SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY ROLLUP((DEPTNO, JOB));- 4행
- 6행
- 7행
- 5행
33. 다음 SQL의 실행 결과에서 DR 값을 ENAME 순서(A~F)대로 나열한 것으로 옳은 것은?
[EMP]
ENAME DEPTNO SAL A 10 300 B 10 500 C 10 300 D 10 200 E 20 400 F 20 600 SELECT ENAME, DENSE_RANK() OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) AS DR FROM EMP ORDER BY ENAME;2, 1, 2, 4, 2, 14, 2, 4, 5, 3, 12, 1, 2, 3, 2, 12, 1, 3, 4, 2, 1
34. 다음 SQL의 실행 결과에서 S 값을 DAY 순서대로 나열한 것으로 옳은 것은?
[T]
DAY AMT 1 10 2 30 3 20 4 40 5 50 SELECT DAY, SUM(AMT) OVER (ORDER BY DAY ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS S FROM T ORDER BY DAY;150, 140, 110, 90, 5010, 40, 60, 100, 150140, 110, 90, 50, 0150, 150, 150, 150, 150
35. 다음 SQL의 실행 결과에서 NX 값을 출력 순서대로 나열한 것으로 옳은 것은?
[T]
GRP SEQ AMT A 1 100 A 2 200 A 3 300 B 1 400 B 2 500 SELECT GRP, SEQ, LEAD(AMT, 2, 0) OVER (PARTITION BY GRP ORDER BY SEQ) AS NX FROM T ORDER BY GRP, SEQ;300, 400, 500, 0, 0300, 0, 0, 0, 0200, 300, 0, 500, 00, 0, 100, 0, 0
36. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준, 테이블의 행은 표에 나온 순서대로 읽힌다고 가정한다)
[EMP]
ENAME DEPTNO SAL A 10 300 B 20 100 C 10 200 D 10 500 E 20 150 F 10 250 SELECT ENAME FROM (SELECT ENAME, SAL FROM EMP WHERE DEPTNO = 10 ORDER BY SAL) WHERE ROWNUM <= 2;- A, C
- B, E
- C, F
- C, F, A
37. 다음 SQL의 실행 결과로 옳은 것은? (SQL Server 기준)
[EMP]
ENAME SAL A 400 B 700 C 550 D 300 E 650 F 500 SELECT TOP (50) PERCENT ENAME FROM EMP ORDER BY SAL DESC;- B, E, C
- B, E
- B, E, C, F
- D, A, F
38. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
[EMP]
EMPNO ENAME MGR 1 KING NULL 2 JONES 1 3 BLAKE 1 4 SCOTT 2 5 ADAMS 4 6 FORD 2 7 SMITH 3 SELECT COUNT(*) AS CNT FROM EMP START WITH EMPNO IN (2, 4) CONNECT BY PRIOR EMPNO = MGR;- 4
- 5
- 7
- 6
39. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
[EMP]
EMPNO ENAME MGR 1 KIM NULL 2 LEE 1 3 PARK 2 4 CHOI 3 5 JUNG 2 SELECT SYS_CONNECT_BY_PATH(ENAME, '>') AS PATH FROM EMP WHERE CONNECT_BY_ISLEAF = 1 START WITH ENAME = 'CHOI' CONNECT BY PRIOR MGR = EMPNO;- >KIM>LEE>PARK>CHOI
- >CHOI>PARK>LEE>KIM
- >CHOI
- >CHOI>PARK>LEE
40. 다음 SQL의 결과에서 REGION이 '서울'인 행으로 옳은 것은? (Oracle 기준)
[SALES]
REGION MON AMT 서울 01 100 서울 01 300 서울 02 200 부산 01 150 부산 02 50 부산 02 250 SELECT * FROM (SELECT REGION, MON, AMT FROM SALES) PIVOT (SUM(AMT) AS TOT, MAX(AMT) AS MX FOR MON IN ('01' AS JAN, '02' AS FEB));- TOT_JAN=400, MX_JAN=300, TOT_FEB=200, MX_FEB=200
- JAN_TOT=400, JAN_MX=300, FEB_TOT=200, FEB_MX=200
- JAN_TOT=400, JAN_MX=400, FEB_TOT=200, FEB_MX=200
- JAN_TOT=300, JAN_MX=300, FEB_TOT=200, FEB_MX=200
41. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
SELECT REGEXP_REPLACE('kim-01,lee-02', '([a-z]+)-([0-9]+)', '\2:\1') AS R FROM DUAL;- 01:kim,lee-02
- kim:01,lee:02
- 02:lee,01:kim
- 01:kim,02:lee
42. 다음 (가), (나) SQL의 결과 건수로 옳은 것은? (Oracle 기준)
[CITY]
NM Seoul seoul2 SEOUL Busan xseoul -- (가) SELECT NM FROM CITY WHERE REGEXP_LIKE(NM, '^seoul[0-9]?$'); -- (나) SELECT NM FROM CITY WHERE REGEXP_LIKE(NM, '^seoul[0-9]?$', 'i');- (가) 1건, (나) 3건
- (가) 1건, (나) 2건
- (가) 2건, (나) 3건
- (가) 0건, (나) 3건
43. EMP 테이블의 데이터가 아래와 같을 때, 다음 문장을 순서대로 실행(Oracle)한 후
SELECT SUM(sal) FROM emp_hist;의 결과는?EMP
EMPNO DEPTNO SAL 1 10 300 2 20 NULL 3 10 500 4 30 200 CREATE TABLE emp_hist ( empno NUMBER, deptno NUMBER, sal NUMBER DEFAULT 100, memo VARCHAR2(10) DEFAULT 'NEW' ); INSERT INTO emp_hist (empno, deptno) SELECT empno, deptno FROM emp WHERE deptno = 10; INSERT INTO emp_hist (empno, deptno, sal) SELECT empno, deptno, sal FROM emp WHERE deptno <> 10;- 200
- 400
- 500
- 1000
44. Oracle 19c에서 DEPT(DEPTNO NUMBER, DNAME VARCHAR2(10)) 테이블에 대해 다음 INSERT 문을 실행할 때 오류가 발생하는 것은? (제약조건 위반은 없다고 가정한다.)
INSERT ALL INTO dept VALUES (50, 'HR') INTO dept VALUES (60, 'IT') SELECT * FROM dual;INSERT INTO dept (deptno, dname) SELECT 50, 'HR' FROM dual UNION ALL SELECT 60, 'IT' FROM dual;INSERT ALL INTO dept (deptno, dname) VALUES (50, 'HR') INTO dept (deptno, dname) VALUES (60, 'IT');INSERT INTO dept SELECT deptno + 40, dname FROM dept WHERE deptno IN (10, 20);
45. T 테이블(C 컬럼)에는 C 값이 1, 2인 두 행이 커밋되어 있고, T2 테이블도 존재한다. Oracle에서 아래 문장을 순서대로 실행했을 때 최종적으로 T에 남아 있는 C 값은? (오류가 발생한 문장은 무시하고 다음 문장이 실행된다고 가정한다.)
INSERT INTO t VALUES (3); SAVEPOINT sp1; DELETE FROM t WHERE c = 1; TRUNCATE TABLE t2; INSERT INTO t VALUES (4); ROLLBACK TO sp1; ROLLBACK;- 2, 3
- 1, 2, 3
- 2, 3, 4
- 1, 2
46. 트랜잭션 TX1이 사원 100번의 급여를 500에서 900으로 UPDATE하고 아직 COMMIT하지 않았다. 이때 TX2가 그 급여를 900으로 읽어 보고서를 작성했는데, 이후 TX1이 ROLLBACK했다. 이 현상과, 이 현상을 방지할 수 있는 가장 낮은 격리 수준(ANSI 표준)을 바르게 짝지은 것은?
- Non-Repeatable Read – REPEATABLE READ
- Phantom Read – SERIALIZABLE
- Dirty Read – READ UNCOMMITTED
- Dirty Read – READ COMMITTED
47. Oracle에서 다음과 같이 생성한 테이블에 INSERT 문을 실행할 때 오류가 발생하는 것은?
CREATE TABLE price_t ( item VARCHAR2(10), price NUMBER(5, 2) );INSERT INTO price_t VALUES ('A', 999.99);INSERT INTO price_t VALUES ('B', 12.345);INSERT INTO price_t VALUES ('C', 1000);INSERT INTO price_t VALUES ('D', -45.6);
48. Oracle에서 아래와 같이 MEMBER2 테이블을 생성하고 INSERT 문 6개를 순서대로 실행했다. 오류가 발생한 문장은 무시하고 진행했을 때
SELECT COUNT(*) FROM member2;의 결과는?CREATE TABLE member2 ( id NUMBER PRIMARY KEY, email VARCHAR2(30) UNIQUE, age NUMBER CHECK (age >= 19) ); INSERT INTO member2 VALUES (1, 'a@x.com', 20); INSERT INTO member2 VALUES (2, NULL, NULL); INSERT INTO member2 VALUES (3, NULL, 25); INSERT INTO member2 VALUES (4, 'a@x.com', 30); INSERT INTO member2 VALUES (NULL, 'b@x.com', 40); INSERT INTO member2 VALUES (5, 'c@x.com', 18);- 3
- 2
- 4
- 1
49. SCOTT.EMP 테이블의 소유자 SCOTT와 사용자들이 아래 순서로 DCL을 실행했다. 마지막 REVOKE 이후 SCOTT.EMP에 대한 SELECT 권한을 가지고 있는 사용자를 모두 고른 것은? (Oracle, SCOTT 제외)
-- SCOTT 실행 GRANT SELECT ON scott.emp TO u1 WITH GRANT OPTION; GRANT SELECT ON scott.emp TO u2 WITH GRANT OPTION; -- U1 실행 GRANT SELECT ON scott.emp TO u3; GRANT SELECT ON scott.emp TO u4; -- U2 실행 GRANT SELECT ON scott.emp TO u3; -- SCOTT 실행 REVOKE SELECT ON scott.emp FROM u1;- U2
- U2, U4
- U2, U3, U4
- U2, U3
50. Oracle의 오브젝트 권한에 대한 설명으로 적절하지 않은 것은?
- REFERENCES 권한은 해당 테이블을 참조하는 FK 제약조건을 만들 수 있게 한다.
- EXECUTE 권한을 테이블에 부여하면 그 테이블에 대한 DML을 실행할 수 있다.
- UPDATE 권한은
UPDATE (sal)처럼 특정 컬럼만 지정하여 부여할 수 있다. - 시퀀스에는 SELECT, ALTER 권한을 부여할 수 있다.
AI가 SQLD 출제 범위를 바탕으로 새로 만든 예상 문제이며, 실제 기출문제가 아닙니다.