도슐랭스타
DB-INDEX와 KEY(Primary Key, Unique Key, Foreign Key, Index Key) 본문
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