[SQL] 키, 인덱스

impala·2023년 1월 7일
0

SQL 문법

목록 보기
4/8
post-thumbnail

Key

Primary Key

  • 중복x, NULL값x

  • 테이블당 하나의 PK만 설정 가능

  • PK설정 방법

    • 테이블 생성 시 CONSTRAINT로 설정
    • PRIMARY KEY(COLUMN명)
    -- PK 넣는 방법 1
    CREATE TABLE 테이블명 (
      COLUMN_이름 자료형 PRIMARY KEY,
    );
    
    -- PK 넣는 방법 2
    CREATE TABLE 테이블명 (
      A CHAR(2),
      PRIMARY KEY (A)
    );
  • PK변경

    ALTER TABLE 테이블명 DROP PRIMARY KEY; 				-- PK삭제
    ALTER TABLE 테이블명 ADD PRIMARY KEY (COLUMN_이름);	-- PK추가
  • 다중PK : PK가 여러개인 것이 아니고, 여러 COLUMN의 조합이 PK로 동작하는 것

    • PRIMARY KEY (COL_A, COL_B, ...)

Unique Key

  • NULL값이 허용되는 PK
  • 한 테이블에 여러개의 UNIQUE KEY 설정 가능
  • 다중 UNIQUE KEY가능
    • UNIQUE (COL_A, COL_B, ...)
  -- UNIQUE 넣는 방법 1
  CREATE TABLE 테이블명 (
    COLUMN_이름 자료형 UNIQUE,
  );

  -- UNIQUE 넣는 방법 2
  CREATE TABLE 테이블명 (
    A CHAR(2),
    UNIQUE (A)
  );

Foreign Key

  • 테이블을 연결(JOIN)할 때 사용하는 키
  • FK는 자식 테이블에 설정함
    • 국가 - 도시 관계에서 국가는 부모 테이블, 도시는 자식 테이블
  • FK는 부모테이블의 PK와 일치해야 함
  • 제약조건 : 데이터를 수정하다가 부모-자식 관계를 잃어버리는 것을 방지하기 위한 것
    • NO ACTION, RESTRICT : 자식이 있으면 부모를 못지움(DELETE, UPDATE)
    • CASCADE : 부모를 지우면 자식도 지워짐(DELETE, UPDATE)
    • SET NULL : 자식 테이블의 FK를 NULL로 설정
    • SET DEFAULT : 자식 테이블의 FK를 DEFAULT값으로 설정
-- FK생성
ALTER TABLE 자식테이블명
  ADD CONSTRAINT 제약조건
  FOREIGN KEY (FK로_설정할_COLUMN명)
  REFERENCES 부모테이블명 (부모테이블_PK_COLUMN명)
  -- ON DELETE _삭제시제약 
  -- ON UPDATE _수정시제약 
  
-- FK삭제
ALTER TABLE 자식테이블명 DROP FOREIGN KEY FK로_설정된_COLUMN명

Index

  • 특정 COLUMN에 인덱스를 적용하면 그 행에 대한 정렬된 리스트가 생성되기 때문에 더 빠르게 검색이 가능하지만 행이 추가, 변경, 삭제될 때마다 처리시간이 늘어남
  • PK는 기본적으로 INDEX로 등록됨
    -- 인덱스 생성
    ADD INDEX 인덱스명(COLUMN_이름);
    -- 다중 컬럼 인덱스
    ADD INDEX 인덱스명 (COL1, COL2, ...);
    -- 인덱스 조회
    SHOW INDEX FROM 테이블명;
    -- 인덱스 삭제
    DROP INDEX 인덱스명;
  • 데이터의 변경이 적은 테이블에 적합
  • WHERE, ORDER BY, JOIN에 자주 사용되는 COLUMN에 적합
  • Cardinality가 높은 COLUMN에 적합(데이터의 중복이 적은 COLUMN)
  • 종류
    • B-Tree INDEX : DEFAULT
    • Full-Text INDEX : 데이터를 일정 단위로 분할하여 인덱싱(단어 및 구문 검색)
      • ADD FULLTEXT INDEX 인덱스명 (COLUMN명);
    • Hash INDEX : 일치 여부만 확인
    • Bitmap INDEX
    • ...

참고자료

0개의 댓글