db 스키마에서 not null 질문드립니다.
본문
안녕하세요^^
아래는 영카트 상품 테이블 스키마 일부분 입니다.
아래에서 분명히 Null 을 NO 로 되어있는것은
NOT NULL 로 설정한거 아닙니까?
그런데 Default 값에서 NULL 로 되어있는것은 뭣인지 궁금합니다.
mysql> desc g5_shop_item;
+---------------------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------------------+-------+
| it_id | varchar(20) | NO | PRI | | |
| ca_id | varchar(10) | NO | MUL | 0 | |
| ca_id2 | varchar(255) | NO | | | |
| it_mobile_skin | varchar(255) | NO | | | |
| it_name | varchar(255) | NO | MUL | | |
| it_maker | varchar(255) | NO | | | |
| it_supply_subject | varchar(255) | NO | | | |
| it_type1 | tinyint(4) | NO | | 0 | |
| it_basic | text | NO | | NULL | |
| it_explan | mediumtext | NO | | NULL | |
| it_explan2 | mediumtext | NO | | NULL | |
| it_mobile_explan | mediumtext | NO | | NULL | |
답변 1
디폴드값이 null 이라면 빈값입력시 null 상태로 저장됩니다.
눈에 보이는건 없는거나 똑같으나
쿼리검색시 기본값이 null 인 상태의 필드는
where test is null
조회 가능하나
where test = ""
이렇겐 조회가 되지 않습니다.
null은 의도적인 삽입시 해당 필드의 빈값인지
아니면 최초 삽입이후 재 삽입되어야할 필드인지 등의 DB구조적인 역할로
주로 사용됩니다.
null 이 아니라면
where test is not null
where test is null
등을 지정할수가 없겠지요
mysql 엔진 자체도 아마 빈값을 검색할때 null 로 판단하는것이
시스템적인 면에서 더 이득일겁니다.