mysql에서 컬럼 기본값을 null과 not null 중 어떤 것을 써야 좋을까요?

조회수 6716회

예) member_table
no - auto increment,
id - not null,
pw - not null,
email,  
phone,  
address 

예를 들어서 위의 테이블에서 id와 pw만 필수 입력 항목일 때, email, phone, address 컬럼은 기본값을 not null을 주고, insert할 때 싱클퀘테이션을 입력해 주는지, 아니면 그냥 기본값을 null로 주고, insert 할 때 null을 주거나, sql문에서 해당 컬럼을 빼거나 하는지 궁금하네요.

이 기본 세팅에 따라 select할 때도, where email != NULL 로 할 지 where id != '' 로 할 지 결정을 해야 하는데, null은 인덱스를 안 타서 모든 컬럼을 다 훑어 본다는 얘기도 있네요..

상황마다 다르겠지만, 기본적으로 권장되는 방법이 있다면 답변 부탁드립니다~

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 테이블에서 not null 로할지 null 로 할지는 도메인 분석하실 때 결정하시면 될 것 같습니다.

    예를 들어, email 주소는 입력이 필수일 경우 not null 로 해야겠지요. 다른 예로 address는 입력하지 않아도 된다면 nullable 상태로 두시면 됩니다.

    그리고 MySQL 문서에 보면 다음과 같은 설명을 찾을 수 있을 겁니다.

    MyISAM, InnoDB, BDB, MEMORY 에서만 인덱스에 NULL을 더 할 수 있다.

    마지막으로 SQL 에서 null 체크 문장은 column IS NULL 혹은 column IS NOT NULL 로 해야 합니다. 또한 insert 시 value 입력을 생략할 수 있는 경우는 테이블 생성시 default 값을 선언한 경우입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)