MySQL में INT और ENUM के बीच चयन आपके उपयोग के मामले पर निर्भर करता है।
ENUM कब उपयोग करें
जब आपको पता हो कि केवल विशिष्ट मान ही स्टोर करने हैं, तो ENUM बेहतर है। यह अधिक प्रतिबंधात्मक (restrictive) है और डेटा इंटीग्रिटी सुनिश्चित करता है।
ENUM उदाहरण
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Number ENUM('10','20','30')
);
mysql> INSERT INTO DemoTable(Number) VALUES('10'); -- OK
mysql> INSERT INTO DemoTable(Number) VALUES('20'); -- OK
mysql> INSERT INTO DemoTable(Number) VALUES('30'); -- OK
mysql> INSERT INTO DemoTable(Number) VALUES('50'); -- ERROR 1265: Data truncated
+----+--------+ | Id | Number | +----+--------+ | 1 | 10 | | 2 | 20 | | 3 | 30 | +----+--------+
TINYINT UNSIGNED कब उपयोग करें
जब मानों की सीमा पता न हो या भविष्य में नए मान जुड़ सकते हों, तो TINYINT UNSIGNED (0-255) कम प्रतिबंधात्मक विकल्प है।
TINYINT UNSIGNED उदाहरण
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Number TINYINT UNSIGNED
);
mysql> INSERT INTO DemoTable(Number) VALUES(100); -- OK mysql> INSERT INTO DemoTable(Number) VALUES(50); -- OK mysql> INSERT INTO DemoTable(Number) VALUES(60); -- OK mysql> INSERT INTO DemoTable(Number) VALUES(70); -- OK
+----+--------+ | Id | Number | +----+--------+ | 1 | 100 | | 2 | 50 | | 3 | 60 | | 4 | 70 | +----+--------+
तुलना तालिका
| विशेषता | ENUM | TINYINT UNSIGNED |
|---|---|---|
| प्रतिबंधात्मक | हाँ | नहीं |
| स्टोरेज | 1-2 बाइट्स | 1 बाइट |
| मान जोड़ना | ALTER TABLE जरूरी | कोई बदलाव नहीं |
| सॉर्टिंग | परिभाषा क्रम के अनुसार | संख्यात्मक क्रम |
सिफारिश: निश्चित मानों के लिए ENUM, लचीली रेंज के लिए TINYINT UNSIGNED चुनें।