테이블을 생성할 때 칼럼이름과 데이터타입, 제약조건을 작성한다. 이때 다음 세가지 테이블을 비교해보자.
//NULL 허용, DEFAULT 값 NULL
CREATE TABLE cat1 (
name VARCHAR(100),
age INT
);
//NULL 허용X, DEFAULT 값 NULL, 데이터 삽입안하면 에러발생
CREATE TABLE cat2 (
name VARCHAR(100) NOT NULL,
age INT NOT NULL
);
//NULL 허용, 데이터 삽입안하면 디폴트값 적용
//의도적으로 NULL 삽입 가능
CREATE TABLE cat3 (
name VARCHAR(100) DEFAULT 'unnamed',
age INT DEFAULT 99
);
//NULL 허용X, 데이터 삽입안하면 디폴트값 적용
//의도적으로 NULL 삽입 불가
CREATE TABLE cat4 (
name VARCHAR(100) NOT NULL, DEFAULT 'unamed',
age INT NOT NULL, DEFAULT 99
);
디폴트 값을 선언해주면 NULL값을 허용여부와 관계없이 모든 칼럼에 대한 값이 적절하게 작성되지 않았을때 디폴트 값이 적용된다.
디폴트 값이 없고, NOT NULL인 경우는 모든 칼럼에 대한 데이터가 존재하지 않는 경우 데이터 삽입 시 에러가 발생한다.
데이터베이스에서 테이블을 생성할때 항상 varchar(255)
만 썼는데, varchar의 특성상 최대 글자수 제한을 정할 수 있으므로 필요에 따라 적절한 제한을 주는 것이 필요할 것 같다.
그리고, NOT NULL과 DEFAULT 속성을 활용한다면 데이터를 삽입할때, 실수가 발생할 경우 에러 찾는 것이 쉬울 것 같다.