SQLD 추가 정리

freakyfrog98·2022년 9월 8일
0

SQLD 자격증

목록 보기
5/5

sql 추가 정리

  • semi-join
    • b에만 있는 칼럼이 결과에 존재 → b에 대한 a의 세미조인
  • view merging
    • 옵티마이저가 sql실행을 최적화하기 위해서 sql을 가공하는것으로 옵티마이저가 자동으로 실행한다.
    • 불가능한 경우
      • 집합연산자 사용, connect by 사용, rownum사용, 집계함수 사용, 분석함수 사용
  • 절차형 sql = PL/SQL
    • 프로시저: 쿼리집합
    • 사용자 정의 함수 : 일련의 sql 처리
    • 트리거 : 어떤일이 발생할때 같이 처리
      • pl 에서도 테이블 생성 가능
  • 커서
    • sql 결과를 담아놓는 일종의 포인터
    • 공유불가
      • 공백문자, 줄바꿈, 대소문자 차이, 주석, owner, 힌트 사용
  • 오름차순이면 null이 가장 먼저!
  • 서브쿼리 종류
    • correlated subquery
      • 메인쿼리값을 서브쿼리가 사용하고 서브쿼리의 값을 메인쿼리가 계산하는 쿼리
    • access subquery
      • 서브쿼리에서 메인쿼리로 정보 제공
    • filter subquery
      • 메인쿼리 값이 서브쿼리로 제공
    • early filter subquery
      • filter + hint
  • 자연 조인
    • a,b,c와 b,c,d 자연조인하면 a,b,c,d 중복 제거
    • alias 사용불가, 동일한 칼럼은 모두 조인 참가, 칼럼 두개이상일때 join~using 사용
  • 분산 데이터베이스 투명성
    • 분할, 위치, 지역 사상, 중복, 장애, 병행 투명성
  • 조인조건 없으면 카테시안 곱이 발생
  • inner join
    • from customer as a self join customer as b on
  • nologging
    • insert 에만 효과
  • Index organized table
    • 일반 테이블이라면 키값을 통해 인덱스를 탐색하여 rowid를 구하고 rowid로 다시 테이블의 데이터를 찾는 두번의 과정
    • 따라서 테이블 탐색하지 않고 fetch 가능
  • 하드파싱 소프트파싱 같은 질의에 변수값만 다름
  • 물리적 io는 메모리에 데이터가 없을때 논리적 io는 있을때
  • 배치단위에는 merge sort
    • dynamic sql string 변수에 쿼리를 저장
  • pl 에서 테이블 생성 가능

엔티티

  • 식별 가능해야 함
  • 인스턴스가 한 개 밖에 없는 엔터티는 집합이 아니므로 엔터티 성립이 되지 않는다.
  • 업무프로세스에 의해 사용
  • 주식별자만 존재하고 일반속성이 없는 경우 적절한 엔터티라고 할 수 없으나, 예외적으로 관계 엔터티만 주식별자 속성만 가지고 잇어도 엔터티로 인정한다.
  • 예외적으로, 통계 업무 엔터티, 코드를 위한 엔터티, 시스템 처리시 내부 필요에 의한 엔터티는 관계 생략이 되는 경우가 있다.
  • 발생시점에 따라 중심, 기본, 행위 엔터티
  • DDL
    • CHAR는 문자열을 비교할 때 공백을 채워서 비교하는 방법을 사용한다. 그에 반해 VARCHAR은 맨 처음부터 한 문자씩 비교하고 공백도 하나의 문자로 취급하므로 끝의 공백이 다르면 다른 문자로 판단한다.
    • 고유키 + Not null = 기본키
    • 해당 칼럼 크기를 늘릴 순 있지만 줄일 순 없다. 기존 데이터 훼손 우려 때문
    • 해당 칼럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 칼럼의 폭을 줄일 수 있다.
  • Where절
    • and 가 or 보다 빨리 처리된다.
  • 서브쿼리
    • 서브쿼리에서는 ORDER BY를 사용하지 못한다. ORDER BY 절은 메인쿼리의 마지막 문장에 위치해야 한다.
  • row chaning
    • 행 길이가 너무 길어서 두개의 블록에 걸쳐 저장
  • row migration
    • 수정이 발생할때 해당 블록에 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장
    • 입출력 불필요 많이 발생 성능 저하
  • 실행계획
    • table access full - index(range scan) - table access(rowid) - nested loop join
    • index(range scan) - table access(rowid) - nested loop join - select
  • 이름 같은 savepoint 에 rollback 하면 첫번째 걸로 rollback
  • coalesce는 null 이 아닌 첫번째로 ㄱ
  • nvl(a,b) a가 널이면 b
  • nvl2(a,b,c) a가 널이아니면 b 널이면 c
  • nullif(a,b) a와 b가 같으면 null 같지않으면 a
  • decode(a,b,c) a가 b와 같으면 c 출력
  • having 절에 집계함수로 사용된 칼럼은 select로 조회가 불가
profile
반 걸음씩 이라도 가보자.

0개의 댓글