हाँ, MySQL में INT (और अन्य संख्यात्मक टाइप) **NULL हो सकते हैं** जब तक कॉलम को NOT NULL घोषित न किया गया हो। डिफॉल्ट रूप से संख्यात्मक कॉलम NULLable होते हैं।
सिंटैक्स
CREATE TABLE tableName (
intColumn INT -- NOT NULL नहीं लिखा, इसलिए NULL अनुमत
);
INSERT INTO tableName(intColumn) VALUES(NULL);
उदाहरण के साथ समझें
टेबल बनाएं (Price INT, NOT NULL नहीं):
CREATE TABLE nullableIntDemo (
Id INT NOT NULL AUTO_INCREMENT,
Price INT, -- NULL अनुमत
PRIMARY KEY(Id)
);
NULL और मान दोनों डालें:
INSERT INTO nullableIntDemo(Price) VALUES(NULL);
INSERT INTO nullableIntDemo(Price) VALUES(100);
INSERT INTO nullableIntDemo(Price) VALUES(200);
INSERT INTO nullableIntDemo(Price) VALUES(NULL);
INSERT INTO nullableIntDemo(Price) VALUES(NULL);
सभी रिकॉर्ड देखें:
SELECT * FROM nullableIntDemo;
आउटपुट:
+----+-------+
| Id | Price |
+----+-------+
| 1 | NULL |
| 2 | 100 |
| 3 | 200 |
| 4 | NULL |
| 5 | NULL |
+----+-------+
महत्वपूर्ण अंतर
| परिभाषा | NULL अनुमत? | डिफॉल्ट |
|---|---|---|
Price INT | हाँ | NULL |
Price INT NOT NULL | नहीं | कोई नहीं (मान आवश्यक) |
Price INT DEFAULT 0 | हाँ | 0 |
Price INT NOT NULL DEFAULT 0 | नहीं | 0 |
NULL बनाम 0
- NULL = मान अज्ञात/अनुपस्थित (कोई मान नहीं)
- 0 = मान शून्य है (ज्ञात मान)
Price = 0औरPrice IS NULLअलग हैंSUM(Price)NULL को अनदेखा करता है, 0 को जोड़ता हैAVG(Price)NULL को गिनती में नहीं लेता
NULL को 0 मानकर गणना करें
SELECT SUM(COALESCE(Price, 0)) FROM nullableIntDemo;
NOT NULL कंस्ट्रेंट जोड़ें (यदि आवश्यक)
-- मौजूदा NULL को पहले 0 में बदलें
UPDATE nullableIntDemo SET Price = 0 WHERE Price IS NULL;
-- फिर NOT NULL जोड़ें
ALTER TABLE nullableIntDemo MODIFY COLUMN Price INT NOT NULL;
नोट
- "नॉन-जीरो NULL" शब्द भ्रामक है - NULL का कोई संख्यात्मक मान नहीं होता
- सभी संख्यात्मक टाइप (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL) NULLable हो सकते हैं
- प्राइमरी की कॉलम स्वचालित रूप से NOT NULL होते हैं