SQLD 모의고사 6회
50문항 · 제한 시간 90분. 다 풀면 과목별 점수와 합격 여부, 문제마다 해설을 보여 줘요.
1. 다음 중 ERD 작성 절차에 대한 설명으로 가장 적절한 것은?
- 엔터티를 그리고 배치한 뒤 관계 설정, 관계명, 관계차수, 관계선택사양 순으로 기술한다.
- 가장 중요한 엔터티는 업무 흐름이 끝나는 오른쪽 하단에 배치하는 것이 원칙이다.
- 관계선택사양을 먼저 정한 뒤 이를 근거로 관계를 설정하고 관계명을 기술한다.
- 관계선이 교차하더라도 엔터티를 생성된 순서대로 일렬로 배치하는 것이 원칙이다.
2. 병원 업무를 분석하여 다음 엔터티를 도출하였다.
- 환자: 최초 내원 시 등록되는 환자 정보
- 의약품: 병원이 취급하는 약품 정보
- 진료: 환자가 내원하여 받은 진료 건
- 처방상세: 진료와 의약품으로부터 발생하는 진료별 처방 약품·용량 내역
발생 시점에 따른 엔터티 분류로 가장 적절한 것은?
- 환자 - 중심 엔터티
- 처방상세 - 행위 엔터티
- 진료 - 기본 엔터티
- 의약품 - 행위 엔터티
3. 다음 중 속성 명명 규칙에 대한 설명으로 가장 적절하지 않은 것은?
- '고객의 이름'처럼 소유격을 쓰기보다 '고객명'처럼 간결한 명사형으로 짓는다.
- 의미가 모호해지는 것을 막기 위해 약어 사용은 가급적 피한다.
- 의미를 정확히 전달하도록 '고객이 주문한 날짜'처럼 서술식으로 이름을 짓는다.
- 같은 이름이 다른 의미로 쓰이지 않도록 전체 모델에서 유일한 이름을 권장한다.
4. IE 표기법 ERD에서
사원과주차권사이 관계선의사원쪽 끝에는 막대 두 개(||),주차권쪽 끝에는 원과 막대(o|)가 표시되어 있다. 관계명은 사원 기준 '발급받는다', 주차권 기준 '발급된다'이다.이 ERD의 해석으로 가장 적절한 것은?
- 각 사원은 여러 장의 주차권을 때때로 발급받는다.
- 각 사원은 반드시 하나의 주차권을 발급받아야 한다.
- 각 주차권은 여러 사원에게 때때로 발급된다.
- 각 주차권은 반드시 한 명의 사원에게 발급되며, 주차권이 없는 사원도 있을 수 있다.
5.
부서엔터티의 주식별자 후보로 다음이 제시되었다.후보 특징 부서명 현업이 흔히 부르는 이름. 조직 개편 때 바뀌기도 하고 계열사 간 같은 이름이 존재함 부서코드 인사 시스템이 부여하는 6자리 코드. 업무 전반에서 부서를 구분할 때 사용함 부서명+설립일자+상위부서명 세 속성을 조합하면 현재까지는 중복이 없음 주식별자 도출에 대한 판단으로 가장 적절한 것은?
- 업무에서 부서 구분에 자주 쓰이고 이름처럼 바뀌지 않는 부서코드를 주식별자로 지정한다.
- 현업이 가장 많이 부르는 이름이 중요하므로 부서명을 주식별자로 지정한다.
- 유일성을 확실히 하기 위해 부서명+설립일자+상위부서명을 주식별자로 지정한다.
- 부서코드와 부서명을 묶은 복합식별자로 주식별자를 구성해 의미를 보강한다.
6.
주문품목테이블의 PK는 (주문번호, 상품코드)이고 속성과 함수 종속은 다음과 같다.- 속성: 주문번호, 상품코드, 주문일자, 고객번호, 고객명, 상품명, 수량
- 주문번호 → 주문일자, 고객번호
- 고객번호 → 고객명
- 상품코드 → 상품명
- (주문번호, 상품코드) → 수량
부분 함수 종속만 제거하고 이행 함수 종속은 아직 제거하지 않은 결과(제2정규형)로 가장 적절한 것은?
- 주문(주문번호, 주문일자, 고객번호, 고객명) / 상품(상품코드, 상품명) / 주문품목(주문번호, 상품코드, 수량)
- 주문(주문번호, 주문일자, 고객번호) / 고객(고객번호, 고객명) / 상품(상품코드, 상품명) / 주문품목(주문번호, 상품코드, 수량)
- 주문(주문번호, 주문일자, 고객번호, 고객명, 상품명) / 주문품목(주문번호, 상품코드, 수량)
- 주문품목(주문번호, 상품코드, 주문일자, 수량) / 상품(상품코드, 상품명) / 고객(고객번호, 고객명)
7. 회사 → 부서 → 사원으로 이어지는 1:M 관계를 두 가지 방식으로 설계하였다.
- (A) 식별 관계 연속: 부서 PK(회사코드, 부서코드), 사원 PK(회사코드, 부서코드, 사번)
- (B) 비식별 관계: 부서 PK(부서ID), FK 회사코드 / 사원 PK(사번), FK 부서ID
'회사코드별 사원 수'를 구하는 SQL을 작성할 때의 설명으로 가장 적절한 것은?
- (A)는 사원의 PK가 단순하여 두 방식 중 조인 조건이 가장 짧다.
- (B)는 사원 테이블만 조회해도 회사코드별 사원 수를 구할 수 있다.
- (A)와 (B) 모두 회사코드를 얻으려면 부서 테이블을 반드시 조인해야 한다.
- (A)는 사원 PK가 길어지는 대신 부서를 거치지 않고 사원만으로 집계할 수 있다.
8. 업무상 고객은 주문 없이도 회원으로 가입할 수 있다. 그런데 ERD에는 고객 쪽에서 주문이 '1건 이상 필수'로 잘못 표기되어 있었고, 개발자는 이를 근거로 '회원가입 시 첫 주문을 함께 INSERT해야만 COMMIT'하도록 하나의 트랜잭션으로 구현하였다.
이 구현에서 가장 우려되는 문제는?
- 고객 없이 주문이 저장되어 참조 무결성이 깨진다.
- 고객 정보가 주문 건수만큼 반복 저장되어 갱신 이상이 발생한다.
- 주문 없이 가입하려는 고객을 등록할 수 없고 트랜잭션이 커져 잠금 경합이 늘 수 있다.
- 주문만 먼저 COMMIT되어 고객 정보가 없는 주문이 남는다.
9.
EMP테이블의 데이터가 다음과 같을 때, Q1과 Q2의 결과 건수로 옳은 것은? (Oracle 기준)EMP_ID SAL COMM E1 400 NULL E2 250 50 E3 280 NULL E4 NULL 10 E5 200 0 -- Q1 SELECT COUNT(*) FROM EMP WHERE SAL >= 300 OR COMM > 30; -- Q2 SELECT COUNT(*) FROM EMP WHERE NOT (SAL >= 300 OR COMM > 30);- Q1: 2건 / Q2: 3건
- Q1: 2건 / Q2: 1건
- Q1: 3건 / Q2: 2건
- Q1: 4건 / Q2: 1건
10. 상품평 테이블을 다음과 같이 인조식별자 REVIEW_ID로 설계하였다. 업무 규칙상 회원 한 명은 상품 하나에 상품평을 한 건만 작성할 수 있다.
이 업무 규칙 위반(중복 입력)을 DBMS 차원에서 차단하기 위해 추가할 문장으로 가장 적절한 것은? (Oracle 기준)
CREATE TABLE REVIEW ( REVIEW_ID NUMBER PRIMARY KEY, MEMBER_NO VARCHAR2(10) NOT NULL, PROD_CD VARCHAR2(10) NOT NULL, CONTENT VARCHAR2(1000) );- CREATE INDEX IX_REVIEW_01 ON REVIEW (MEMBER_NO, PROD_CD);
- ALTER TABLE REVIEW ADD CONSTRAINT CK_REVIEW_01 CHECK (MEMBER_NO <> PROD_CD);
- CREATE SEQUENCE SEQ_REVIEW START WITH 1 INCREMENT BY 1 NOCYCLE;
- ALTER TABLE REVIEW ADD CONSTRAINT UK_REVIEW_01 UNIQUE (MEMBER_NO, PROD_CD);
11. 테이블 관련 용어에 대한 설명으로 적절하지 않은 것은?
- 테이블의 가로 한 줄인 행은 튜플(Tuple) 또는 레코드라고도 한다.
- 테이블의 세로 한 줄인 열은 속성(Attribute) 또는 필드라고도 한다.
- 외래키는 다른 테이블의 기본키(또는 고유키)를 참조하는 컬럼이다.
- 기본키는 행을 유일하게 식별하므로 중복은 불가하지만 NULL은 한 건까지 허용한다.
12. 다음 중 Oracle에서 실행 시 오류가 발생하는 SQL은? (EMP 테이블에는 ENAME, SAL 컬럼이 있다.)
SELECT *, ENAME FROM EMP;SELECT EMP.*, ENAME FROM EMP;SELECT ENAME, E.* FROM EMP E;SELECT E.*, SAL * 12 FROM EMP E;
13. 다음 SQL을 SQL Server(기본 설정)에서 실행한 결과로 옳은 것은?
SELECT 'SQL' + 'D' AS A, 'A' + NULL AS B, CONCAT('A', NULL, 'B') AS C, 10 / 4 AS D;SQLD, A, AB, 2.5SQLD, NULL, NULL, 2SQLD, NULL, AB, 2SQLD, A, NULL, 2.5
14. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)
SELECT INSTR('BANANA', 'AN', 1, 2) AS A, INSTR('BANANA', 'A', -1) AS B, INSTR('BANANA', 'X') AS C, INSTR('BANANA', 'NA', 4) AS D FROM DUAL;4, 6, 0, 54, 2, NULL, 52, 6, 0, 34, 1, 0, 3
15. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)
SELECT TO_CHAR(DATE '2025-07-04', 'Q') AS A, EXTRACT(MONTH FROM DATE '2025-07-04') AS B, TO_CHAR(DATE '2025-07-04', 'DDD') AS C, TO_CHAR(DATE '2025-07-04', 'YY/MM') AS D FROM DUAL;2, 7, 185, 25/073, 7, 185, 25/073, 7, 186, 25/073, 7, 185, 2025/07
16. 다음 [EMP] 테이블에 SQL을 실행했을 때 GRP 값을 ENAME 순서대로 나열한 것으로 옳은 것은? (Oracle)
[EMP]
ENAME DEPTNO JOB A 10 MANAGER B 20 CLERK C 20 ANALYST D NULL CLERK E 30 CLERK SELECT ENAME, DECODE(DEPTNO, 10, 'ACC', 20, DECODE(JOB, 'CLERK', 'R-C', 'R-X'), 'ETC') AS GRP FROM EMP ORDER BY ENAME;ACC, R-C, R-X, NULL, ETCACC, R-C, R-C, ETC, ETCACC, R-X, R-X, NULL, ETCACC, R-C, R-X, ETC, ETC
17. 다음 [EMP] 테이블에 대해 (가), (나) SQL을 실행했을 때 결과로 옳은 것은?
[EMP]
ENAME COMM A 0 B 100 C NULL D 300 E NULL F 0 -- (가) SELECT COUNT(*) FROM EMP WHERE COMM <> 0; -- (나) SELECT COUNT(*) FROM EMP WHERE COMM IS NOT NULL;- (가) 4, (나) 4
- (가) 2, (나) 6
- (가) 2, (나) 4
- (가) 4, (나) 2
18. 다음 [EMP] 테이블에서 DEPTNO 컬럼 값이 아래와 같을 때, 결과 건수가 나머지와 다른 조건은?
[EMP]
EMPNO DEPTNO 1 10 2 20 3 30 4 NULL 5 40 6 20 WHERE DEPTNO NOT IN (10, 20)WHERE NVL(DEPTNO, 0) NOT IN (10, 20)WHERE DEPTNO <> 10 AND DEPTNO <> 20WHERE NOT (DEPTNO = 10 OR DEPTNO = 20)
19. 다음 [EXAM] 테이블에 SQL을 실행한 결과로 옳은 것은? (문자는 가나다순으로 정렬된다.)
[EXAM]
SNO SCORE 1 92 2 78 3 NULL 4 85 5 64 6 80 7 79 SELECT CASE WHEN SCORE >= 80 THEN '상' WHEN SCORE >= 70 THEN '중' ELSE '하' END AS LV, COUNT(*) AS CNT FROM EXAM GROUP BY CASE WHEN SCORE >= 80 THEN '상' WHEN SCORE >= 70 THEN '중' ELSE '하' END ORDER BY CNT DESC, LV;상, 3/중, 2/하, 1상, 3/중, 2/하, 2중, 3/상, 2/하, 2상, 3/중, 2/하, 1/NULL, 1
20. WHERE 절과 HAVING 절에 대한 설명으로 적절하지 않은 것은?
- WHERE 절은 GROUP BY로 그룹을 만들기 전에 개별 행을 걸러낸다.
- HAVING 절에는 SELECT 절에 나오지 않은 집계 함수도 조건으로 쓸 수 있다.
- 집계 함수를 이용한 조건은 WHERE 절과 HAVING 절 중 어디에 써도 결과가 같다.
- 그룹핑 컬럼에 대한 조건은 HAVING보다 WHERE에 두는 편이 처리할 행 수를 줄여 효율적이다.
21. 다음 [EMP] 테이블에 SQL을 실행한 결과의 출력 순서로 옳은 것은? (문자는 가나다순으로 정렬된다.)
[EMP]
ENAME DEPT SAL A 인사 300 B 개발 500 C 인사 400 D 영업 200 E 개발 500 F 영업 600 SELECT ENAME FROM EMP ORDER BY DEPT DESC, SAL, ENAME DESC;- A, C, D, F, E, B
- E, B, D, F, A, C
- A, C, D, F, B, E
- C, A, F, D, E, B
22. 다음 [PLAYER] 테이블에 SQL Server에서 SQL을 실행한 결과의 출력 순서로 옳은 것은? (이름은 가나다순으로 정렬된다.)
[PLAYER]
NAME GOALS 민준 3 서연 NULL 도윤 5 하은 3 지호 NULL -- SQL Server SELECT NAME FROM PLAYER ORDER BY GOALS DESC, NAME;- 서연, 지호, 도윤, 민준, 하은
- 도윤, 하은, 민준, 지호, 서연
- 서연, 지호, 민준, 하은, 도윤
- 도윤, 민준, 하은, 서연, 지호
23. 다음 [DEPT], [EMP] 테이블에 SQL을 실행한 결과로 옳은 것은? (문자는 가나다순으로 정렬된다.)
[DEPT]
DEPTNO DNAME 10 기획 20 개발 30 영업 [EMP]
EMPNO DEPTNO 1 10 2 20 3 20 4 20 SELECT D.DNAME, COUNT(*) AS C1, COUNT(E.EMPNO) AS C2 FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO(+) GROUP BY D.DNAME ORDER BY D.DNAME;개발, 3, 3/기획, 1, 1/영업, 0, 0개발, 3, 3/기획, 1, 1개발, 3, 3/기획, 1, 1/영업, 1, 0개발, 3, 3/기획, 1, 1/영업, 1, 1
24. DEPT(DEPTNO, DNAME), EMP(EMPNO, DEPTNO, SAL) 테이블에 대해 Oracle에서 실행할 때 오류가 발생하는 SQL은?
SELECT D.DNAME, E.EMPNO FROM DEPT D, EMP E WHERE E.DEPTNO(+) = D.DEPTNO;SELECT D.DNAME, E.EMPNO FROM DEPT D, EMP E WHERE D.DEPTNO(+) = E.DEPTNO(+);SELECT D.DNAME, E.EMPNO FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO(+) AND E.SAL(+) > 1000;SELECT D.DNAME, E.EMPNO FROM DEPT D, EMP E WHERE D.DEPTNO(+) = E.DEPTNO;
25. 다음 [A], [B] 테이블에 SQL을 실행했을 때, 결과의 세 번째 행과 전체 행 수로 옳은 것은? (Oracle)
[A]
ID VA 1 가 2 나 4 라 [B]
ID VB 2 x 3 y 4 z 4 w SELECT COALESCE(A.ID, B.ID) AS ID, A.VA, B.VB FROM A FULL OUTER JOIN B ON A.ID = B.ID ORDER BY 1, 3;3, NULL, y/ 4행4, 라, z/ 5행4, 라, w/ 5행3, NULL, y/ 5행
26. ANSI/ISO 표준 조인에 대한 설명으로 적절하지 않은 것은?
- SQL Server는 NATURAL JOIN과 USING 조건절을 모두 지원한다.
- ON 절에는 등호 외에 BETWEEN, 부등호 등의 조건도 쓸 수 있다.
- JOIN 앞의 INNER를 생략하면 INNER JOIN으로 처리된다.
- CROSS JOIN은 조인 조건 없이 두 테이블의 모든 행 조합을 만든다.
27. 다음 SQL의 실행 결과로 옳은 것은?
[CUST]
CID CNAME 1 김 2 이 3 박 4 최 [ORD]
OID CID AMT 101 1 50 102 1 150 103 2 80 104 3 200 105 3 NULL SELECT C.CNAME FROM CUST C WHERE EXISTS (SELECT 1 FROM ORD O WHERE O.CID = C.CID AND O.AMT >= 100) ORDER BY C.CID;김, 박김, 이, 박이, 최김, 이, 박, 최
28. 다음 SQL의 실행 결과로 옳은 것은?
[EMP]
ENAME DEPTNO SAL A 10 300 B 10 500 C 10 400 D 20 200 E 20 600 F 20 200 SELECT ENAME FROM EMP E WHERE 2 > (SELECT COUNT(*) FROM EMP X WHERE X.DEPTNO = E.DEPTNO AND X.SAL > E.SAL) ORDER BY ENAME;B, C, EB, C, D, EB, C, D, E, FA, B, C, D, E, F
29. 다음 SQL의 실행 결과로 옳은 것은? (값의 순서는 고려하지 않는다)
[EMP]
ENAME DEPTNO JOB A 10 CLERK B 10 MANAGER C 10 CLERK D 20 CLERK E 20 ANALYST F 20 MANAGER G 30 SALESMAN SELECT JOB FROM EMP WHERE DEPTNO = 10 INTERSECT SELECT JOB FROM EMP WHERE DEPTNO = 20;CLERK, CLERK, MANAGERCLERK, MANAGERCLERKANALYST, CLERK, MANAGER
30. 다음 SQL의 실행 결과에 대한 설명으로 옳은 것은?
[A]
ID NAME 1 가 3 나 [B]
ID NAME 2 다 3 나 SELECT ID AS NO, NAME FROM A UNION ALL SELECT ID, NAME FROM B ORDER BY NO DESC;- 첫 번째 컬럼의 이름은 ID로 출력된다.
- 결과는 3행이며 (3, 나)는 한 번만 출력된다.
- 두 번째 SELECT에 NO 별칭이 없어 오류가 발생한다.
- 결과는 4행이며 첫 행의 NO 값은 3이다.
31. 다음 SQL의 결과 건수와 총계 행의 S 값으로 옳은 것은?
[EMP]
DEPTNO JOB SAL 10 CLERK 100 10 CLERK 50 20 MANAGER 300 20 CLERK 200 30 CLERK 150 SELECT DEPTNO, JOB, SUM(SAL) AS S FROM EMP GROUP BY GROUPING SETS ((DEPTNO, JOB), ());4행, 8005행, 7505행, 8008행, 800
32.
GROUP BY ROLLUP(A, B, C)와GROUP BY CUBE(A, B, C)가 각각 만드는 그룹 수준(그룹핑 조합)의 개수로 옳은 것은?ROLLUP 4개, CUBE 8개ROLLUP 3개, CUBE 6개ROLLUP 4개, CUBE 6개ROLLUP 3개, CUBE 8개
33. 다음 SQL의 실행 결과에서 M 값을 DAY 순서대로 나열한 것으로 옳은 것은?
[TEMP_LOG]
DAY TEMP 1 5 2 8 3 6 4 9 5 7 6 10 SELECT DAY, MAX(TEMP) OVER (ORDER BY DAY) AS M FROM TEMP_LOG ORDER BY DAY;10, 10, 10, 10, 10, 105, 8, 8, 9, 9, 105, 8, 6, 9, 7, 108, 8, 9, 9, 10, 10
34. 다음 SQL의 실행 결과에서 G 값을 NAME 순서(A~F)대로 나열한 것으로 옳은 것은?
[T]
NAME SCORE A 98 B 91 C 87 D 80 E 72 F 65 SELECT NAME, NTILE(4) OVER (ORDER BY SCORE DESC) AS G FROM T ORDER BY NAME;1, 2, 3, 3, 4, 41, 1, 2, 2, 3, 31, 2, 3, 4, 1, 21, 1, 2, 2, 3, 4
35. 다음 SQL의 실행 결과에서 GAP 값을 ENAME 순서(A~E)대로 나열한 것으로 옳은 것은?
[EMP]
ENAME DEPTNO HSEQ SAL A 10 1 300 B 10 2 200 C 10 3 400 D 20 1 500 E 20 2 100 SELECT ENAME, SAL - LAG(SAL) OVER (PARTITION BY DEPTNO ORDER BY HSEQ) AS GAP FROM EMP ORDER BY ENAME;NULL, -100, 200, NULL, -4000, -100, 200, 0, -400NULL, -100, 200, 100, -400100, -200, NULL, 400, NULL
36. 다음 SQL의 결과 건수는? (Oracle 기준)
[EMP]
ENAME DEPTNO SAL A 10 500 B 10 400 C 10 400 D 10 300 E 20 600 F 20 600 G 20 200 SELECT DEPTNO, ENAME, SAL FROM (SELECT DEPTNO, ENAME, SAL, DENSE_RANK() OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) AS RK FROM EMP) WHERE RK <= 2;- 4
- 5
- 3
- 6
37. Top N 쿼리에 대한 설명으로 옳지 않은 것은?
- SQL Server의 TOP (n)은 ORDER BY로 정렬된 결과에서 앞의 n건을 가져온다.
- Oracle의 ROWNUM은 ORDER BY가 끝난 뒤 부여되므로 같은 SELECT 문의 WHERE ROWNUM <= 3으로 정렬 기준 상위 3건을 구할 수 있다.
- FETCH FIRST n ROWS WITH TIES는 n번째 행과 정렬 값이 같은 행을 함께 반환한다.
- SQL Server에서 OFFSET … FETCH 구문을 사용하려면 ORDER BY 절이 있어야 한다.
38. 다음 SQL을 실행했을 때 CONNECT_BY_ISCYCLE 값이 1인 행의 NAME과 전체 결과 건수로 옳은 것은? (Oracle 기준)
[NODE]
ID NAME PID 1 A 3 2 B 1 3 C 2 4 D 2 SELECT NAME, LEVEL AS LV, CONNECT_BY_ISCYCLE AS CYC FROM NODE START WITH ID = 1 CONNECT BY NOCYCLE PRIOR ID = PID;- A, 5건
- A, 4건
- C, 4건
- C, 5건
39. 다음 SQL의 결과에 포함되는 행은? (E.ENAME, T.ENAME 순서로 표기)
[EMP]
EMPNO ENAME MGR 1 KING NULL 2 JONES 1 3 BLAKE 1 4 SCOTT 2 5 ADAMS 4 6 JAMES 3 SELECT E.ENAME, T.ENAME FROM EMP E INNER JOIN EMP M ON E.MGR = M.EMPNO LEFT OUTER JOIN EMP T ON M.MGR = T.EMPNO;- ADAMS, JONES
- ADAMS, SCOTT
- SCOTT, JONES
- KING, NULL
40. 다음 SQL의 결과에서 DEPT가 '인사'인 행의 A_CNT, B_CNT 값으로 옳은 것은?
[EVAL]
EMP DEPT GRADE e1 영업 A e2 영업 B e3 영업 A e4 개발 B e5 개발 C e6 인사 C SELECT DEPT, COUNT(CASE WHEN GRADE = 'A' THEN 1 END) AS A_CNT, SUM(CASE WHEN GRADE = 'B' THEN 1 END) AS B_CNT FROM EVAL GROUP BY DEPT;- 0, NULL
- NULL, NULL
- 0, 0
- NULL, 0
41. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
SELECT REGEXP_INSTR('catdogcowdog', 'dog|cow', 5, 2) AS POS FROM DUAL;- 7
- 4
- 10
- 12
42. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)
SELECT REGEXP_REPLACE('A-1 b_2!', '[^[:alnum:]]') AS R FROM DUAL;- A-1b_2
- A1b2
- A1 b2
- A1b_2
43. 다음 두 테이블에 대해 아래 MERGE 문을 실행(Oracle)한 후 TOTAL 테이블의 데이터로 옳은 것은? (ID, AMT 순)
TOTAL
ID AMT 1 100 2 200 3 300 SALES_LOG
ID AMT 1 10 1 20 3 5 4 7 4 3 MERGE INTO total t USING (SELECT id, SUM(amt) AS amt FROM sales_log GROUP BY id) s ON (t.id = s.id) WHEN MATCHED THEN UPDATE SET t.amt = t.amt + s.amt WHEN NOT MATCHED THEN INSERT (id, amt) VALUES (s.id, s.amt);- (1, 130), (2, 200), (3, 305)
- (1, 120), (2, 200), (3, 305), (4, 7)
- (1, 130), (2, 200), (3, 305), (4, 10)
- (1, 130), (3, 305), (4, 10)
44. Oracle에서 T1, T2, T3 테이블에는 각각 ID가 1~5인 5건의 데이터가 커밋되어 있다. 아래 문장을 순서대로 실행한 후 T1, T2, T3의 행 수로 옳은 것은?
DELETE FROM t1; TRUNCATE TABLE t2; DELETE FROM t3 WHERE id <= 2; ROLLBACK;- T1: 0건, T2: 0건, T3: 5건
- T1: 5건, T2: 0건, T3: 5건
- T1: 5건, T2: 0건, T3: 3건
- T1: 0건, T2: 0건, T3: 3건
45. T 테이블(C 컬럼)에는 C 값이 1인 한 행이 커밋되어 있다. Oracle에서 아래 문장을 순서대로 실행한 후 T에 남아 있는 C 값은? (오류가 발생한 문장은 무시하고 다음 문장이 실행된다고 가정한다.)
INSERT INTO t VALUES (2); SAVEPOINT a; INSERT INTO t VALUES (3); SAVEPOINT b; INSERT INTO t VALUES (4); ROLLBACK TO a; INSERT INTO t VALUES (5); ROLLBACK TO b; COMMIT;- 1, 2
- 1, 2, 3, 5
- 1, 2, 3
- 1, 2, 5
46. 트랜잭션의 특성(ACID)과 그 설명을 짝지은 것으로 적절하지 않은 것은?
- 원자성(Atomicity): 트랜잭션의 연산은 모두 실행되거나 전혀 실행되지 않아야 한다.
- 일관성(Consistency): 커밋된 트랜잭션의 결과는 시스템 장애가 발생해도 보존된다.
- 고립성(Isolation): 실행 중인 트랜잭션의 중간 결과를 다른 트랜잭션이 볼 수 없다.
- 지속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영된다.
47. Oracle에서 DEPT(부모)와 EMP(자식) 테이블이 있고, EMP.DEPTNO는 ON DELETE 옵션 없이
REFERENCES dept(deptno)로 선언되어 있다. EMP에는 DEPT를 참조하는 데이터가 들어 있다. 다음 설명 중 가장 적절한 것은?DROP TABLE dept;는 오류가 나고,DROP TABLE dept CASCADE CONSTRAINTS;는 성공하며 EMP의 데이터는 남는다.DROP TABLE dept CASCADE CONSTRAINTS;를 실행하면 DEPT를 참조하던 EMP 테이블도 함께 삭제된다.TRUNCATE TABLE emp;는 EMP가 DEPT를 참조하는 자식 테이블이므로 오류가 발생한다.DROP TABLE emp;를 먼저 실행하려 해도 DEPT가 EMP의 부모이므로 오류가 발생한다.
48. Oracle에서 아래 문장을 순서대로 실행했다. 오류가 발생한 문장은 무시하고 진행했을 때 마지막 SELECT의 결과는? (ORD에는 (1, 'DONE', 3), (2, 'READY', 1) 두 행이 커밋되어 있다.)
-- ORD 정의 -- CREATE TABLE ord ( -- oid NUMBER PRIMARY KEY, -- status VARCHAR2(10) DEFAULT 'READY' NOT NULL, -- qty NUMBER DEFAULT 1 -- ); CREATE TABLE ord_bak AS SELECT * FROM ord; INSERT INTO ord_bak (oid, status) VALUES (3, 'NEW'); INSERT INTO ord_bak (oid, qty) VALUES (4, 5); INSERT INTO ord_bak (oid, status) VALUES (1, 'DUP'); SELECT COUNT(*), SUM(qty) FROM ord_bak;- 5, 11
- 4, 6
- 4, 4
- 3, 4
49. SCOTT가 아래와 같이 권한을 부여했다. 이후 KIM이 실행한 문장 중 오류가 발생하는 것은? (Oracle)
-- SCOTT 실행 GRANT SELECT, UPDATE (sal) ON scott.emp TO kim;SELECT ename, sal FROM scott.emp;UPDATE scott.emp SET comm = 100 WHERE empno = 7369;UPDATE scott.emp SET sal = sal * 1.1 WHERE deptno = 10;SELECT COUNT(*) FROM scott.emp WHERE sal > 3000;
50. Oracle의 사용자 관리에 대한 설명으로 가장 적절한 것은?
- CREATE USER로 만든 사용자는 별도 권한 없이 자신의 스키마에 테이블을 만들 수 있다.
- 사용자의 비밀번호는
MODIFY USER 사용자 IDENTIFIED BY 새비밀번호;로 변경한다. - 소유한 테이블이 있는 사용자도
DROP USER 사용자;만으로 삭제할 수 있다. DROP USER 사용자 CASCADE;는 사용자가 소유한 객체까지 함께 삭제한다.
AI가 SQLD 출제 범위를 바탕으로 새로 만든 예상 문제이며, 실제 기출문제가 아닙니다.