전체 글

전체 글

    [SQL] INDEX와 INDEX의 종류 그리고 주의 사항

    인덱스(Index) 데이터(레코드)를 빠르게 접근하기 위해 쌍으로 구성된 데이터 Index가 없으면 테이블의 특정값을 찾기 위해 모든 데이터를 서치하는 TABLE SCAN 발생 테이블에 기본키(PK)가 있으면 기본키(PK)에 대한 기본 인덱스가 자동 생성된다. 인덱스의 종류 M-one 검색 Tree B-Tree B*-Tree B+-Tree 인덱스를 잘 사용하면 성능이 향상될 수 있지만, 잘못 설정하면 역효과가 발생한다. ROWID 테이블에서 행의 위치를 지정하는 논리적인 주소값 기본적으로 INSERT 되는 순서대로 입력 되지만, 정렬 없이 저장된다. SELECT name, ROWID FROM test; INDEX는 WHERE 절에 오는 조건컬럼이나, JOIN 조건절에 오는 조건컬럼에 만들어 두는게 원칙이..

    [SQL] 정규화

    정규화(Normalization) 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정 테이블 R에서 일부 속성들로만 추출하여 만든 테이블 R1, R2가 Natural Join을 통해 원래의 테이블 R로 정보 손실 없이 복귀할 수 있는 경우 R은 R1, R2로 무손실 분해 되었다고 한다. 정규화의 목적 가능한 중복(Redundancy)을 제거하여 삽입, 삭제, 갱신 이상(anomaly) 가능성 줄이기! 정규화의 종류(단계) 비정규 릴레이션 제1 정규형:1NF 테이블 R에 속한 모든 속성의 도메인(Domain)이 원자값(Atomic Value)로만 구성된 정규형이다. 테이블의 속성값이 원자 값만으로 되어 있는 정규형 제2 정규형:2NF 테이블 R이 제 1정규형이고, 기..

    [SQL] ROLLUP(), CUBE(), GROUPING() 그리고 PIVOT(), UNPIVOT()

    ROLLUP() 주어진 데이터들의 소계를 구해준다. SELECT no, sum(pay) FROM test GROUP BY ROLLUP(no); CUBE() 주어진 데이터들의 소계와 총계를 구해준다. SELECT no, sum(pay) FROM test GROUP BY CUBE(no); GROUPING() 컬럼이 해당 그룹핑 작업에 사용되었는지 아닌지를 구별해주는 함수, 컬럼이 그룹핑 작업에 사용되었으면 0을 반환하고 사용되지 않았으면 1을 반환한다. SELECT no, sum(pay), GROUPING(no) FROM test GROUP BY ROLLUP(no); LISTAGG() 여러개의 행을 하나의 컬럼으로 합친다. SELECT no, LISTAGG(name, '*') WITHIN GROUP(ORDE..

    [SQL] 정규화의 이상 그리고 함수적 종속

    정규화 이상(Anomaly) 테이블에서 일부 속성등의 종속으로 인하여 데이터의 중복(Redundancy)이 발생하고 이러한 중복으로 인해 테이블 조작(Manipulation) 시 문제가 발생하는 현상 이상(Anomaly)의 종류 삽입 이상(Insertion Anomaly) 테이블에 데이터를 삽입할 때 의도와는 다르게 원하지 않는 값들로 인해 삽입할 수 없게 되는 현상 삭제 이상(Deletion Anomaly) 테이블에서 한 튜플을 삭제할 때 의도와는 다르게 상관없는 값들도 함께 삭제되는 즉, 연쇄삭제가 발생하는 현상 갱신 이상(Update Anomaly) 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(inconsistency)이 생기는 현상 함수적 종속(Func..