mysql에서 auto_increment 컬럼에 NULL 또는 '' 를 insert 하는 차이가 무엇인가요?


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

$sql1= "INSERT INTO member_table (no ,id, pw, email,phone,address) VALUES (NULL, '$id', '$pw', '$email', '$phone', '$address')";

$sql2 = "INSERT INTO member_table (no ,id, pw, email,phone,address) VALUES ('', '$id', '$pw', '$email', '$phone', '$address')";

$sql3 = "INSERT INTO member_table (id, pw, email,phone,address) VALUES ('$id', '$pw', '$email', '$phone', '$address')";

위의 member_table에 데이터를 넣는다고 할 때, $sql1, $sql2에서 보듯이 auto_increment 컬럼인 no에 NULL을 넣어서 쓰기도 하고 싱클쿼테이션을 넣어서 쓰기도 하는데, 두 가지의 차이점이 무엇인가요?

그리고 한 가지 더 질문을 드리자면 그냥 $sql3와 같이 사용하는 것과 다른 차이가 있나요?

답변 부탁드립니다.

  • 2016년 04월 20일에 작성됨

조회수 284


1 답변


좋아요
2
싫어요
채택취소하기

MySQL에서는 auto_increment 컬럼을 값을 할당하지 않거나 0을 할당하면 자동으로 sequence number가 할당됩니다. 그리고, 만일 auto_increment 컬럼이 NOT NULL이면 NULL을 할당해도 sequence number가 할당되구요.

위의 member_table의 경우를 보면

  • no컬럼이 NULLABLE인 경우
INSERT INTO member_table
(id, pw, email, phone, address)
VALUES(1, 'password', 'a@a.com', '010-1111-1111', '주소');

INSERT INTO member_table
(no, id, pw, email, phone, address)
VALUES(0, 1, 'password', 'a@a.com', '010-1111-1111', '주소');
  • no컬럼이 NOT NULL인 경우
INSERT INTO member_table
(no, id, pw, email, phone, address)
VALUES(NULL, 1, 'password', 'a@a.com', '010-1111-1111', '주소');

언급하신 경우 중 '' (blank)를 넣으면 integer값이 아니라고 에러가 발생합니다. 일반적으로 auto_increment 컬럼에 값을 할당하지 않는 방식을 많이 사용하는 것 같습니다.

  • 2016년 04월 20일에 작성됨
    Polyglot Programmer

  • 값을 할당하지 않는 방식으로 가는 게 좋겠네요. 답변 감사드립니다^^    kjoon   2016.4.20 21:50     

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

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