CLASS web

MySQL

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

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

안녕하세요.

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

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

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

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

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

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

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

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

이 옵션은 UNIQUE입니다.

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

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

USE smart;

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

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

DESC member;
MySQL UNIQUE

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

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

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

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

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

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

자, 그럼 실행해 주세요.

MySQL UNIQUE

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

DESC member;
MySQL UNIQUE

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

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

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

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

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

INSERT INTO member(name, gender, job, area, email, rank) VALUES('mickey','m','character','disney','minnie@pinkcoding.com', 1);

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

MySQL UNIQUE

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

INSERT INTO member(name, gender, job, area, email, rank) VALUES('mickey','m','character','disney','mickey@pinkcoding.com', 1);
MySQL UNIQUE

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

그럼 값을 확인해봅시다.

SELECT * FROM member;
MySQL UNIQUE

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

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





댓글 0개

정렬기준

PinkCoding

PinkCoding

X

PinkCoding

Web Scratch Pad

X

loading

            
            
        

컨텐츠로 돌아가기