2014-09-22 4 views
12

다음 SQL 테이블 정의는 내 회사의 이전 개발자가 개발 한 MYSQL 데이터베이스의 create table 문 중 하나를 보여줍니다.NULL 대 DEFAULT NULL 대 NULL DEFAULT MYSQL 열 생성시 NULL?

DROP TABLE IF EXISTS `classifieds`.`category_vehicles`; 
CREATE TABLE `classifieds`.`category_vehicles`(
`adv_id_ref` BIGINT UNSIGNED NOT NULL, 
`category_id_ref` TINYINT UNSIGNED NOT NULL, 
`forsale_status` TINYINT (1) NOT NULL, 
`vehicle_type_id_ref` TINYINT UNSIGNED NOT NULL, 
`price` DOUBLE NULL DEFAULT NULL, 
PRIMARY KEY (`adv_id_ref`) 
) ENGINE = INNODB CHARSET = latin1 COLLATE = latin1_swedish_ci ; 

거기에서이

은 일반적으로 내가

price DOUBLE NULL을 사용하고, 문 price DOUBLE NULL의 DEFAULT NULL의보고;

해당 열에서 NULL 값을 허용하도록 설정하려면이 옵션을 선택하십시오.

그래서이 세 문장의 차이점은 무엇입니까?

1) price DOUBLE NULL;

2) price DOUBLE DEFAULT NULL;

3) price DOUBLE NULL DEFAULT NULL;

대단히 감사합니다.

답변

9

차이는 없습니다. NULL DEFAULT NULL은 암시적인 기본값입니다. NULL도 NULL이나 NOT이 지정된 경우 NULL이

From the "Data Type Default Values" chapter:

  • 을 지정되었던 것처럼 열 정의가 명시 적으로 포함되지 않습니다 경우
    • From the CREATE TABLE documentation:

      은, 열 처리됩니다 DEFAULT 값의 경우 MySQL은 기본값을 다음과 같이 결정합니다. 열이 NULL 값을 가질 수 있으면 열은 wi로 정의됩니다 명시적인 DEFAULT NULL 절.
7
price DOUBLE NULL; 

price은 이중이며 null이 될 수 있으며, 기본 값은 null입니다.

price DOUBLE DEFAULT NULL; 

price은 2이며 null 일 수 있으며 기본값은 null입니다.

price DOUBLE NULL DEFAULT NULL; 

price은 이중이며 null이 될 수 있으며, 기본 값은 null입니다.

+0

두 번째 표현식에 "* 가격이 두 배이고 null 일 수 없습니다 *"입니다. 'NULL'을 생략하면'NULL'이 가정됩니다. (매뉴얼의 인용문 참조) –

+0

@EJP는 모든 문장이 동일하다고 생각합니다. 나는 아직도 이것을 추출 할 수 없다. :) – Sylar

+0

@Sylar 그들은 * 동일합니다. – EJP

관련 문제