개발/DB(MariaDB)

6. DB - (key)

oneidsin 2025. 3. 17. 17:23

key

데이터베이스에서 키(Key) 는 테이블에서 각 행(레코드)을 고유하게 식별하는 역할을 한다.
키의 종류는 기본키, 후보키, 대체키, 왜래키, 복합키, 슈퍼키가 있다.

출처: https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%ED%82%A4KEY-%EC%A2%85%EB%A5%98-%F0%9F%95%B5%EF%B8%8F-%EC%A0%95%EB%A6%AC

 

기본키(Primary Key, PK)

기본키는 중복되지 않고, NOT NULL 이다.
한 테이블에 하나만 설정 가능하다.
또한 테이블에 종속적이다(키 하나 만들면 하나의 테이블에서만 사용해야한다)
여러 컬럼을 엮어서 만들 수도 있다.

-- 1. 테이블 생성시 생성
create table pk_test(
	first_col int(3)
	, second_col varchar(4)
    , primary key (first_col);
);

-- 2. 테이블 생성후 생성
-- ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건 타입] (적용 컬럼);

alter table pk_test add constraint primary key (first_col);
-- 또는 constraint를 빼도 된다
alter table pk_test add primary key (first_col);

 

기본적으로 기본키는 중복값을 허용하지 않기 때문에 중복된 값을 넣으려고 하면 에러가 난다.

-- 값을 넣기(키가 중복되면 에러를 낸다)
-- SQL Error [1062] [23000]: (conn=11) Duplicate entry '113' for key 'PRIMARY'

insert into employees (emp_no, first_name, family_name)
	values(113, 'jihoon', 'kim');

 

여러 컬럼을 합쳐서 복합키를 만드는 경우도 있다.

-- 여러 컬럼을 합쳐서 만든다(복합키)
-- 왜래키를 이용해 복합키를 만드는 경우가 있는데 UPDATE 나 INSERT 에 제한을 주므로 사용하지 않는 것이 좋다.
-- 예) 주민번호 앞자리 + 주민번호 뒷자리

create table pk_test2(
	first_col int(5)
	, second_col varchar(10)
	, third_col date
	, primary key(first_col, second_col)
);

 

부여한 기본키 제약조건을 삭제하려면

-- 3) 제약조건 삭제
-- ALTER TABLE [테이블명] DROP [제약조건 종류];

alter table pk_test drop primary key;

 

후보키(Candidate Key)

기본키로 사용할 수 있는 후보군
여러 개가 존재할 수 있고, 이 중 하나를 기본키(PK)로 선택한다.
기본키와 마찬가지로 중복이 불가하며 NOT NULL 이다.

 

대체키(Alternte Key)

후보키 중에서 기본키로 선택되지 않은 키이다.
unique 제약 조건을 통해 중복 방지가 가능하다.

 

외래키(Foreign Key, FK)

다른 테이블의 기본키(PK)를 참조하는 키이다.
테이블 간 관계를 형성한다.
무결성 유지(on delete cascade) 옵션 사용 가능

 

복합키(Composite Key)

두 개 이상의 컬럼을 조합하여 기본 키로 설정한다.
단일 컬럼으로 고유한 값을 만들기 어려울 때 사용한다.

 

슈퍼키(Super Key)

유일성을 보장하는 모든 키가 슈퍼키이다.

'개발 > DB(MariaDB)' 카테고리의 다른 글

8. DB - (JOIN)  (0) 2025.03.17
7. DB - (서브쿼리)  (0) 2025.03.17
5. DB - (트랜잭션)  (0) 2025.03.17
4. DB - (DML-2, ORDER BY, GROUP BY, HAVING)  (0) 2025.03.17
3. DB - (DML-1)  (0) 2025.03.17