[mysql] MySQL은 고유 제약 조건에서 null 값을 무시합니까?

고유하고 싶은 이메일 열이 있습니다. 그러나 null 값을 허용하기를 원합니다. 내 데이터베이스에 그런 방식으로 2 개의 null 이메일이있을 수 있습니까?



답변

예, MySQL은 고유 제약 조건이있는 열에서 여러 NULL을 허용합니다.

CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1);   -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;

결과:

x
NULL
NULL
1

모든 데이터베이스에 적용되는 것은 아닙니다. 예를 들어 SQL Server 2005 및 이전 버전은 고유 제약 조건이있는 열에 단일 NULL 값만 허용합니다.


답변

에서 워드 프로세서 :

“UNIQUE 인덱스는 NULL을 포함 할 수있는 열에 대해 여러 개의 NULL 값을 허용합니다”

이것은 BDB 이외의 모든 엔진에 적용됩니다 .


답변

저자가 원래 이것이 중복 값을 허용하는지 여부를 묻는 지 또는 여기에 ” NULL사용하는 동안 중복 값 을 허용하는 방법 UNIQUE?”을 암시하는 질문이 있는지 확실하지 않습니다. 또는 “하나의 UNIQUE NULL값만 허용하는 방법 “

질문에 이미 답변되었으므로 인덱스 NULL를 사용하는 동안 중복 값을 가질 수 있습니다 UNIQUE.

“하나의 UNIQUE NULL가치 를 허용하는 방법”을 검색하는 동안이 답변을 발견했습니다 . 같은 일을 하면서이 질문에 걸려 넘어 질 수있는 다른 사람들을 위해, 나머지 대답은 당신을위한 것입니다 …

MySQL에서는 하나의 UNIQUE NULL값을 가질 수 없지만 UNIQUE빈 문자열 값을 삽입하여 하나의 빈 값을 가질 수 있습니다 .

경고 : 숫자 및 문자열 이외의 유형은 기본값이 0이거나 다른 기본값 일 수 있습니다.


답변

널 입력 가능 고유 제한 조건을 피하십시오. 열을 항상 새 테이블에 넣고 널이 아닌 고유 한 값으로 만든 다음 값이있을 때만 해당 테이블을 채울 수 있습니다. 이렇게하면 열에 대한 모든 키 종속성이 올바르게 적용되고 널 (null)로 인해 발생할 수있는 문제점을 피할 수 있습니다.


답변