도슐랭스타

DB-INDEX와 KEY(Primary Key, Unique Key, Foreign Key, Index Key) 본문

DB

DB-INDEX와 KEY(Primary Key, Unique Key, Foreign Key, Index Key)

도도.__. 2024. 3. 25. 18:33

INDEX

  • 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조임.
  • 인덱스가 생성된 특정 column을 정렬한 상태로 정리해 검색 성능을 높임.

KEY

  • 특정 레코드를 식별할 때 사용하는 속성 or 속성의 집합
  • 한 테이블 안에 같은 모든 속성이 일치하는 레코드는 존재할 수 없음.
  • Primary Key(기본키), Unique Key(유니크키), Index Key(인덱스키)

Primary Key(기본키)

  • 테이블에 딱 하나만! 존재할 수 있는 가장 기본이 되는 Key임.
  • 특정한 테이블 or 레코드 or 튜플을 유익하게 구별할 수 있는 '고유식별속성'임.
  • 다른 레코드 값과 '중복될 수 없고' 'NULL'일 수 없음.
#테이블 생성할 때 기본키 설정
CREATE TABLE table_name(
    column1 datatype NOT NULL PRIMARY KEY,
    column2 datatype
);
#이미 만들어진 테이블에서 기본키 설정할 때
ALTER TABLE table_name
ADD PRIMARY KEY(column_name);

Unique Key(유니크키)

  • 다른 레코드 값과 중복될 수 없는 키임.
    =설정된 칼럼에 입력되는 데이터가 각각 유일함.
  • NULL 값이 허용 됨 (=전화번호 같은 것. 고유하지만 없을 수도 있음.)
  • 하나의 테이블에 여러 개의 Unique Key를 설정할 수 있음.
  • 주로 Primary Key를 설정 후 추가적으로 고유한 식별자가 있는 경우 Unique Key로 설정함.
#테이블 생성할 때 유니크키 설정
CREATE TABLE table_name(
    column1 datatype UNIQUE,
    column2 datatype UMIQUE,
    column3 datatype
);
#또는
CREATE TABLE table_name(
    column1 datatype,
    column2 datatype,
    column3 datatype,
    UNIQUE INDEX index1_name(column1),
    UNIQUE INDEX index2_name(column2)
);
#이미 만들어진 테이블 스키마를 수정할 때
ALTER TABLE table_name
ADD UNIQUE INDEX index_name(column_name);
#또는
ATER TABLE table_name
ADD UNIQUE (column_name);

Index Key(인덱스키)

  • 한 테이블에 여러 개의 인덱스 Key 설정이 가능함.
  • 중복 값과 NULL 값이 혀용 됨.
  • 검색 속도 향상을 위해 활용됨.
#테이블 생성할 때 인덱스키 설정
CREATE TABLE table_name(
     column1 datatype,
     column2 datatype,
     column3 datatype,
     INDEX index1_name(column1)
     INDEX index2_name(column2)
);
#이미 만들어진 테이블 스키마를 수정
ALTER TABLE table_name
ADD INDEX index_name(column_name);

Foreign Key(외래키)

  • 부모 테이블의 (참조되는)키를 참조하는 키.
  • 테이블들 간의 관계를 나타내기 위해서 사용됨.
#테이블 생성할 때 외래키 설정
CREATE TABLE table_name(
    column1 datatype,
    column2 datatype,
    FOREIGN KEY(column1) REFERENCES parent_table(key)
);
#이미 만들어진 테이블 스키마를 수정
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES parent_table(key);

AUTO_INCREAMENT

  • 각 칼럼의 기본값으로 설정해 줄 수 있는 옵션 중 하나임.
  • 주로 고유 식별자 번호를 자동으로 발급하는데 사용됨.
  • 레코드 값이 중복되지 않고 1씩 자동 증가하게 됨.
  • INSERT INTO로 레코드를 추가할 때, NULL을 넣거나 생략하면 자동으로 값이 채워짐.
CREATE TABLE table_name(
     column1_ID BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
     column2 datatype,
     column3 datatype
);

 

  기본키 (Primary Key) 유니크 키 (Unique Key) 인덱스 키 (Index Key)
정의 테이블 내에서 레코드를 고유하게 식별하는 역할을 수행하는 키 중복 값을 허용하지 않고, 테이블 내에서 유일한 값을 가지는 역할을 수행하는 키 테이블의 검색 속도를 향상시키기 위해 사용되는 데이터 구조
개수 테이블 당 하나만 지정 가능 테이블 당 여러 개 지정 가능 테이블 당 여러 개 지정 가능
NULL 값 허용 허용되지 않음 허용됨 허용됨
인덱스 생성 시 자동 생성 자동으로 생성됨 자동으로 생성되지 않음 자동으로 생성되지 않음
검색 속도 향상 기본키는 테이블의 주요 검색 기준이 되어 매우 빠른 검색 속도를 제공 유니크 키는 인덱스를 가지므로 검색 속도는 빠르지만, 기본키보다는 약간 느릴 수 있음 인덱스 키는 검색 속도를 향상시키지만, 유니크 키나 기본키보다는 느릴 수 있음
사용 예시 주민등록번호, 학번 등 특정 레코드를 고유하게 식별할 필요가 있는 경우 이메일 주소, 사용자 아이디 등 중복을 허용하지 않아야 하는 경우 자주 검색되는 컬럼에 인덱스를 생성하여 검색 속도를 향상시키는 경우
반응형

'DB' 카테고리의 다른 글

클러스터, 넌클러스터 인덱스  (0) 2024.04.15
2개 이상의 칼럼을 Key로 묶기  (0) 2024.04.09
DB - ALTER TABLE 정리  (0) 2024.03.18
DB-WHERE 구문 정리  (1) 2024.03.18
DB - SQL 쿼리  (0) 2024.03.11
Comments