SQLD: 오답노트(2)

SeongGyun Hong·2024년 11월 11일

SQL

목록 보기
11/51

SQL 및 데이터베이스 관리 주요 개념 요약

1. 데이터 모델링

엔터티 분류

  • 기본/키 엔터티: 독립적 생성, 고유 식별자 보유
  • 중심 엔터티: 기본 엔터티에서 발생, 업무 중심 역할
  • 행위 엔터티: 두 개 이상 부모 엔터티에서 발생

IDEF1X 방법론

  • 목적: 관계형 DB 설계, 의미론적 데이터 모델 생성
  • 주요 구성: 엔터티, 관계, 속성 표현
  • 특징: 표준화된 접근, 데이터 통합 지원

주식별자와 복합식별자

  • 주식별자: 엔터티 인스턴스 유일 식별
  • 복합식별자: 여러 속성 조합으로 식별자 구성
  • 특성: 유일성, 최소성, 불변성, 존재성

반정규화 기법

  • 목적: 성능 향상, 데이터 접근성 개선
  • 방법: 중복 칼럼 추가, 파생 칼럼 추가, 이력 테이블 칼럼 추가
  • 주의: 데이터 일관성 유지 방안 필요

2. SQL 함수와 연산자

NVL, COALESCE 함수

  • NVL(expr1, expr2): expr1이 NULL이면 expr2 반환
  • COALESCE(val1, val2, ...): 첫 번째 NULL 아닌 값 반환
  • 데이터 유형 처리: 더 높은 우선순위 유형으로 반환

TO_CHAR, ABS, LENGTH 함수의 NULL 처리

  • TO_CHAR(NULL): NULL 반환
  • ABS(NULL): NULL 반환
  • LENGTH(NULL): 대부분 NULL 반환, 일부 DB에서 0 반환 가능

TRUNC, ROUND, MOD, CEIL 함수

  • TRUNC: 소수점 이하 절사
  • ROUND: 반올림
  • MOD: 나머지 계산
  • CEIL: 올림 (정수로)

날짜형 데이터 연산

  • 날짜 + 숫자: 일수 더하기
  • 날짜 - 날짜: 일수 차이 계산
  • ADD_MONTHS, LAST_DAY 함수 활용

3. 조인과 서브쿼리

FULL OUTER JOIN과 (+) 연산자

  • FULL OUTER JOIN: 양쪽 테이블 모든 행 반환
  • (+) 연산자: Oracle 전용, LEFT/RIGHT OUTER JOIN 구현
  • 차이점: (+)는 FULL OUTER JOIN 직접 구현 불가

EXISTS 조건을 사용한 서브쿼리

  • 용도: 서브쿼리 결과 존재 여부 확인
  • 특징: 서브쿼리 결과 반환 즉시 종료, 성능상 이점

UNION ALL을 활용한 쿼리 최적화

  • UNION vs UNION ALL: UNION ALL은 중복 제거 없음
  • 성능: UNION ALL이 일반적으로 더 빠름
  • 사용: 중복이 없거나 중복 허용 시 UNION ALL 선호

4. SQL 실행 계획과 성능 최적화

대용량 테이블에서의 장시간 SQL 쿼리

  • 원인: 전체 테이블 스캔, 복잡한 조인, 대량 데이터 처리
  • 최적화: 인덱스 활용, 파티셔닝, 쿼리 재작성

인덱스 활용 전략

  • 적절한 칼럼 선택: 선택도 높은 칼럼
  • 복합 인덱스 고려: 자주 함께 사용되는 칼럼들
  • 인덱스 재구성: 주기적 관리로 성능 유지

5. 데이터베이스 객체 관리

ALTER TABLE 명령과 성능 영향

  • 칼럼 추가: 일반적으로 빠름
  • 칼럼 삭제: 테이블 크기에 따라 시간 소요
  • 데이터 타입 변경: 데이터 검사/변환 필요, 시간 소요

NUMBER 데이터 타입의 정밀도와 스케일

  • NUMBER(p,s): p는 전체 자릿수, s는 소수점 자릿수
  • 예: NUMBER(5,2)는 -999.99에서 999.99까지 저장 가능
  • 특수 케이스: NUMBER(2,5)는 매우 작은 소수 저장

6. 트랜잭션과 동시성 제어

UPDATE 문과 자동 커밋

  • 기본 동작: 자동 커밋되지 않음
  • 트랜잭션 제어: COMMIT, ROLLBACK 명령 사용
  • 주의: 일부 DB 클라이언트에서 자동 커밋 모드 존재

교착상태(deadlock) 시나리오와 해결 방법

  • 원인: 여러 트랜잭션이 서로의 잠금 대기
  • 예방: 일관된 순서로 리소스 접근, 트랜잭션 범위 축소
  • 해결: DBMS의 자동 감지 및 롤백, 수동 개입

7. 계층적 쿼리

LEVEL 슈도 칼럼

  • 용도: 계층 구조에서 각 행의 깊이 표시
  • 특징: 루트는 1, 자식은 2 이상의 값
  • 활용: 조직도, 제품 카테고리 등 표현

START WITH, CONNECT BY 절

  • START WITH: 계층 구조의 루트 조건 지정
  • CONNECT BY: 부모-자식 관계 정의
  • PRIOR: 부모 또는 자식 행 참조

8. 데이터베이스 보안과 사용자 관리

오라클 사용자 권한 관련 주요 롤

  • CONNECT: 기본 연결 권한
  • RESOURCE: 객체 생성 권한
  • DBA: 모든 관리 권한 (주의 필요)

권한 부여와 취소 전략

  • 최소 권한 원칙: 필요한 최소한의 권한만 부여
  • 정기적 검토: 불필요한 권한 제거
  • 롤 활용: 관련 권한 그룹화하여 관리

9. SQL 문법과 로직

WHERE 절에서의 논리 연산자 우선순위

  • 우선순위: AND > OR
  • 괄호 사용: 우선순위 변경 가능

괄호 사용을 통한 조건 그룹화

  • 목적: 의도한 로직 명확히 표현
  • 예: (A OR B) AND C vs A OR (B AND C)

10. RANK, PIVOT

분석 함수 (RANK, DENSE_RANK 등)

  • RANK: 동일 값 동일 순위, 다음 순위 건너뜀
  • DENSE_RANK: 동일 값 동일 순위, 다음 순위 연속
  • 활용: 성적 순위, 판매 실적 등 순위 매기기

PIVOT, UNPIVOT 연산

  • PIVOT: 행 데이터를 열로 변환
  • UNPIVOT: 열 데이터를 행으로 변환
  • 용도: 데이터 분석, 리포트 생성에 유용

11. 데이터베이스 관리와 모니터링

성능 튜닝 기법

  • 실행 계획 분석: 비효율적인 연산 식별
  • 인덱스 최적화: 적절한 인덱스 생성 및 관리
  • 통계 정보 갱신: 옵티마이저 결정 지원

리소스 사용량 모니터링

  • CPU, 메모리, I/O 사용량 추적
  • 대기 이벤트 분석: 병목 현상 식별
  • AWR, ASH 리포트 활용 (Oracle)

12. SQL 표준과 데이터베이스별 차이점

ANSI SQL vs 벤더별 SQL 문법

  • ANSI SQL: 표준화된 SQL 문법
  • 벤더별 차이: 함수명, 조인 문법 등
  • 이식성: ANSI SQL 사용 시 DB 간 이식 용이
profile
헤매는 만큼 자기 땅이다.

0개의 댓글