SQLD 모의고사 1회

50문항 · 제한 시간 90분. 다 풀면 과목별 점수와 합격 여부, 문제마다 해설을 보여 줘요.

  1. 1. 다음 중 데이터 모델링의 단계에 대한 설명으로 가장 적절한 것은?

    1. 개념적 모델링에서는 특정 DBMS의 저장 구조와 인덱스를 고려하여 테이블을 정의한다.
    2. 논리적 모델링에서는 식별자를 확정하고 정규화를 수행하며, 재사용성이 가장 높다.
    3. 물리적 모델링 단계로 갈수록 추상화 수준은 높아지고 구체성은 낮아진다.
    4. 성능 향상을 위한 반정규화는 주로 개념적 모델링 단계에서 수행한다.
  2. 2. 보험회사 업무를 분석하여 다음과 같은 엔터티 후보를 도출하였다.

    설계사, 보험상품, 보험계약, 보험금청구

    다음 중 유무형에 따른 엔터티 분류로 가장 적절한 것은?

    1. 설계사 - 개념 엔터티
    2. 보험상품 - 유형 엔터티
    3. 보험계약 - 유형 엔터티
    4. 보험금청구 - 사건 엔터티
  3. 3. 온라인 쇼핑몰의 주문 엔터티에 다음 속성들이 정의되어 있다.

    • 주문일자: 고객이 주문한 날짜
    • 주문일련번호: 설계 과정에서 부여한 순차 번호
    • 주문상태코드: 접수/배송/완료 상태를 코드화한 값
    • 주문총액: 주문상품별 (수량 × 단가)를 합산한 값

    특성에 따른 속성 분류에 대한 설명으로 가장 적절한 것은?

    1. 주문총액은 다른 속성으로부터 계산되는 파생 속성이므로 원본 변경 시 정합성 관리가 필요하다.
    2. 주문상태코드는 업무 분석을 통해 바로 정의되는 본래의 값이므로 기본 속성에 해당한다.
    3. 주문일련번호는 다른 값으로부터 계산하여 만든 값이므로 파생 속성에 해당한다.
    4. 파생 속성은 조회 성능에 유리하므로 가능한 한 많이 정의하는 것이 바람직하다.
  4. 4. 다음 중 관계(Relationship)에 대한 설명으로 가장 적절하지 않은 것은?

    1. 관계는 엔터티 간에 정의하지만, 실제 연결은 인스턴스 간의 페어링으로 이루어진다.
    2. 관계의 표기 요소에는 관계명, 관계차수, 관계선택사양이 있다.
    3. ERD에서는 존재적 관계를 실선으로, 행위적 관계를 점선으로 구분하여 표현한다.
    4. 관계명은 애매한 동사를 피하고 현재형으로 표현하는 것이 바람직하다.
  5. 5. 회원 관리 시스템에서 회원 엔터티의 주식별자로 '휴대폰번호'를 검토하였다. 모든 회원은 휴대폰번호를 반드시 등록하며, 같은 번호를 가진 회원은 존재하지 않는다. 그러나 회원이 번호를 바꾸는 일이 잦아 주식별자로 부적합하다는 의견이 나왔다.

    이 의견의 근거가 되는 주식별자의 특징으로 가장 적절한 것은?

    1. 유일성
    2. 최소성
    3. 불변성
    4. 존재성
  6. 6. 다음 수강신청 테이블의 PK는 (학번, 강좌코드)이며, 업무 규칙상 학생명은 학번에 의해, 강좌명은 강좌코드에 의해 결정된다.

    학번 강좌코드 학생명 강좌명 점수
    S01 K1 김하늘 자료구조 90
    S01 K2 김하늘 알고리즘 85
    S02 K1 박바다 자료구조 78

    위 테이블에 대한 설명으로 가장 적절한 것은?

    1. 학생명이 PK의 일부인 학번에만 종속되므로 제2정규형을 만족하지 않는다.
    2. 각 컬럼이 원자값을 가지지 않으므로 제1정규형을 만족하지 않는다.
    3. 일반 속성 간 이행 함수 종속이 존재하므로 제3정규형 분해가 우선 필요하다.
    4. 점수는 학번에만 종속되므로 학생 테이블로 분리해야 한다.
  7. 7. DEPT와 EMP는 1:M 관계이며 데이터는 다음과 같다.

    DEPT

    DEPT_NO DEPT_NM
    D10 영업
    D20 개발
    D30 기획

    EMP

    EMP_NO DEPT_NO
    E1 D10
    E2 D10
    E3 D10
    E4 D20
    E5 D20
    E6 NULL

    다음 SQL의 결과 행 수로 옳은 것은?

    SELECT D.DEPT_NO, E.EMP_NO
      FROM DEPT D
      LEFT OUTER JOIN EMP E
        ON D.DEPT_NO = E.DEPT_NO;
    1. 3건
    2. 4건
    3. 5건
    4. 6건
  8. 8. 계좌이체 트랜잭션이 'A 계좌 차감 → B 계좌 증가 → 이체내역 기록' 순서로 진행되고 있다. A 계좌 차감만 반영된 중간 상태를 다른 사용자의 트랜잭션이 조회할 수 없어야 한다는 요구와 가장 관련 있는 트랜잭션 특성은?

    1. 원자성(Atomicity)
    2. 고립성(Isolation)
    3. 일관성(Consistency)
    4. 지속성(Durability)
  9. 9. EMP 테이블의 데이터가 다음과 같을 때, SQL의 실행 결과로 옳은 것은? (Oracle 기준)

    EMP_ID BONUS
    E1 100
    E2 NULL
    E3 200
    E4 NULL
    E5 300
    SELECT COUNT(*), COUNT(BONUS), AVG(BONUS), AVG(NVL(BONUS, 0))
      FROM EMP;
    1. 5, 3, 200, 120
    2. 5, 5, 120, 120
    3. 3, 3, 200, 200
    4. 5, 3, 120, 200
  10. 10. 다음 중 인조식별자를 주식별자로 사용할 때 발생할 수 있는 문제점으로 가장 적절한 것은?

    1. 조인 조건에 참여하는 컬럼 수가 늘어나 SQL이 복잡해진다.
    2. 업무 규칙이 바뀌면 식별자 값을 함께 변경해야 하는 경우가 많아진다.
    3. 업무상 동일한 데이터가 서로 다른 식별자 값으로 중복 저장될 수 있다.
    4. 하위 엔터티로 상속될수록 PK를 구성하는 속성 수가 계속 늘어난다.
  11. 11. SQL 명령어와 그 분류를 짝지은 것으로 적절하지 않은 것은?

    1. DDL - CREATE, ALTER, RENAME
    2. DML - INSERT, MERGE, TRUNCATE
    3. DCL - GRANT, REVOKE
    4. TCL - COMMIT, ROLLBACK, SAVEPOINT
  12. 12. 다음 [ORDERS] 테이블에 SQL을 실행했을 때 결과 건수는?

    [ORDERS]

    ORDER_ID CUST ITEM
    1 A PEN
    2 A PEN
    3 A INK
    4 B PEN
    5 B NULL
    6 B NULL
    SELECT DISTINCT CUST, ITEM
    FROM   ORDERS;
    1. 3건
    2. 4건
    3. 5건
    4. 6건
  13. 13. 다음 중 Oracle에서 실행 시 오류가 발생하는 SQL은? (EMP 테이블에는 ENAME, SAL 컬럼이 있다.)

    1. SELECT ENAME, SAL * 12 AS ANNUAL FROM EMP ORDER BY ANNUAL DESC;
    2. SELECT ENAME AS "사원 명", SAL FROM EMP;
    3. SELECT ENAME, SAL * 12 ANNUAL FROM EMP WHERE SAL * 12 > 30000;
    4. SELECT ENAME, SAL * 12 AS ANNUAL FROM EMP WHERE ANNUAL > 30000;
  14. 14. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)

    SELECT SUBSTR('DATABASE_SYSTEM',
                  INSTR('DATABASE_SYSTEM', 'S', 1, 2), 3) AS RESULT
    FROM   DUAL;
    1. SE_
    2. STE
    3. SYS
    4. YST
  15. 15. 다음 SQL의 실행 결과로 옳은 것은? (Oracle)

    SELECT ROUND(-15.65, 1),
           TRUNC(-15.65),
           CEIL(-15.65),
           FLOOR(-15.65)
    FROM   DUAL;
    1. -15.7, -15, -15, -16
    2. -15.6, -15, -16, -15
    3. -15.7, -16, -15, -16
    4. -15.7, -15, -16, -16
  16. 16. 다음 [T] 테이블에 SQL을 실행했을 때 X, Y, Z의 값으로 옳은 것은?

    [T]

    ID A B
    1 10 NULL
    2 NULL 20
    3 30 30
    4 NULL NULL
    SELECT SUM(COALESCE(A, B, 0)) AS X,
           COUNT(NULLIF(A, B))     AS Y,
           SUM(NVL2(A, 1, 2))      AS Z
    FROM   T;
    1. X=60, Y=2, Z=6
    2. X=40, Y=1, Z=6
    3. X=60, Y=1, Z=4
    4. X=60, Y=1, Z=6
  17. 17. 다음 [EMP] 테이블에 대해 (가), (나) SQL을 실행했을 때 결과로 옳은 것은?

    [EMP]

    EMPNO ENAME MGR
    101 KIM NULL
    102 LEE 101
    103 PARK 101
    104 CHOI 102
    105 JUNG 103
    -- (가)
    SELECT COUNT(*) FROM EMP WHERE MGR IN (101, NULL);
    
    -- (나)
    SELECT COUNT(*) FROM EMP WHERE MGR NOT IN (101, NULL);
    1. (가) 2, (나) 2
    2. (가) 3, (나) 2
    3. (가) 2, (나) 0
    4. (가) 3, (나) 0
  18. 18. 다음 [PRODUCT] 테이블에 SQL을 실행했을 때 결과 값은?

    [PRODUCT]

    PID CATEGORY PRICE STOCK
    1 FOOD 3000 10
    2 FOOD 8000 0
    3 TOY 12000 5
    4 TOY 4000 0
    5 BOOK 15000 3
    6 BOOK 9000 0
    SELECT COUNT(*)
    FROM   PRODUCT
    WHERE  CATEGORY = 'FOOD'
       OR  CATEGORY = 'TOY' AND PRICE >= 5000 AND STOCK > 0;
    1. 1
    2. 2
    3. 3
    4. 4
  19. 19. 다음 [SALES] 테이블에 SQL을 실행한 결과로 옳은 것은?

    [SALES]

    EMP BONUS
    A 100
    B NULL
    C 300
    D NULL
    E 0
    F 200
    SELECT COUNT(*), COUNT(BONUS), AVG(BONUS), AVG(NVL(BONUS, 0))
    FROM   SALES;
    1. 6, 4, 150, 100
    2. 6, 3, 200, 100
    3. 6, 4, 100, 150
    4. 4, 4, 150, 150
  20. 20. EMP 테이블(EMPNO, ENAME, JOB, SAL, DEPTNO)에 대해 실행할 때 오류가 발생하는 SQL은?

    1. SELECT DEPTNO, COUNT(*) FROM EMP GROUP BY DEPTNO HAVING COUNT(*) > 1;
    2. SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY DEPTNO;
    3. SELECT COUNT(*) FROM EMP GROUP BY DEPTNO;
    4. SELECT DEPTNO, MAX(SAL) FROM EMP WHERE SAL > 1000 GROUP BY DEPTNO;
  21. 21. 다음 [STUDENT] 테이블에 SQL을 실행한 결과의 출력 순서로 옳은 것은? (Oracle)

    [STUDENT]

    SNO NAME SCORE
    1 가영 85
    2 나래 NULL
    3 다솜 92
    4 라희 70
    5 마루 NULL
    SELECT NAME
    FROM   STUDENT
    ORDER  BY SCORE DESC, SNO DESC;
    1. 다솜, 가영, 라희, 마루, 나래
    2. 나래, 마루, 다솜, 가영, 라희
    3. 다솜, 가영, 라희, 나래, 마루
    4. 마루, 나래, 다솜, 가영, 라희
  22. 22. ORDER BY 절에 대한 설명으로 적절하지 않은 것은?

    1. ORDER BY 절에 컬럼명, 별칭, SELECT 목록의 위치 번호를 섞어서 사용하면 오류가 발생한다.
    2. ORDER BY 절에는 SELECT 절에서 정의한 컬럼 별칭을 사용할 수 있다.
    3. 정렬 방식을 지정하지 않으면 기본값인 ASC(오름차순)가 적용된다.
    4. ORDER BY 절은 SELECT 문의 논리적 실행 순서에서 가장 마지막에 수행된다.
  23. 23. 다음 [EMP], [SALGRADE] 테이블에 SQL을 실행한 결과로 옳은 것은?

    [EMP]

    ENAME SAL
    A 1500
    B 2800
    C 3000
    D 4500
    E 6000

    [SALGRADE]

    GRADE LOSAL HISAL
    1 1000 2000
    2 2001 3000
    3 3001 5000
    SELECT S.GRADE, COUNT(*) AS CNT
    FROM   EMP E, SALGRADE S
    WHERE  E.SAL BETWEEN S.LOSAL AND S.HISAL
    GROUP  BY S.GRADE
    ORDER  BY S.GRADE;
    1. GRADE 1→1, 2→1, 3→2
    2. GRADE 1→1, 2→2, 3→2
    3. GRADE 1→1, 2→2, 3→1
    4. GRADE 1→1, 2→2, 3→1, NULL→1
  24. 24. 다음 [DEPT], [EMP] 테이블에 SQL을 실행했을 때 결과 값은? (EMP.DEPTNO에는 FK 제약이 없다.)

    [DEPT]

    DEPTNO DNAME
    10 인사
    20 개발
    30 영업
    40 기획

    [EMP]

    EMPNO DEPTNO
    1 10
    2 20
    3 20
    4 NULL
    SELECT COUNT(*)
    FROM   DEPT D, EMP E
    WHERE  D.DEPTNO = E.DEPTNO(+);
    1. 4
    2. 5
    3. 6
    4. 7
  25. 25. EMP(EMPNO, ENAME, DEPTNO), DEPT(DEPTNO, DNAME) 테이블이 있다. 두 테이블에서 이름이 같은 컬럼은 DEPTNO뿐일 때, Oracle에서 오류가 발생하는 SQL은?

    1. SELECT E.DEPTNO, ENAME, DNAME FROM EMP E NATURAL JOIN DEPT D;
    2. SELECT DEPTNO, E.ENAME, D.DNAME FROM EMP E NATURAL JOIN DEPT D;
    3. SELECT E.DEPTNO, E.ENAME, D.DNAME FROM EMP E INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO;
    4. SELECT DEPTNO, ENAME, DNAME FROM EMP JOIN DEPT USING (DEPTNO);
  26. 26. 다음 [CUSTOMER], [ORDERS] 테이블에 SQL을 실행했을 때 결과 건수와 AMT가 NULL인 행의 수로 옳은 것은?

    [CUSTOMER]

    CID CNAME
    C1 김
    C2 이
    C3 박
    C4 최

    [ORDERS]

    OID CID AMT
    1 C1 100
    2 C1 200
    3 C3 150
    4 C5 300
    SELECT C.CNAME, O.AMT
    FROM   CUSTOMER C LEFT OUTER JOIN ORDERS O
           ON C.CID = O.CID;
    1. 결과 4건, NULL 1건
    2. 결과 6건, NULL 3건
    3. 결과 5건, NULL 1건
    4. 결과 5건, NULL 2건
  27. 27. 다음 두 테이블에 대해 SQL을 실행했을 때 결과 건수로 옳은 것은?

    [EMP]

    EMPNO ENAME DEPTNO
    101 김하늘 10
    102 이바다 20
    103 박구름 NULL
    104 최노을 30

    [DEPT]

    DEPTNO DNAME
    10 영업
    20 개발
    30 인사
    40 재무
    SELECT COUNT(*)
      FROM DEPT
     WHERE DEPTNO NOT IN (SELECT DEPTNO FROM EMP);
    1. 1
    2. 0
    3. 4
    4. 3
  28. 28. 다음 SQL의 실행 결과로 옳은 것은?

    [EMP]

    EMPNO ENAME DEPTNO SAL
    1 A 10 300
    2 B 10 500
    3 C 20 400
    4 D 20 400
    5 E 20 200
    6 F 30 600
    SELECT ENAME
      FROM EMP E
     WHERE SAL > (SELECT AVG(SAL)
                    FROM EMP
                   WHERE DEPTNO = E.DEPTNO)
     ORDER BY ENAME;
    1. B, F
    2. B, C, D, F
    3. B
    4. B, C, D
  29. 29. 다음 두 테이블에 대해 (가), (나) SQL을 실행했을 때 결과 건수로 옳은 것은?

    [T1]

    C1
    1
    2
    2
    3

    [T2]

    C1
    2
    3
    4
    -- (가)
    SELECT C1 FROM T1
    UNION ALL
    SELECT C1 FROM T2;
    
    -- (나)
    SELECT C1 FROM T1
    UNION
    SELECT C1 FROM T2;
    1. (가) 7건, (나) 4건
    2. (가) 7건, (나) 5건
    3. (가) 6건, (나) 4건
    4. (가) 7건, (나) 2건
  30. 30. 다음 두 테이블에 대해 SQL을 실행한 결과로 옳은 것은?

    [A]

    CODE
    X
    Y
    Z
    Y

    [B]

    CODE
    Y
    W
    SELECT CODE FROM B
    MINUS
    SELECT CODE FROM A;
    1. X, Z
    2. X, Y, Z
    3. W
    4. X, Z, W
  31. 31. 다음 SQL의 결과 건수는?

    [SALES]

    REGION PRODUCT AMT
    서울 A 10
    서울 B 20
    서울 A 30
    부산 A 40
    부산 C 50
    대구 B 60
    SELECT REGION, PRODUCT, SUM(AMT)
      FROM SALES
     GROUP BY ROLLUP(REGION, PRODUCT);
    1. 6건
    2. 8건
    3. 9건
    4. 12건
  32. 32. 다음 SQL의 결과에 포함되는 행으로 옳은 것은? (D | J | S 순서로 표기)

    [EMP]

    DEPTNO JOB SAL
    10 CLERK 100
    10 MANAGER 300
    20 CLERK 200
    SELECT CASE GROUPING(DEPTNO) WHEN 1 THEN '총계' ELSE TO_CHAR(DEPTNO) END AS D,
           CASE GROUPING(JOB) WHEN 1 THEN '소계' ELSE JOB END AS J,
           SUM(SAL) AS S
      FROM EMP
     GROUP BY ROLLUP(DEPTNO, JOB);
    1. 총계 | 소계 | 600
    2. 총계 | CLERK | 300
    3. 10 | 총계 | 400
    4. 총계 | 총계 | 600
  33. 33. 다음 SQL에서 NAME이 '라'인 행의 R1, R2 값으로 옳은 것은?

    [SCORE]

    NAME PT
    가 90
    나 85
    다 90
    라 80
    마 85
    SELECT NAME,
           RANK()       OVER (ORDER BY PT DESC) AS R1,
           DENSE_RANK() OVER (ORDER BY PT DESC) AS R2
      FROM SCORE;
    1. R1 = 5, R2 = 5
    2. R1 = 3, R2 = 3
    3. R1 = 4, R2 = 3
    4. R1 = 5, R2 = 3
  34. 34. 다음 SQL의 실행 결과에서 CSUM 값을 ID 순서대로 나열한 것으로 옳은 것은?

    [T]

    ID DAY AMT
    1 1 100
    2 2 200
    3 2 300
    4 3 400
    SELECT ID,
           SUM(AMT) OVER (ORDER BY DAY) AS CSUM
      FROM T
     ORDER BY ID;
    1. 100, 300, 600, 1000
    2. 100, 600, 600, 1000
    3. 100, 300, 600, 600
    4. 1000, 1000, 1000, 1000
  35. 35. 다음 SQL의 실행 결과에서 DIFF 값을 MON 순서대로 나열한 것으로 옳은 것은?

    [SALE]

    MON AMT
    1 100
    2 150
    3 120
    4 200
    SELECT MON,
           AMT - LAG(AMT, 1, 0) OVER (ORDER BY MON) AS DIFF
      FROM SALE
     ORDER BY MON;
    1. 100, 50, -30, 80
    2. NULL, 50, -30, 80
    3. -50, 30, -80, 200
    4. 50, -30, 80, 0
  36. 36. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준, 테이블의 행은 표에 나온 순서대로 읽힌다고 가정한다)

    [EMP]

    EMPNO ENAME SAL
    1 A 300
    2 B 500
    3 C 100
    4 D 400
    5 E 200
    SELECT ENAME
      FROM EMP
     WHERE ROWNUM <= 3
     ORDER BY SAL DESC;
    1. B, D, A
    2. B, A, C
    3. A, B, C
    4. C, A, B
  37. 37. EMP 테이블에 5건의 행이 있을 때, 다음 중 결과가 0건인 SQL은? (Oracle 기준)

    1. SELECT * FROM EMP WHERE ROWNUM = 1;
    2. SELECT * FROM EMP WHERE ROWNUM <= 2;
    3. SELECT * FROM (SELECT ROWNUM RN, E.* FROM EMP E) WHERE RN = 2;
    4. SELECT * FROM EMP WHERE ROWNUM BETWEEN 2 AND 3;
  38. 38. 다음 SQL의 결과로 옳은 것은? (Oracle 기준)

    [ORG]

    ID NAME PID
    1 대표 NULL
    2 영업 1
    3 개발 1
    4 영업1팀 2
    5 영업2팀 2
    6 개발1팀 3
    7 파트A 6
    SELECT COUNT(*)
      FROM ORG
     WHERE LEVEL >= 3
     START WITH PID IS NULL
    CONNECT BY PRIOR ID = PID;
    1. 2
    2. 3
    3. 4
    4. 5
  39. 39. 다음 (가), (나) SQL의 결과 건수로 옳은 것은? (Oracle 기준)

    [ORG]

    ID NAME PID
    1 대표 NULL
    2 영업 1
    3 개발 1
    4 영업1팀 2
    5 영업2팀 2
    6 개발1팀 3
    7 파트A 6
    -- (가)
    SELECT NAME FROM ORG
     START WITH PID IS NULL
    CONNECT BY PRIOR ID = PID AND NAME <> '영업';
    
    -- (나)
    SELECT NAME FROM ORG
     WHERE NAME <> '영업'
     START WITH PID IS NULL
    CONNECT BY PRIOR ID = PID;
    1. (가) 6건, (나) 6건
    2. (가) 4건, (나) 6건
    3. (가) 6건, (나) 4건
    4. (가) 4건, (나) 4건
  40. 40. 다음 SQL의 결과 건수는? (Oracle 기준)

    [SALES]

    ID YR QTR AMT
    1 2024 Q1 100
    2 2024 Q2 200
    3 2024 Q1 50
    4 2025 Q1 300
    5 2025 Q2 150
    SELECT *
      FROM SALES
     PIVOT (SUM(AMT) FOR QTR IN ('Q1' AS Q1, 'Q2' AS Q2));
    1. 5건
    2. 2건
    3. 4건
    4. 3건
  41. 41. 다음 SQL의 실행 결과로 옳은 것은? (Oracle 기준)

    SELECT REGEXP_SUBSTR('A-12-BC-345-D', '[0-9]+', 1, 2) AS R
      FROM DUAL;
    1. 12
    2. 2
    3. 345
    4. NULL
  42. 42. 다음 SQL의 결과 건수는? (Oracle 기준)

    [T]

    VAL
    ab12
    ab1c
    12ab
    a1b2
    abc9
    SELECT VAL
      FROM T
     WHERE REGEXP_LIKE(VAL, '^[a-z]+[0-9]+$');
    1. 1건
    2. 3건
    3. 4건
    4. 2건
  43. 43. 다음 두 테이블에 대해 아래 MERGE 문을 실행(Oracle)한 뒤 SELECT SUM(QTY) FROM TGT;의 결과로 옳은 것은?

    TGT

    ID NAME QTY
    1 A 10
    2 B 20
    3 C 30

    SRC

    ID NAME QTY
    2 B 25
    3 C 5
    4 D 40
    MERGE INTO tgt t
    USING src s
    ON (t.id = s.id)
    WHEN MATCHED THEN
      UPDATE SET t.qty = t.qty + s.qty
      WHERE s.qty > 10
    WHEN NOT MATCHED THEN
      INSERT (id, name, qty) VALUES (s.id, s.name, s.qty);
    1. 115
    2. 125
    3. 130
    4. 145
  44. 44. 다음과 같이 생성된 MEMBER 테이블에 대해 INSERT 문을 실행할 때, 오류가 발생하는 것은? (Oracle, 각 문장은 독립적으로 실행한다고 가정)

    CREATE TABLE member (
      mid    NUMBER        PRIMARY KEY,
      mname  VARCHAR2(20)  NOT NULL,
      grade  CHAR(1)       DEFAULT 'B',
      phone  VARCHAR2(20)
    );
    1. INSERT INTO member (mid, mname) VALUES (1, '김하늘');
    2. INSERT INTO member VALUES (2, '이바다', NULL, NULL);
    3. INSERT INTO member (mname, mid, phone) VALUES ('박구름', 3, '010');
    4. INSERT INTO member VALUES (4, '최들판', 'A');
  45. 45. T 테이블에는 C 컬럼 값이 1, 2인 두 행이 커밋되어 있다. Oracle에서 아래 문장을 순서대로 실행한 후 SELECT COUNT(*) FROM T;의 결과는?

    INSERT INTO t VALUES (3);
    SAVEPOINT s1;
    DELETE FROM t WHERE c = 1;
    SAVEPOINT s2;
    INSERT INTO t VALUES (4);
    ROLLBACK TO s1;
    INSERT INTO t VALUES (5);
    SAVEPOINT s2;
    DELETE FROM t WHERE c = 2;
    ROLLBACK TO s2;
    COMMIT;
    1. 4건
    2. 3건
    3. 5건
    4. 2건
  46. 46. 비어 있는 상태로 커밋된 T 테이블(C 컬럼)에 대해 Oracle에서 아래 문장을 순서대로 실행했다. 마지막 SELECT의 결과는?

    INSERT INTO t VALUES ('A');
    INSERT INTO t VALUES ('B');
    CREATE TABLE t_log (c NUMBER);
    DELETE FROM t WHERE c = 'A';
    ROLLBACK;
    SELECT COUNT(*) FROM t;
    1. 0건
    2. 1건
    3. 2건
    4. 3건
  47. 47. PROD 테이블이 아래와 같이 정의되어 있을 때 CREATE TABLE prod_bak AS SELECT * FROM prod;를 실행했다. PROD_BAK에 대한 설명으로 가장 적절한 것은? (Oracle)

    CREATE TABLE prod (
      pid     NUMBER        CONSTRAINT prod_pk PRIMARY KEY,
      pname   VARCHAR2(30)  NOT NULL,
      price   NUMBER        CONSTRAINT prod_ck CHECK (price > 0),
      reg_dt  DATE          DEFAULT SYSDATE
    );
    1. PID 컬럼에 PK가 복사되어 중복 값을 입력할 수 없다.
    2. PRICE 컬럼의 CHECK 제약조건이 함께 복사된다.
    3. PNAME 컬럼의 NOT NULL 제약조건은 PROD_BAK에도 적용된다.
    4. REG_DT의 DEFAULT가 복사되어 생략 시 SYSDATE가 입력된다.
  48. 48. 세 테이블이 다음과 같이 정의되어 있다. ASSIGN.EMPNO는 REFERENCES emp(empno) ON DELETE SET NULL, EMP.DEPTNO는 REFERENCES dept(deptno) ON DELETE CASCADE로 선언되어 있다.

    DEPT

    DEPTNO
    10
    20

    EMP

    EMPNO DEPTNO
    101 10
    102 10
    103 20

    ASSIGN

    AID EMPNO
    1 101
    2 101
    3 102
    4 103

    DELETE FROM dept WHERE deptno = 10;을 실행한 결과로 옳은 것은? (Oracle)

    1. EMP 1건, ASSIGN 4건(EMPNO가 NULL인 행 3건)
    2. EMP 1건, ASSIGN 1건
    3. EMP 3건, ASSIGN 4건(자식 행이 있어 삭제 실패)
    4. EMP 1건, ASSIGN 4건(EMPNO 값은 변경 없음)
  49. 49. ORDERS 테이블의 소유자 SCOTT와 사용자들이 아래 순서로 DCL을 실행했다. 마지막 REVOKE 이후 SCOTT.ORDERS에 대한 SELECT 권한을 가지고 있는 사용자를 모두 고른 것은? (Oracle)

    -- SCOTT 실행
    GRANT SELECT ON scott.orders TO u1 WITH GRANT OPTION;
    -- U1 실행
    GRANT SELECT ON scott.orders TO u2 WITH GRANT OPTION;
    -- U2 실행
    GRANT SELECT ON scott.orders TO u3;
    -- SCOTT 실행
    GRANT SELECT ON scott.orders TO u4;
    REVOKE SELECT ON scott.orders FROM u1;
    1. U2, U3, U4
    2. U3, U4
    3. U2, U4
    4. U4
  50. 50. 시스템 권한과 오브젝트 권한에 대한 설명으로 적절하지 않은 것은?

    1. CREATE TABLE, CREATE VIEW는 시스템 권한에 해당한다.
    2. 오브젝트 권한을 재부여할 수 있게 하려면 WITH ADMIN OPTION을 붙인다.
    3. REFERENCES는 해당 테이블을 참조하는 FK를 만들 수 있는 오브젝트 권한이다.
    4. EXECUTE는 프로시저 등에 대해 부여하는 오브젝트 권한이다.

AI가 SQLD 출제 범위를 바탕으로 새로 만든 예상 문제이며, 실제 기출문제가 아닙니다.