SQLD 모의고사 2회
50문항 · 제한 시간 90분. 다 풀면 과목별 점수와 합격 여부, 문제마다 해설을 보여 줘요.
1. 다음 중 ANSI-SPARC 3단계 스키마와 데이터 독립성에 대한 설명으로 가장 적절한 것은?
- 외부 스키마는 모든 사용자 관점을 통합한 전체 논리 구조로, 데이터베이스당 하나만 존재한다.
- 인덱스 추가처럼 내부 스키마가 변경되어도 상위 스키마가 영향받지 않는 것을 논리적 독립성이라 한다.
- 개념 스키마가 변경되어도 외부 스키마와 응용 프로그램이 영향받지 않는 것을 논리적 독립성이라 한다.
- 내부 스키마는 개별 사용자나 응용 프로그램이 바라보는 데이터베이스 구조를 의미한다.
2. 다음 중 엔터티의 특징에 대한 설명으로 가장 적절하지 않은 것은?
- 모든 엔터티는 예외 없이 다른 엔터티와 최소 1개 이상의 관계를 가져야 한다.
- 영속적으로 존재하는 2개 이상의 인스턴스로 이루어진 집합이어야 한다.
- 생성·조회·수정·삭제 중 하나 이상의 업무 프로세스에 의해 이용되어야 한다.
- 유일한 식별자에 의해 각 인스턴스를 식별할 수 있어야 한다.
3. 학사 시스템을 설계하면서
학점속성은 0.0 이상 4.5 이하의 숫자만,성별속성은 'M' 또는 'F'만 허용하도록 데이터 타입·길이·제약조건을 정의하였다. 이처럼 각 속성이 가질 수 있는 값의 범위를 무엇이라 하는가?- 속성값(Attribute Value)
- 파생 속성(Derived Attribute)
- 관계선택사양(Optionality)
- 도메인(Domain)
4. IE 표기법으로 작성된 다음 ERD에서
강사쪽 선 끝에는 막대 두 개(||),강좌쪽 선 끝에는 원과 까마귀 발(o{)이 표시되어 있다. 관계명은 강사 기준 '담당한다', 강좌 기준 '배정된다'이다.이 ERD의 해석으로 가장 적절한 것은?
[강사] ||-----------o{ [강좌]- 각 강사는 하나의 강좌만 항상 담당한다.
- 각 강좌는 반드시 한 명의 강사에게 배정되며, 강좌를 담당하지 않는 강사도 있을 수 있다.
- 각 강좌는 여러 강사에게 때때로 배정된다.
- 모든 강사는 반드시 1개 이상의 강좌를 담당해야 한다.
5. 다음 중 식별자의 분류에 대한 설명으로 가장 적절하지 않은 것은?
- 대표성 여부에 따라 주식별자와 보조식별자로 구분한다.
- 다른 엔터티와의 관계를 통해 부모로부터 받아온 식별자를 외부식별자라 한다.
- 둘 이상의 속성으로 구성된 식별자를 복합식별자라 한다.
- 보조식별자도 인스턴스를 유일하게 구분하므로 참조 관계 연결에 주로 사용한다.
6. 다음
상담예약테이블의 PK는 (고객번호, 상담분야)이다. 업무 규칙은 다음과 같다.- 한 고객은 상담분야별로 한 명의 상담사에게 예약한다.
- 상담사 한 명은 하나의 상담분야만 담당한다.
- 하나의 상담분야는 여러 상담사가 담당할 수 있다.
고객번호 상담분야 상담사 C1 세무 한세무 C2 세무 한세무 C2 법률 오법률 C3 세무 윤세무 위 테이블에 대한 설명으로 가장 적절한 것은?
- 상담사가 PK의 일부인 상담분야에만 종속되므로 제2정규형을 만족하지 않는다.
- 결정자인 상담사가 후보키가 아니므로 BCNF를 만족하지 않는다.
- 일반 속성 사이에 이행 함수 종속이 있으므로 제3정규형을 만족하지 않는다.
- 상담분야 컬럼에 같은 값이 반복되므로 제1정규형을 만족하지 않는다.
7.
사원테이블에 '관리자사번' 컬럼을 두어 같은 테이블의 '사번'을 참조하도록 설계하였다. 이러한 계층형 데이터 모델에 대한 설명으로 가장 적절한 것은?- 한 엔터티 안에서 인스턴스끼리 상하 관계를 가지며, 상위를 가리키는 FK가 같은 테이블의 PK를 참조한다.
- 최상위 인스턴스도 상위 식별자 값을 반드시 가져야 하므로 관리자사번은 NOT NULL로 정의한다.
- 같은 테이블은 한 SQL에서 두 번 조인할 수 없으므로 관리자 정보는 별도 테이블로 분리해야 한다.
- 자기 참조 관계는 M:N 관계이므로 반드시 교차 엔터티를 두어 해소해야 한다.
8. IE 표기법으로 작성된 다음 ERD를 보고 트랜잭션 처리를 설계하려 한다. (
|는 필수,o는 선택,{는 여러 건을 의미한다.)- 회원 1명은 예약을 0건 이상 할 수 있고, 예약은 반드시 한 회원에 속한다.
- 예약 1건은 반드시 1개 이상의 예약좌석을 가지며, 예약좌석은 반드시 한 예약에 속한다.
다음 중 가장 적절한 것은?
회원 ||--o{ 예약 : 신청한다 예약 ||--|{ 예약좌석 : 포함한다- 회원과 예약은 필수 관계이므로 회원 가입 시 예약을 반드시 함께 입력해야 한다.
- 예약과 예약좌석은 선택 관계이므로 예약만 먼저 COMMIT해도 정합성에 문제가 없다.
- 예약과 예약좌석은 양쪽 모두 필수이므로 하나의 트랜잭션에서 함께 입력하고 COMMIT해야 한다.
- 세 엔터티는 관계로 연결되어 있으므로 회원·예약·예약좌석을 모두 하나의 트랜잭션으로 묶어야 한다.
9. 테이블
T의 컬럼COL에 다음 4개 행이 저장되어 있다.COL 10 20 30 NULL 다음 중 결과가 1건 이상 반환되는 SQL은? (Oracle 기준)
SELECT * FROM T WHERE COL = NULL;SELECT * FROM T WHERE COL NOT IN (10, NULL);SELECT * FROM T WHERE COL IN (NULL);SELECT * FROM T WHERE COL NOT IN (10, 20);
10.
주문상세엔터티의 주식별자로 다음 세 가지 안을 검토하고 있다. 업무 규칙상 한 주문에 같은 상품은 한 줄만 허용된다.- (가) 주문번호 + 상품코드
- (나) 주문번호 + 순번 (순번은 주문 내에서 1부터 차례로 부여)
- (다) 주문상세ID (시퀀스로 생성한 단일 값)
다음 중 가장 적절한 것은?
- (나)의 순번은 업무가 아니라 편의상 부여한 값이므로 (나)는 인조식별자에 해당한다.
- (나)는 부모 식별자인 주문번호를 포함하므로 본질식별자로 분류된다.
- (다)를 PK로 사용하면 (주문번호, 상품코드)의 중복이 PK 제약으로 자동 차단된다.
- (가)는 둘 이상의 속성으로 구성된 복합식별자이므로 인조식별자로 분류된다.
11. 관계형 데이터베이스의 연산과 이에 대응하는 SQL 구문을 짝지은 것으로 적절하지 않은 것은?
- 선택(Selection) - WHERE 절
- 투영(Projection) - SELECT 절
- 차집합(Difference) - INTERSECT
- 곱집합(Product) - CROSS JOIN
12. 다음 [EMP] 테이블에 SQL을 실행했을 때 B, C, D 행의 TOTAL 값으로 옳은 것은?
[EMP]
ENAME SAL COMM A 300 50 B 400 NULL C NULL 100 D 200 0 SELECT ENAME, SAL + COMM AS TOTAL FROM EMP WHERE ENAME IN ('B', 'C', 'D');- B: 400, C: 100, D: 200
- B: NULL, C: NULL, D: 200
- B: 400, C: NULL, D: 200
- B: NULL, C: NULL, D: NULL
13. 다음 SQL을 구성하는 절의 논리적 실행 순서로 옳은 것은?
SELECT DEPTNO, SUM(SAL) -- ㉠ FROM EMP -- ㉡ WHERE JOB <> 'CLERK' -- ㉢ GROUP BY DEPTNO -- ㉣ HAVING SUM(SAL) > 5000 -- ㉤ ORDER BY 2 DESC; -- ㉥- ㉠ → ㉡ → ㉢ → ㉣ → ㉤ → ㉥
- ㉡ → ㉢ → ㉠ → ㉣ → ㉤ → ㉥
- ㉡ → ㉣ → ㉢ → ㉤ → ㉠ → ㉥
- ㉡ → ㉢ → ㉣ → ㉤ → ㉠ → ㉥
14. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)
SELECT LTRIM('aabcaab', 'ab'), RTRIM('xyzzyx', 'xy'), LPAD('SQL', 5, '#'), REPLACE('A1B1C1', '1') FROM DUAL;bcaab, xyzz, ##SQL, ABCcaab, zz, SQL##, ABCcaab, xyzz, ##SQL, ABCcaab, xyzz, ##SQL, A1B1C1
15. 다음 [MEMBER] 테이블에 SQL을 실행했을 때 결과 값은?
[MEMBER]
ID POINT 1 1200 2 800 3 NULL 4 500 5 3000 SELECT COUNT(CASE WHEN POINT >= 1000 THEN 'GOLD' WHEN POINT >= 600 THEN 'SILVER' END) AS CNT FROM MEMBER;- 2
- 3
- 4
- 5
16. 다음 SQL의 실행 결과로 옳은 것은? (Oracle, 날짜는 YYYY-MM-DD 형식으로 표시된다.)
SELECT ADD_MONTHS(DATE '2025-01-31', 1), LAST_DAY(DATE '2024-02-05'), MONTHS_BETWEEN(DATE '2025-03-01', DATE '2025-06-01') FROM DUAL;2025-02-28, 2024-02-29, -32025-03-03, 2024-02-29, 32025-02-28, 2024-02-28, -32025-02-28, 2024-02-29, 3
17. 다음 [PRODUCT] 테이블에 대해 (가), (나) SQL을 실행했을 때 결과로 옳은 것은? (Oracle, 대소문자를 구분한다.)
[PRODUCT]
CODE A_100 AB100 A_2 a_300 XA_10 -- (가) SELECT COUNT(*) FROM PRODUCT WHERE CODE LIKE 'A_%'; -- (나) SELECT COUNT(*) FROM PRODUCT WHERE CODE LIKE 'A\_%' ESCAPE '\';- (가) 3, (나) 3
- (가) 3, (나) 2
- (가) 2, (나) 2
- (가) 4, (나) 2
18. 다음 [EMP] 테이블에 대한 설명으로 옳은 것은? (Oracle)
[EMP]
ENAME SAL COMM A 1000 NULL B 2000 300 C 3000 0 D 2500 NULL E 1500 500 WHERE COMM = NULL조건을 사용하면 문법 오류가 발생한다.WHERE SAL BETWEEN 2500 AND 1500조건의 결과는 3건이다.WHERE SAL BETWEEN 1500 AND 2500 AND COMM IS NOT NULL조건의 결과는 2건이다.WHERE COMM IS NULL OR COMM = 0조건의 결과는 2건이다.
19. 다음 [ORDERS] 테이블에 SQL을 실행한 결과로 옳은 것은?
[ORDERS]
OID REGION AMT 1 서울 100 2 서울 200 3 부산 150 4 부산 NULL 5 대구 400 6 서울 NULL SELECT REGION, COUNT(*) AS CNT, SUM(AMT) AS TOT FROM ORDERS GROUP BY REGION HAVING COUNT(AMT) >= 2 OR SUM(AMT) > 300;- 서울(2, 300), 대구(1, 400)
- 서울(3, 300), 부산(2, 150), 대구(1, 400)
- 서울(3, 300)
- 서울(3, 300), 대구(1, 400)
20. EMP 테이블에 DEPTNO가 99인 행이 하나도 없을 때, (가), (나) SQL의 결과로 옳은 것은?
-- (가) SELECT COUNT(*), SUM(SAL) FROM EMP WHERE DEPTNO = 99; -- (나) SELECT COUNT(*), SUM(SAL) FROM EMP WHERE DEPTNO = 99 GROUP BY DEPTNO;- (가) 1행: 0, NULL / (나) 0행
- (가) 1행: 0, 0 / (나) 0행
- (가) 0행 / (나) 0행
- (가) 1행: 0, NULL / (나) 1행: 0, NULL
21. 다음 [EMP] 테이블에 SQL을 실행한 결과의 출력 순서로 옳은 것은?
[EMP]
ENAME DEPTNO SAL KIM 20 3000 LEE 10 2000 PARK 20 1500 CHOI 10 4000 JUNG 30 2000 KANG 20 3000 SELECT ENAME FROM EMP ORDER BY DEPTNO, SAL DESC, ENAME;- LEE, CHOI, PARK, KANG, KIM, JUNG
- CHOI, LEE, KANG, KIM, PARK, JUNG
- CHOI, LEE, KIM, KANG, PARK, JUNG
- CHOI, KANG, KIM, JUNG, LEE, PARK
22. EMP 테이블(ENAME, SAL, DEPTNO)에 대해 실행할 때 오류가 발생하는 SQL은?
SELECT DISTINCT DEPTNO FROM EMP ORDER BY SAL;SELECT ENAME FROM EMP ORDER BY SAL DESC;SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO ORDER BY COUNT(*);SELECT ENAME, SAL AS PAY FROM EMP ORDER BY PAY, 1;
23. 다음 [EMP] 테이블에 대해 (가), (나) SQL을 실행했을 때 결과 건수로 옳은 것은? (MGR은 관리자의 EMPNO이며 FK 제약은 없다.)
[EMP]
EMPNO ENAME MGR 1 강 NULL 2 남 1 3 도 1 4 류 2 5 문 9 -- (가) SELECT E.ENAME, M.ENAME FROM EMP E, EMP M WHERE E.MGR = M.EMPNO; -- (나) SELECT E.ENAME, M.ENAME FROM EMP E, EMP M WHERE E.MGR = M.EMPNO(+);- (가) 3, (나) 4
- (가) 4, (나) 5
- (가) 3, (나) 5
- (가) 5, (나) 5
24. 조인에 대한 설명으로 적절하지 않은 것은?
- 4개의 테이블을 조인할 때 필요한 조인 조건은 최소 3개다.
- Non-EQUI JOIN은 BETWEEN, >, <= 등 = 이외의 연산자를 조인 조건으로 사용한다.
- FROM 절에 두 테이블을 나열하고 조인 조건을 생략하면 카티션 곱이 발생한다.
- 조인은 PK와 FK 관계로 정의된 컬럼끼리만 수행할 수 있다.
25. EMP(EMPNO, ENAME, DEPTNO)와 DEPT(DEPTNO, DNAME, LOC) 테이블에 다음 SQL을 실행했을 때, 결과의 첫 번째 컬럼과 전체 컬럼 수로 옳은 것은?
SELECT * FROM EMP JOIN DEPT USING (DEPTNO);- DEPTNO로 시작, 5개
- EMPNO로 시작, 5개
- DEPTNO로 시작, 6개
- EMPNO로 시작, 6개
26. 다음 [A], [B] 테이블에 SQL을 실행했을 때 결과 값은?
[A]
ID V 1 a 2 b 3 c 3 d [B]
ID W 2 x 3 y 4 z 5 w SELECT COUNT(*) FROM A FULL OUTER JOIN B ON A.ID = B.ID;- 3
- 4
- 5
- 6
27. 다음 (가), (나) SQL의 결과 건수로 옳은 것은?
[EMP]
ENAME DEPTNO SAL A 10 100 B 10 250 C 20 200 D 20 300 E 30 150 F 30 400 -- (가) SELECT COUNT(*) FROM EMP WHERE SAL > ANY (SELECT SAL FROM EMP WHERE DEPTNO = 20); -- (나) SELECT COUNT(*) FROM EMP WHERE SAL > ALL (SELECT SAL FROM EMP WHERE DEPTNO = 20);- (가) 3건, (나) 0건
- (가) 4건, (나) 1건
- (가) 3건, (나) 1건
- (가) 1건, (나) 3건
28. 다음 SQL의 실행 결과로 옳은 것은?
[DEPT]
DEPTNO 10 20 30 40 [EMP]
EMPNO DEPTNO 1 10 2 10 3 30 4 NULL SELECT D.DEPTNO FROM DEPT D WHERE NOT EXISTS (SELECT 1 FROM EMP E WHERE E.DEPTNO = D.DEPTNO) ORDER BY D.DEPTNO;20, 40- 결과 없음(0건)
10, 3020, 40, NULL
29. 다음 SQL의 결과 건수는?
[T1]
C1 1 2 2 NULL 3 [T2]
C1 2 2 NULL 4 SELECT C1 FROM T1 INTERSECT SELECT C1 FROM T2;- 1건
- 3건
- 4건
- 2건
30. 집합 연산자에 대한 설명으로 가장 적절하지 않은 것은?
- 결과 집합의 컬럼명은 첫 번째 SELECT 절의 컬럼명이나 별칭을 따른다.
- ORDER BY는 각 SELECT마다 쓸 수 있고, 각각 정렬된 순서가 유지된 채 결합된다.
- 각 SELECT 절의 컬럼 수가 같고, 대응하는 컬럼의 데이터 타입이 호환되어야 한다.
- UNION ALL은 중복 제거 작업이 없어 일반적으로 UNION보다 성능상 유리하다.
31. 다음 SQL의 결과 건수는?
[EMP]
DEPTNO JOB SAL 10 CLERK 100 10 MANAGER 200 20 CLERK 150 20 ANALYST 300 30 CLERK 120 SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY CUBE(DEPTNO, JOB);- 12건
- 9건
- 11건
- 13건
32. EMP 테이블을 DEPTNO, JOB으로 집계할 때, 다음 중 생성되는 집계 수준(결과 행의 구성)이 다른 하나는? (행의 출력 순서는 고려하지 않는다)
GROUP BY CUBE(DEPTNO, JOB)GROUP BY CUBE(JOB, DEPTNO)GROUP BY ROLLUP(JOB, DEPTNO)GROUP BY GROUPING SETS((DEPTNO, JOB), (DEPTNO), (JOB), ())
33. 다음 SQL의 실행 결과에서 S 값을 DAY 순서대로 나열한 것으로 옳은 것은?
[T]
DAY AMT 1 10 2 20 3 30 4 40 5 50 SELECT DAY, SUM(AMT) OVER (ORDER BY DAY ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS S FROM T ORDER BY DAY;10, 30, 60, 100, 15030, 60, 90, 120, 9030, 60, 90, 120, 15010, 30, 50, 70, 90
34. 다음 SQL의 실행 결과에서 LV 값을 출력 순서대로 나열한 것으로 옳은 것은?
[EMP]
ENAME DEPTNO SAL A 10 100 B 10 200 C 10 300 D 20 400 E 20 500 SELECT ENAME, LAST_VALUE(SAL) OVER (PARTITION BY DEPTNO ORDER BY SAL) AS LV FROM EMP ORDER BY DEPTNO, SAL;300, 300, 300, 500, 500100, 100, 100, 400, 400500, 500, 500, 500, 500100, 200, 300, 400, 500
35. 다음 SQL의 실행 결과에서 GRP 값을 NAME 순서(A~G)대로 나열한 것으로 옳은 것은?
[T]
NAME SCORE A 95 B 90 C 85 D 80 E 75 F 70 G 65 SELECT NAME, NTILE(3) OVER (ORDER BY SCORE DESC) AS GRP FROM T ORDER BY NAME;1, 1, 2, 2, 3, 3, 31, 1, 2, 2, 2, 3, 31, 1, 1, 2, 2, 2, 31, 1, 1, 2, 2, 3, 3
36. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
[EMP]
ENAME SAL A 500 B 300 C 400 D 200 E 100 F 350 SELECT ENAME FROM (SELECT ROWNUM AS RN, ENAME FROM (SELECT ENAME FROM EMP ORDER BY SAL DESC)) WHERE RN BETWEEN 3 AND 4;C, FF, B- 결과 없음(0건)
B, D
37. 다음 SQL의 결과 건수는? (SQL Server 기준)
[EMP]
ENAME SAL A 500 B 400 C 400 D 300 E 300 F 200 SELECT TOP(4) WITH TIES ENAME, SAL FROM EMP ORDER BY SAL DESC;- 5건
- 4건
- 6건
- 3건
38. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준, 출력 순서대로 표기)
[EMP]
EMPNO ENAME MGR 1 KING NULL 2 JONES 1 3 BLAKE 1 4 SCOTT 2 5 ADAMS 4 6 ALLEN 3 SELECT ENAME FROM EMP START WITH ENAME = 'ADAMS' CONNECT BY EMPNO = PRIOR MGR;ADAMSADAMS, SCOTT, JONESADAMS, SCOTT, JONES, KINGKING, JONES, SCOTT, ADAMS
39. 다음 SQL의 결과에 포함되지 않는 값은? (Oracle 기준)
[CAT]
ID NAME PID 1 전자 NULL 2 PC 1 3 TV 1 4 노트북 2 5 OLED 3 6 데스크톱 2 SELECT SYS_CONNECT_BY_PATH(NAME, '/') AS PATH FROM CAT WHERE CONNECT_BY_ISLEAF = 1 START WITH PID IS NULL CONNECT BY PRIOR ID = PID;/전자/PC/노트북/전자/TV/OLED/전자/PC/전자/PC/데스크톱
40. 다음 SQL의 결과 건수는? (Oracle 기준)
[SCORE]
NAME KOR ENG MATH A 90 NULL 80 B NULL NULL 70 C 85 95 NULL SELECT * FROM SCORE UNPIVOT (PT FOR SUBJ IN (KOR, ENG, MATH));- 9건
- 3건
- 6건
- 5건
41. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
SELECT REGEXP_REPLACE('a1b22c333', '[0-9]+', '#') AS R FROM DUAL;- a#b22c333
- a#b#c#
- a#b##c###
- abc
42. 다음 (가), (나)의 실행 결과로 옳은 것은? (Oracle 기준)
-- (가) SELECT REGEXP_SUBSTR('<b>KOR</b><b>ENG</b>', '<b>.*</b>') FROM DUAL; -- (나) SELECT REGEXP_SUBSTR('<b>KOR</b><b>ENG</b>', '<b>.*?</b>') FROM DUAL;- (가)
<b>KOR</b><b>ENG</b>, (나)<b>KOR</b> - (가)
<b>KOR</b>, (나)<b>KOR</b><b>ENG</b> - (가)
<b>KOR</b>, (나)<b>KOR</b> - (가)
<b>ENG</b>, (나)<b>KOR</b>
- (가)
43. DELETE, TRUNCATE, DROP에 대한 설명으로 가장 적절한 것은? (Oracle 기준)
- TRUNCATE는 WHERE 절을 사용해 조건에 맞는 행만 삭제할 수 있다.
- DELETE로 전체 행을 삭제하면 테이블이 사용하던 저장 공간이 반환된다.
- TRUNCATE는 테이블 구조를 남긴 채 모든 행을 지우며 ROLLBACK할 수 없다.
- DROP TABLE을 실행하면 데이터만 삭제되고 테이블 구조는 그대로 남는다.
44. 다음 두 테이블에 대해 아래 UPDATE 문을 실행한 후
SELECT SUM(BONUS) FROM EMP_SAL;의 결과는?EMP_SAL
EMPNO GRADE BONUS 1 A 100 2 B 200 3 C 300 BONUS_RULE
GRADE AMT A 500 B 400 UPDATE emp_sal e SET bonus = (SELECT r.amt FROM bonus_rule r WHERE r.grade = e.grade);- 900
- 1200
- 600
- NULL
45. SQL Server의 기본 설정(AUTO COMMIT)에서 비어 있는 T 테이블(C 컬럼)에 대해 아래 문장을 순서대로 실행했다. 최종적으로 T에 남아 있는 C 값은? (오류가 발생한 문장은 무시하고 다음 문장이 실행된다고 가정)
INSERT INTO t VALUES (1); BEGIN TRAN; INSERT INTO t VALUES (2); SAVE TRAN sp1; INSERT INTO t VALUES (3); ROLLBACK TRAN sp1; INSERT INTO t VALUES (4); COMMIT TRAN; DELETE FROM t WHERE c = 1; ROLLBACK;- 1, 2, 4
- 1, 2, 3, 4
- 2, 3, 4
- 2, 4
46. 트랜잭션 TX1이
SELECT COUNT(*) FROM orders WHERE status = 'NEW';로 5건을 조회했다. 그 사이 TX2가 status가 'NEW'인 주문 1건을 새로 INSERT하고 COMMIT했고, TX1이 같은 SELECT를 다시 실행하자 6건이 조회되었다. 이 현상과 이를 방지할 수 있는 격리 수준(ANSI 표준 기준)을 바르게 짝지은 것은?- Dirty Read - READ COMMITTED
- Phantom Read - SERIALIZABLE
- Non-Repeatable Read - REPEATABLE READ
- Phantom Read - REPEATABLE READ
47. EMP 테이블의 ENAME 컬럼 크기를 40으로 늘리려 한다. DBMS와 문장이 올바르게 짝지어진 것은?
- SQL Server: ALTER TABLE emp ALTER COLUMN ename VARCHAR(40);
- Oracle: ALTER TABLE emp ALTER COLUMN ename VARCHAR2(40);
- SQL Server: ALTER TABLE emp MODIFY (ename VARCHAR(40));
- Oracle: ALTER TABLE emp MODIFY COLUMN ename TO VARCHAR2(40);
48. Oracle에서 다음 테이블에 한 행을 입력했다. 아래 조건 중 조회 결과가 0건인 것은?
CREATE TABLE code_t ( c1 CHAR(5), v1 VARCHAR2(5) ); INSERT INTO code_t VALUES ('AB', 'AB'); COMMIT;- SELECT * FROM code_t WHERE c1 = 'AB';
- SELECT * FROM code_t WHERE LENGTH(c1) = 5;
- SELECT * FROM code_t WHERE v1 = 'AB';
- SELECT * FROM code_t WHERE c1 = v1;
49. DBA와 사용자들이 아래 순서로 DCL을 실행했다. 실행 후 CREATE VIEW 권한을 가지고 있는 사용자를 모두 고른 것은? (Oracle)
-- DBA 실행 GRANT CREATE VIEW TO u1 WITH ADMIN OPTION; -- U1 실행 GRANT CREATE VIEW TO u2 WITH ADMIN OPTION; -- U2 실행 GRANT CREATE VIEW TO u3; -- DBA 실행 REVOKE CREATE VIEW FROM u1;- 없음
- U2, U3
- U3
- U1, U2, U3
50. ROLE에 대한 설명으로 적절하지 않은 것은? (Oracle)
- 하나의 롤에 시스템 권한과 오브젝트 권한을 함께 담을 수 있다.
- 롤에 다른 롤을 부여하여 중첩된 구조로 관리할 수 있다.
- 롤에서 권한을 회수해도 그 롤을 이미 받은 사용자에게는 권한이 남는다.
- CONNECT 롤은 접속, RESOURCE 롤은 객체 생성 관련 권한을 주로 담는다.
AI가 SQLD 출제 범위를 바탕으로 새로 만든 예상 문제이며, 실제 기출문제가 아닙니다.