2014-09-22 22 views
12

benim şirketin eski geliştirici tarafından geliştirilen benim MYSQL veritabanından tablo deyimi oluşturmak biri gösterilmektedir.NULL vs DEFAULT NULL vs NULL DEFAULT NULL MYSQL sütun oluşturmada? sql tablo tanımı takiben

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 ; 

İçeride

Normalde

price ÇİFT NULL kullanıyorum, deyimi price ÇİFT BOŞ DEFAULT NULL bakmak; Bu sütunun NULL değerlerini kabul etmesini sağlamak istiyorsanız

.

Peki bu 3 ifadenin arasındaki farklar nelerdir?

1) price DOUBLE NULL;

2) price DOUBLE DEFAULT NULL;

3) price DOUBLE NULL DEFAULT NULL;

Çok teşekkür ederim.

cevap

9

Fark yoktur. NULL DEFAULT NULL örtük varsayılan değerdir. BOŞ ne NULL ne de DEĞİL belirtilirse BOŞ

From the "Data Type Default Values" chapter:

  • belirtilmiş sanki bir sütun tanımında hiçbir açık içeriyorsa
    • From the CREATE TABLE documentation:

      , kolon tedavi edilir DEFAULT değeri, MySQL varsayılan değeri aşağıdaki gibi belirler: Sütun bir değer olarak NULL alırsa, sütun wi olarak tanımlanır. açık bir VARSAYILAN NULL yan tümcesi.
7
price DOUBLE NULL; 

price çift ve boş olabilir ve varsayılan değeri null.

price DOUBLE DEFAULT NULL; 

price çift ve boş olabilir ve varsayılan değeri null.

price DOUBLE NULL DEFAULT NULL; 

price çift ve boş olabilir ve varsayılan değeri null.

+0

"* bir fiyat çift ve null olamaz *" ikinci ifade yanlıştır. NULL' atlanırsa 'Eğer' NULL' (manuel benim alıntı bakınız) varsayılır her ifadeler eşit gibi bana –

+0

@EJP görünüyor. Hala bunu çıkaramıyorum. :) – Sylar

+0

@Sylar Onlar * eşittir * eşittir. – EJP

İlgili konular