특정 필드에 고유값 넣기(중복값 넣지 않기)

안녕하세요.

이번 시간에는 필드에 같은 값이 들어가지 않게하는 방법에 대해 알아보겠습니다.

즉, 고유의 값만 들어가게 하는 방법입니다.

예를들면 학교의 반으로 치면 한 반에 같은 번호를 가진 학생이 있을 수 없고

대학으로 치면 해당 대학내에 같은 학번을 가진 학생이 있을 수 없고

군대라면 군번이 같은 사람이 있을 수 없으며

국가적으로는 같은 주민번호를 가진 사람이 있을 수 없습니다.

이런 경우 혹시 값을 입력하더라도 중복값이면 들어가지 않도록 시스템적으로도 막을 필요가 있습니다.

이러한 고유값이 들어가는 필드인 경우 고유값만 받을 수 있도록 설정을 해야합니다.

이 옵션은 UNIQUE입니다.

필드에 UNIQUE를 설정하면 같은 값이 들어가지 않습니다.

우리가 사용해볼 db는 study_db 이며 테이블은 student입니다.

USE study_db;
MySQL UNIQUE

우리는 email필드에 unique를 적용하겠습니다.

먼저 student 테이블의 구조를 보겠습니다.

DESC student;
MySQL UNIQUE

위에 이미지를 보면 PRI 필드 부분에 email 필드에 관한 부분은 아무것도 없습니다.

즉 현재는 중복값이 들어갈 수 있는 상태입니다.

그럼 email필드에 UNIQUE를 설정해서 중복값이 들어갈 수 없도록 하겠습니다.

쿼리문은 다음과 같습니다.

ALTER TABLE student MODIFY email varchar(50) NOT NULL UNIQUE;

우리가 이미 알고 있는 명령문이죠. 단지 UNIQUE를 옵션에 추가했을 뿐입니다.

자, 그럼 실행해 주세요.

그럼 이제 다시 구조를 살펴봅시다.

DESC student;

아까와 달리 PRI 필드에 UNI가 보입니다.

이제 중복된 값이 들어갈 수 없습니다.

그럼 이미 존재하는 이메일을 넣어 봅시다.

이미 존재하는 minnie@coreasur.com를 넣어봅시다.

다음의 쿼리문을 입력해주세요.

INSERT INTO student(num, name, gender, job, area, email, rank) VALUES(20200009,'mickey','m','character','disney','minnie@coreasur.com', 1);

다음과 같이 이미 존재하는 값이라고 에러가 발생합니다.

그러면 이메일 주소를 이번에는 없는 값인 mickey@coreasur.com으로 해서 넣어봅시다.

INSERT INTO student(num, name, gender, job, area, email, rank) VALUES(20200009,'mickey','m','character','disney','mickey@coreasur.com', 1);

오류없이 잘 들어갔습니다.

그럼 값을 확인해봅시다.

SELECT * FROM student;

값이 잘 들어갔네요. ^^ 네 이렇게해서 UNIQUE에 대해서 알아봤습니다.

이렇게 인간이 실수로 입력할 수 있으니 이러한 경우는 시스템적으로 원천적으로 막아두는게 좋습니다. ^-^*