2014-09-22 8 views
12

निम्नलिखित एसक्यूएल टेबल परिभाषा को मेरे MYSQL डेटाबेस से तालिका विवरण बनाने में से एक को चित्रित किया गया है जो मेरी कंपनी के पूर्व डेवलपर द्वारा विकसित किया गया है।MYSQL कॉलम निर्माण में नल बनाम डेफुल न्यूल बनाम नल डिफॉल्ट नल?

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 डबल शून्य डिफ़ॉल्ट शून्य पर देखने

आम तौर पर मैं

price डबल शून्य उपयोग कर रहा हूँ;

यदि मैं उस कॉलम को नल मान स्वीकार करने के लिए सक्षम करना चाहता हूं।

तो इन 3 कथनों के बीच अंतर क्या हैं?

1) price डबल न्यूल;

2) price डबल डिफॉल्ट नल;

3) price डबल पूर्ण डेफॉल्ट नल;

बहुत बहुत धन्यवाद।

उत्तर

9

कोई फर्क नहीं पड़ता। NULL DEFAULT NULL निहित डिफ़ॉल्ट है।

From the CREATE TABLE documentation:

  • न शून्य है और न ही नहीं NULL निर्दिष्ट है, तो स्तंभ एक स्तंभ परिभाषा कोई स्पष्ट शामिल है के रूप में यद्यपि शून्य

From the "Data Type Default Values" chapter:

  • निर्दिष्ट किया गया था व्यवहार किया जाता है डिफॉल्ट मान, MySQL डिफ़ॉल्ट मान को निम्नानुसार निर्धारित करता है: यदि कॉलम एक मान के रूप में NULL ले सकता है, तो स्तंभ परिभाषित किया गया है wi एक स्पष्ट डेफॉल्ट पूर्ण खंड।
7
price DOUBLE NULL; 

price एक डबल और अशक्त हो सकता है और उसके डिफ़ॉल्ट मान रिक्त है।

price DOUBLE DEFAULT NULL; 

price एक डबल और अशक्त हो सकता है और उसके डिफ़ॉल्ट मान रिक्त है।

price DOUBLE NULL DEFAULT NULL; 

price एक डबल और अशक्त हो सकता है और उसके डिफ़ॉल्ट मान रिक्त है।

+0

"* कीमत एक डबल है और शून्य नहीं हो सकती * * दूसरी अभिव्यक्ति गलत है। यदि 'NULL' छोड़ा गया है, तो 'NULL' माना जाता है (मैन्युअल से मेरा उद्धरण देखें) –

+0

@EJP मुझे लगता है कि प्रत्येक कथन बराबर है। मैं अभी भी इसे निकालने नहीं कर सकता। :) – Sylar

+0

@ सिलार वे * * बराबर हैं। – EJP

संबंधित मुद्दे