- [MySQL] 15. UNIQUE 제약2024년 06월 04일
- Song hyun
- 작성자
- 2024.06.04.:25
728x90반응형[MySQL] 15. UNIQUE 제약
1. UNIQUE 제약이란?
2. UNIQUE key의 특징
3. 시나리오 코드
1. UNIQUE 제약이란?
(1) UNIQUE key는 데이터베이스 테이블의 열(Column)에 적용되는 제약 조건이다. 이들 중에 해당 열의 값들이 고유(unique)하다는 것을 보장한다. 즉, 중복된 값을 허용하지 않는 제약이다.
(2) 또한 UNIQUE 제약 조건은 데이터베이스에서 인덱스를 생성할 때도 사용된다. UNIQUE 제약 조건이 설정된 열은 인덱스를 생성할 때 자동으로 인덱스로 지정되어, 검색 속도를 높일 수 있다.
2. UNIQUE key의 특징
(1) 고유한 값 보장: 특정 열에 UNIQUE key가 적용되면 해당 열에 있는 모든 값들이 고유해야 한다. 즉, 중복된 값을 허용하지 않는다.
(2) NULL 값 허용: 기본적으로 UNIQUE key 는 Null 값을 허용한다. 즉 해당 열에는 Null 값이 최대 하나까지만 허용된다.
(3) 인덱스 생성: UNIQUE key는 내부적으로 해당 열에 대한 인덱스를 생성한다. 이는 검색 성능을 향상시키고, 중복된 값을 피하기 위한 용도로 사용된다.
(4) 테이블 전체에 대해 적용 가능: UNIQUE Key는 단일 열 또는 여러 열에 적용할 수 있다. 즉, 하나의 열에만 고유성을 적용할 수도 있고, 여러 열의 조합에 고유성을 적용할 수도 있다.
(5) 제약 조건: UNIQUE key는 데이터 무결성을 보장하기 위한 제약 조건으로 사용된다. 이를 통해 잘못된 데이터가 테이블에 삽입되는 것을 방지할 수 있다.
3. 시나리오 코드
위와 같이 unique 제약을 건 컬럼에 중복된 값을 넣으면, Duplicate 오류가 발생하는 것을 볼 수 있다.
(*참고하면 좋은 글: https://whatsthatsound.tistory.com/238)
-- 멤버 테이블 설계 -- unique 제약 설정 create database memebers; use memebers; create table member( id int primary key auto_increment, email varchar(50) unique, phone varchar(20), address varchar(100) not null ); desc member; INSERT INTO member (email, phone, address) VALUES ('hong@test.com', '010-1234-5678', '서울시 강남구'), ('kim@test.com', '010-2345-6789', '서울시 서초구'), ('lee@test.com', '010-3456-7890', '서울시 종로구'), ('park@test.com', '010-4567-8901', '서울시 마포구'), ('choi@test.com', '010-5678-9012', '서울시 강서구'), ('kang@test.com', '010-6789-0123', '서울시 송파구'); select * from member; -- 문제 1: id가 2인 회원의 전화번호를 010-2222-2222로 수정해보자. update member SET phone='010-2222-2222' where id=2; -- 문제 2: id가 5인 회원의 이메일과 주소를 'a@naver.com','부산시 진구'로 수정해보자. update member SET email='a@naver.com' and address='부산시 진구' WHERE id=5; -- 문제 3: id가 1인 회원의 email을 a@naver.com으로 수정해보자. update member set email='a@naver.com' where id=1; -- email 컬럼에 `a@naver.com` 먼저 들어가 있어서 업데이트 불가 -- unique 제약이라 중복을 허용하지 않는다.
728x90반응형'MySQL > 기본 개념 및 지식' 카테고리의 다른 글
[MySQL] 17. 도전 문제: 테이블 및 문제 만들기 (0) 2024.06.04 [MySQL] 16. INDEX 인덱스 (0) 2024.06.04 [MySQL] 14. DELETE 구문과 조건절 (0) 2024.05.31 [MySQL] 13. UPDATE 구문과 조건절 (0) 2024.05.31 [MySQL] 12. 조건절 활용 : 샘플 데이터를 활용한 도전 과제 (0) 2024.05.31 다음글이전글이전 글이 없습니다.댓글