happy cat image

everdevel

coding

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.

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

안녕하세요.

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

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

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

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

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

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

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

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

이 옵션은 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를 옵션에 추가했을 뿐입니다.

자, 그럼 실행해 주세요.

unique

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

DESC student;
unique

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

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

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

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

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

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

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

unique

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

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

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

그럼 값을 확인해봅시다.

SELECT * FROM student;
unique

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

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


봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.


    
    

강좌로 돌아가기

댓글 0개

정렬기준