Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 트랜잭션
- @SpyBean
- @ControllerAdvice
- Service Locator 패턴
- Firebase
- Connection Pool
- deleteById
- NotEmpty
- 디자인 패턴
- java
- db
- multi module
- Proxy Patter
- Service Locator
- SQL 삽입 공격
- Spring Boot
- NotBlank
- Item04
- restTemplate
- 이펙티브 자바
- @Valid
- Effetive Java
- Web
- Effective Java
- 플라이웨이트
- FCM
- @MockBean
- 데이터베이스
- JPA
- springboot
Archives
- Today
- Total
NoTimeForDawdling
Primary Key vs Unique Key 본문
오늘은 Primary Key와 Unique Key의 차이에 대해서 알아보겠습니다.
Primary Key
- Primary Key는 해당 테이블의 식별자 역할을 하는 제약 조건으로 테이블에 하나만 설정할 수 있습니다.
- 다른 레코드들과 서로 다르다는 사실을 확인할 수 있도록 도와주는 역할을 합니다.
- 즉, 유일성을 보장해 줍니다.
- 유일성을 보장해주기 위해서는 Unique 해야 하며 NULL이면 안됩니다.(NOT NULL)
Unique Key
- Unique Key는 테이블 내 항상 유일해야 하는 값을 의미합니다.
- 즉, 중복을 허용하지 않는 컬럼입니다.
- 유일해야 하는 값은 레코드당 하나일 필요가 없습니다.
- 즉, 한 테이블에 여러개 설정이 가능합니다.
- Unique Key는 NULL값이 허용됩니다.
회원 테이블 예제
회원 테이블이 있다고 가정할 때, 회원 이름, 주민번호, 아이디, 주소 등 여러 가지 있을 겁니다.
여기서 유일한 성질이 무엇이 있을까요?
회원 이름이나 주소는 중복이 될 수도 있습니다. 하지만 회원의 주민번호는 중복이 될 수 없을 겁니다.
또한, 회원 가입할 때 아이디는 보통 중복을 허용하지 않습니다. 그렇다면 유일한 성질은 다음과 같습니다.
- 유일한 성질: 주민번호, 아이디
- 즉, 주민번호, 아이디 둘 중 하나를 PK로 설정할 수 있습니다.
- 만약 회원 이름을 Unique Key로 설정했을 때
- 회원 이름을 가진 사람은 최초의 한 사람만 가입이 가능해집니다.
Primary Key와 Unique Key 생성 및 추가 삭제 방법
Primary Key
1. 테이블 생성
1-1) 단일 PK값 설정 방법
CREATE TABLE table_name (
column1 int(10) PRIMARY KEY
)
1-2) 다중 PK값 설정 방법(복합 키)
CREATE TABLE table_name (
column1 int(10),
column2 int(10),
PRIMARY KEY (column1, column2)
)
2. 새로운 PK 설정
ALTER TABLE table_name ADD PRIMARY KEY (column1, column2);
3. 삭제
ALTER TABLE table_name DROP PRIMARY KEY
Unique Key
1. 테이블 생성
CREATE TABLE table_name (
column1 int(10),
column2 int(10),
UNIQUE KEY uk_name (column1, column2)
)
2. 추가
ALTER TABLE table_name ADD UNIQUE uk_name (column1, column2);
3. 삭제
ALTER TABLE table_name DROP INDEX uk_name
'DB' 카테고리의 다른 글
DB 데이터 캐싱(Caching) (0) | 2021.03.11 |
---|---|
ORM(Object Relation Mapping)이란? (0) | 2021.03.10 |
DB 인덱스(Index) (0) | 2021.03.04 |
트랜잭션 격리 수준(Isolation Level) (0) | 2021.02.18 |
트랜잭션(Transaction) (0) | 2021.02.16 |