WorkHard/자격증

[SQLD 개발자] 기출문제 공부(21회)

코딩공대 2023. 3. 1. 14:54
728x90

1. VIEW에 대한 설명

  • 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
  • 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한, 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다.
  • 보안성 : 뷰를 생성할 때 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다.
  • 물리성 : View는 논리적인 SELECT를 포함하는 OBJECT로 실제 데이터를 저장하지 않는다.

2. 테이블 TAB_A, TAB_B에 INSERT를 한 결과?

  • SQL SERVER : IDENTITY[ ( seed, increment ) ]
    • seed : 첫 번째 행이 입력될 때의 시작값
    • 증가되는 값
    • 해당 컬럼에 값을 넣을 경우 Error발생(Error 발생을 막기 위해서는 IDENTITY_INSERT를 OFF로 하면 되나 이런 경우 IDENTITY를 쓴 의미가 없어진다.)
  • SQL SERVER의 IDENTITY로 지정된 컬럼에는 값을 넣으면 에러가 난다.
  • ORACLE의 CHECK조건을 만족하지 못할 경우 에어가 나나 NULL은 무시된다.

3. Hash Join

  • Non Equal Join 사용이 불가능하다. 그냥 Equal Join만 사용가능하다.
  • Sort작업이 필요한 경우는 Sort Merge Join을 사용한 경우이다.
  • 각 테이블에 INDEX가 반드시 필요하진 않다.
  • 일반적으로 작은 테이블을 MEMORY에 올리는 선행 테이블로 사용한다.

4. 가장 효율적으로 아래의 인덱스를 사용할 수 있는 조건절?

  • 문자를 숫자형으로 형변환함.
  • 예외적으로 LIKE의 경우 COL을 무조건 형변환함, 숫자를 문자로 변환함.
  • LIKE의 경우 컬럼을 무조건 문자로 형변환함. 즉, 해당 조건절은 WHERE TO CHAR(COL1) LIKE '2%'로 변형되어 인덱스를 사용하지 못한다.
  • IS NOT NULL은 해당 인덱스를 FULL SCAN할 수 있으나 효율이 떨어진다.
  • 부정형 비교에는 인덱스를 사용할 수 없다.

5. ORACLE SQL문을 SQL SERVER SQL문으로 바꿔라

  • TOP (Expression) [PERCENT] [WITH TIES]
    • WITH TIES : ORDER BY 조건 기준으로 TOP N의 마지막 행으로 표시되는 추가 행의 데이터가 같을 경우 N+ 동일 정렬 순서 데이터를 추가 반환하도록 지정하는 옵션(마지막 기준 공통일 경우 모두 출력)
  • ROWNUM < 4의 의미는 3건까지 출력이므로 TOP(3)이다.
  • WITH TIES를 사용할 경우 동일 데이터가 있을 때 추가 건수가 출력되는 현상이 가능하다.

6. SQL에서 리프데이터 이면 1, 그렇지 않으면 0을 출력하는 키워드로 알맞은 것은?

  • CONNECT_BY_ISLEAF : 전개 과정에서 해당 데이터가 리프 데이터이면 1, 그렇지 않으면 0
  • CONNECT_BY_ISCYCLE : 전개 과정에서 자식을 갖는데, 해당 데이터가 조상으로 존재하면 1, 그렇지 않으면 0 / 여기서 조상이란 자신으로부터 루트까지의 경록에 존재하는 데이터를 말함.
  • SYS_CONNECT_BY_PATH : 하위 레벨의 컬럼까지 모두 표시해준다.
  • CONNECT_BY_ROOT : Root노드의 정보를 표시한다.

7. TAB1, TAB2에서 아래의 SQL의 결과 건수는?

  • 2, 4, 3, 5, 12
  • FULL OUTER JOIN = LEFT OUTER JOIN UNION RIGHT OUTER JOIN

8. WINDOW FUNTION에서의 SQL문?

  • RANGE BETWEEN start_point AND end_point
    • start_point는 end_point와 같거나 작은 값이 들어간다.
    • Default값은 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW이다.
    • UNBOUNDED PRECEDING : start_point에만 들어갈 수 있으며, 파티션의 First Row이다.
    • UNBOUNDED FOLLOWING : end_point에만 들어갈 수 있으며, 파티션의 Last Row이다.
    • CURRENT ROW : start, end_point둘다 가능하다. 윈도우는 CURRENT ROW에서 start하거나 end한다.

9. SQL문에서 FROM?

  • FROM절은 가장 먼저 실행된다.
  • FROM절에 사용되는 Subquery를 보통 Inline View라고 한다.
  • FROM절은 SELECT절과 항상 짝을 이룬다.

10. 유저와 권한중 권한에 대한 설명

  • 사용자가 실행하는 모든 DDL문장은 그에 해당하는 적절한 권한이 있어야만 문장을 실행 할 수 있다.
  • 테이블의 소유자는 해당 테이블의 DML 권한을 다른 유저에게 부여할 수 있다.
  • 권한 부여를 편리하게 관리하기 위해 만들어진 권한의 집합인 ROLE이 있다.
  •  DBA 권한은 STSTEM, SYS등의 상위 유저와 그에 해당하는 권한을 가진 경우 부여가 가능하다.

11. 빈칸채우기

  • 소문자 / 대문자로 되어 있는 경우 두개의 문자열이 같이 위해서 적용해야 하는 함수인 "UPPER"를 사용한다.

유사 문제

  • 이때에는 두개다 대문자이기 때문에 TRIM으로 빈칸을 제거하는게 답이다.

12. 빈칸채우기

  • 계층형 쿼리에서 최대 계층의 수를 구하기 위한 문제이다. "MAX(LEVEL)"을 사용하여 최대 계층수를 구한다.

13. 빈칸채우기

  • NOT EXISTS의 OUTER JOIN으로의 변형을 묻는 문제이다.
  • NOT EXISTS는 OUTER JOIN으로 변경 시 NOT NULL COLUMN에 대한 "IS NULL"체크로 NOT EXISTS를 구현가능하다.
  • 따라서 답은 : P.사원번호 IS NULL

유사문제 

  • WHERE절이 IS NULL이고 FROM절이 비어있으면 "LEFT OUTER"을 이용한다.

14. SQL에 출력되는 ROWS의 갯수는?

  • DNAME의 그룹은 3, JOB의 그룹은5개, DNAME,JOB의 그룹은 9개가 형성된다.