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



예) 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은 인덱스를 안 타서 모든 컬럼을 다 훑어 본다는 얘기도 있네요..

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

  • 2016년 04월 20일에 작성됨

조회수 382


1 답변


좋아요
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 값을 선언한 경우입니다.

  • 2016년 04월 20일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close