안녕하세요.
이번 시간에는 필드에 같은 값이 들어가지 않게하는 방법에 대해 알아보겠습니다.
즉, 고유의 값만 들어가게 하는 방법입니다.
예를들면 학교의 반으로 치면 한 반에 같은 번호를 가진 학생이 있을 수 없고
대학으로 치면 해당 대학내에 같은 학번을 가진 학생이 있을 수 없고
군대라면 군번이 같은 사람이 있을 수 없으며
국가적으로는 같은 주민번호를 가진 사람이 있을 수 없습니다.
이런 경우 혹시 값을 입력하더라도 중복값이면 들어가지 않도록 시스템적으로도 막을 필요가 있습니다.
이러한 고유값이 들어가는 필드인 경우 고유값만 받을 수 있도록 설정을 해야합니다.
이 옵션은 UNIQUE입니다.
필드에 UNIQUE를 설정하면 같은 값이 들어가지 않습니다.
우리가 사용해볼 db는 study_db 이며 테이블은 student입니다.
USE study_db;
우리는 email필드에 unique를 적용하겠습니다.
먼저 student 테이블의 구조를 보겠습니다.
DESC student;
위에 이미지를 보면 PRI 필드 부분에 email 필드에 관한 부분은 아무것도 없습니다.
즉 현재는 중복값이 들어갈 수 있는 상태입니다.
그럼 email필드에 UNIQUE를 설정해서 중복값이 들어갈 수 없도록 하겠습니다.
쿼리문은 다음과 같습니다.
ALTER TABLE student MODIFY email varchar(50) NOT NULL UNIQUE;
우리가 이미 알고 있는 명령문이죠. 단지 UNIQUE를 옵션에 추가했을 뿐입니다.
자, 그럼 실행해 주세요.
그럼 이제 다시 구조를 살펴봅시다.
DESC student;
아까와 달리 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);
다음과 같이 이미 존재하는 값이라고 에러가 발생합니다.
그러면 이메일 주소를 이번에는 없는 값인 mickey@everdevel.com으로 해서 넣어봅시다.
INSERT INTO student(num, name, gender, job, area, email, rank) VALUES(20200009,'mickey','m','character','disney','mickey@everdevel.com', 1);
오류없이 잘 들어갔습니다.
그럼 값을 확인해봅시다.
SELECT * FROM student;
값이 잘 들어갔네요. ^^ 네 이렇게해서 UNIQUE에 대해서 알아봤습니다.
이렇게 인간이 실수로 입력할 수 있으니 이러한 경우는 시스템적으로 원천적으로 막아두는게 좋습니다. ^-^*
봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.
댓글 0개
정렬기준