본문 바로가기
Study

[SQLD] 2과목 기출 풀며 몰랐던 개념 모아보기

by 셀린Celinee 2023. 11. 21.
728x90

정규형 

  • 제 2정규형 : 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속된 상태

CROSS JOIN

  • CROSS JOIN : 테이블 간 모든 가능한 조합을 생성
    • ‘전체’를 선정 = 가능한 모든 경우의 수 = CROSS JOIN

CONNECT BY 와 계층형 

SELECT C1, C2, C3
FROM SQLD44
CONNECT BY PRIOR C1 = C2
START WITH C1 = 1
ORDER SIBLINGS BY C1 DESC;

  1. CONNECT BY PRIOR C1 = C2: 계층적인 연결을 설정합니다. **C1**이 **C2**와 관계를 맺음을 의미합니다.
  2. START WITH C1 = 1: 계층 구조의 시작 지점을 설정합니다. 여기서는 C1 값이 1인 행을 시작으로 설정합니다.
  3. ORDER SIBLINGS BY C1 DESC: 형제 노드 간의 정렬을 지정합니다. 여기서는 C1 값을 내림차순으로 정렬합니다.

데이터 제어어 분류 

  • 데이터 제어어 (DCL : Data Control Language)
    • 데이터베이스에 접근하고 객체들을 사용하도록 **권한(GRANT)**을 주고 **회수(REVOKE)**하는 명령어
    • 권한 관련 — REVOKE, GRANT = DCL
  • DDL Data Definition Language
    • 데이터 정의 언어
    • DB, 테이블, 인덱스 등 — 데이터 구조 정의/변경/삭제 시 사용
    • CREATE, ALTER, DROP, TRUNCATE
  • DML Data Manipulation Language
    • 데이터 조작 언어
    • 테이블에 저장된 데이터를 조회/변경 시 사용
    • SELECT, INSERT, UPDATE, DELETE
  • DCL Data Control Language
    • 데이터 제어 언어
    • DB에 접근 or 객체를 사용하는 권한 제어
    • GRANT, REVOKE
  • TCL Transaction Control Language
    • 트랜잭션 제어 언어
    • DB에서 트랜잭션 제어 시 사용
    • COMMIT, ROLLBACK, SAVEPOINT
      • SAVEPOINT : 중간 상태 저장
        • ROLLBACK TO SAVEPOINT → COMMIT ⇒ SAVEPOINT 이후에 수정한 건에 대해서 취소할 수 있음

ORDER BY 

SELECT 학생, 점수, NTILE(4) OVER (ORDER BY 점수 DESC) as 그룹
FROM 학생점수;

이 쿼리를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

학생   점수   그룹
-----------------
최지은   92    1
박영희   90    1
윤하은   88    2
김철수   85    2
김민지   86    3
박지성   82    3
장현진   80    4
이민수   78    4

여기서 '그룹' 열은 NTILE() 함수에 의해 생성된 것으로, 각 학생이 속한 그룹을 나타냅니다. 그룹 1은 상위 25%, 그룹 2는 상위 50%, 그룹 3은 상위 75%, 그룹 4는 하위 25%를 의미합니다.

따라서 이 결과를 통해 각 학생이 전체 중에서 상위 몇 %에 속하는지 알 수 있습니다.

  • ORDER BY 다음에 뭐 안붙으면 → ASC 기본값
  • OVER : 그룹화, 정렬, 범위 지정 등 ⇒ 복잡한 집계 연산 수행 가능
  • RANGE BETWEEN ~
    • BETWEEN 0 PRECEDING AND 50 FOLLOWING 구문 : 현재 행을 기준으로 앞에는 0개의 행(즉, 현재 행만), 뒤에는 50개의 행을 포함하는 윈도우를 정의

LIKE : 문자열 패턴 정보 

  • LIKE 연산자 : 문자열의 특정 패턴 정보
    • '%' : 0개 이상의 임의의 문자와 일치
      • LIKE '%abc%'는 'abc'를 어디에든 포함하는 모든 문자열과 일치
    • '_' : 정확히 한 개의 임의의 문자와 일치
      • LIKE '_abc'는 'abc' 앞에 어떤 한 문자가 있는 모든 문자열과 일치
    • 이 두 와일드카드를 조합하여 복잡한 패턴을 만들 수 있습니다.
    1. LIKE 'abc%' : 'abc'로 시작하는 모든 문자열과 일치합니다.
    2. LIKE '%abc' : 'abc'로 끝나는 모든 문자열과 일치합니다.
    3. LIKE '_abc%' : 'abc'로 시작하며 그 앞에 한 문자가 있는 모든 문자열과 일치합니다.
    4. LIKE 'abc_%' : 'abc'로 시작하며 그 뒤에 한 문자가 있는 모든 문자열과 일치합니다.
    5. LIKE '_abc_' : 'abc'를 중간에 포함하며 그 앞뒤로 한 문자가 있는 모든 문자열과 일치합니다.
    6. LIKE 'a_c%' : 첫 번째 문자가 'a'이고, 세 번째 문자가 'c'인 모든 문자열과 일치합니다.
    7. LIKE '_L%' : 두 번째 문자가 'L'인 모든 문자열과 일치합니다.

도메인 특징 

  • 도메인 : ‘속성이 가질 수 있는 값의 범위’
    • 특정 필드에 입력할 수 있는 데이터의 타입, 크기, 형식, 범위 등을 지정
    • 데이터의 유효성 보장 & 일관성 유지

NULL 예외처리 종류 

  • NVL (Oracle) : 첫 번째 인수가 NULL → 두 번째 인수를 반환 / 첫 번째 인수가 NOT NULL → 첫 번째 인수를 그대로 반환
    • 예외처리로 사용
      • employees 테이블의 salary 필드 값을 조회하는데, 만약 salary 필드의 값이 NULL이면 0을 반환합니다.
    • SELECT NVL(salary, 0) FROM employees;
  • IFNULL (My SQL) : (= NVL)
  • ISNULL (My SQL Server) : (=NVL)
  • COALESCE (표준) : NULL이 아닌 첫 번째 값을 반환 / 모든 인수가 NULL일 경우에만 NULL을 반환
  • AVG() : NULL값 무시 — NOT NULL인 값들의 평균만 계산함
  • Oracle OUTER JOIN: Oracle에서는 (+) 연산자를 사용 → OUTER JOIN을 표현합니다. 이는 한 테이블의 모든 행을 반환하고, 다른 테이블에서 일치하는 행이 없는 경우 NULL 값을 반환하게 됩니다. (+) 연산자가 붙은 테이블이 outer 테이블이 됩니다.
    • (+)가 붙은 테이블이 기준
728x90