WorkHard/자격증

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

코딩공대 2023. 3. 18. 02:43
728x90

1. 인덱스에 의하여 검색속도를 향상시킬 수 있는 질의로 적절하지 않은 것?

2. 인덱스에 연산을 하면 인덱스가 망가져서 불가능하다.

 


2. 분산 데이터베이스?

  • 분산 데이터베이스의 장점
    • 데이터베이스의 신뢰성과 가용성이 높다

    • 분산 데이터베이스가 병렬 처리를 수행하기 때문에 빠른 응답이 가능하다.

    • 분산 데이터베이스를 추가하여 시스템 용량 확장이 쉽다.

  • 분산 데이터베이스의 단점
    • 데이터베이스가 여러 네트워크를 통해서 분리되어 있기 때문에 관리와 통제가 어렵다.

    • 보안관리가 어렵다.

    • 데이터 무결성 관리가 어렵다.

    • 데이터베이스 설계가 복잡하다.

3. SQL문 수행 결과?

  • 숫자와 NULL을 더하면 NULL이다.

  • WHEN SUM (COL1 + COL2) IS NULL THEN 0
    ELSE SUM (COL1 + COL2) 이므로 아래와 같다.

    NULL + 10 = NULL -> 0
    12 + NULL = NULL -> 0
    NULL + NULL = NULL -> 0
    10 + 12 = 22

  • 따라서 22가 된다.

4. 연산자 우선순위?

  1. 산술 연산자(*, -, +, /)

  2. 연결 연산자(||)

  3. 비교 연산자(<, >, =, <>, <=, =>)

  4. IS NULL, LIKE, IN

  5. BETWEEN

  6. NOT 연산자

  7. AND 연산자

  8. OR 연산자

5. SELF JOIN?

  • SELF JOIN은 동일한 테이블에서 발생하는 조인을 의미한다.

  • FROM절에 동일한 테이블명이 두 번 이상 나타난다.

  • SELF JOIN을 하기 위해서 동일한 테이블을 두 번 이상 사용하므로 FROM절에 별칭(Alias)을 사용해야 한다.

  • ex)
    [SELF JOIN]
    SELECT A.컬럼명, B.컬럼명
    FROM 테이블1 A, 테이블2 B
    WHERE A.컬럼명2 = B.컬럼명1

6. SQL문 수행 결과?

  • GROUP BY COL1을 수행하면
     -> 조조 : 1개
     -> 유비 : 2개
     -> 관우 : 3개
     -> 여포 : 1개
     -> 초선 : 1개 
    가 된다.

  • 여기서 HAVING COUNT(*) > 2는 갯수가 2개 초과인것(관우)의 갯수를 물어보는 것이니

  • 3개이다.

7. 순수 관계 연산자?

  • SELECT(σ)
    • 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듦

    • 릴레이션의 행(가로)에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 함

    • 연산자의 기호는 그리스 문자 시그마(σ)를 사용함

  • PROJECT(π)
    • 주어진 릴레이션에서 속성 List에 제시된 Attribute만을 추출하는 연산

    • 릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 함

    • 연산자의 기호는 그리스 문자 파이(π)를 사용함

  • JOIN(⋈)
    • 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산

    • 연산자의 기호는 ⋈ 를 사용함

    • 조인 조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 자연(NATURAL) 조인이라고 함
  • DIVISION(÷)
    • X ⊃ Y 인 두 개의 릴레이션에서 R(X), S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

8. RANK(), DENSE_RANK(), ROW_NUMBER()?

  • RANK() : 중복값은 중복등수, 등수를 건너 뛴다.(1위, 1위, 3위, 4위)

  • DENSE_RANK() : 중복값은 중복등수, 등수를 건너 뛰지 않는다.(1위, 1위, 2위, 3위) / 그리고 동일 등수 순위에 영향이 없다.

  • ROW_NUMBER : 중복값이 있어도 고유 등수를 부여한다.(1위, 2위, 3위, 4위)

9. ORACLE과 SQL SERVER?


10. SQL문 최종결과?

  • COMMIT시점으로 ROLLBACK을 시킨다.

  • 따라서 TABLE안에는
    1,1000
    2, 2000
    3, 3000
    4, 4000
    5, 5000
    6, 6000
    이 들어있다.


  • 여기서 마지막에 SELECT COUNT(COL1) FROM PRODUCT WHERE COL2 = 2000; 이니까

  • 1개가 된다.

11. 빈 칸 채우기

  • WHERE절에서 A.COL1 <> B.COL1이므로 A.COL1 컬럼을 기준으로 다른 수의 갯수를 카운트 한다.

  • A테이블                                          A.COL1 <> B.COL1                                  B테이블
    COL1     COL2                                                                                                COL1     COL2
    1             1                   COL1 이 1일 때 다른수는 2, 3, 3 -> 3개                       1             1
    1             2                   COL1 이 1일 때 다른수는 2, 3, 3 -> 3개                       1             2
    2             1                   COL1 이 2일 때 다른수는 1, 1, 3, 3 -> 4개                   2             1
    3             1                   COL1 이 3일 때 다른수는 1, 1, 2 -> 3개                       3             1
    3             2                   COL1 이 3일 때 다른수는 1, 1, 2 -> 3개                       3             2

  • 따라서 3 + 3 + 4 + 3 + 3 = 16개이다.

12. 빈 칸 채우기

  • CROSS JOIN의 결과 개수는 두 테이블의 행의 개수를 곱한 개수가 된다.

  • CROSS JOIN은 상호 조인 이라고도 불리며, 한 쪽 테이블의 모든 행과 다른 테이블의 모든 행을 조인시키는 기능을 한다.

  • 이러한 CROSS JOIN을 카테시안 곱(Cartesian Product)라고도 한다.