Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ALTER TABLE का उपयोग करके मौजूदा कॉलम पर NOT NULL विशेषता सेट करें

MySQL में मौजूदा कॉलम को NOT NULL बनाना

मौजूदा कॉलम पर NOT NULL प्रतिबंध जोड़ने के लिए, ALTER TABLE ... MODIFY स्टेटमेंट का उपयोग करें जिसमें कॉलम परिभाषा में NOT NULL शामिल हो।

टेबल बनाना

mysql> CREATE TABLE DemoTable1949 (
    -> UserId INT,
    -> UserName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.00 sec)

UserName पर NOT NULL प्रतिबंध जोड़ना

mysql> ALTER TABLE DemoTable1949 
    -> MODIFY UserName VARCHAR(20) NOT NULL;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

टेबल संरचना सत्यापित करना

mysql> DESC DemoTable1949;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| UserId   | int(11)     | YES  |     | NULL    |       |
| UserName | varchar(20) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Null कॉलम अब UserName के लिए NO दिखाता है।

प्रतिबंध का परीक्षण

-- NULL डालने का प्रयास - विफल होगा
mysql> INSERT INTO DemoTable1949 VALUES (101, NULL);
ERROR 1048 (23000): Column 'UserName' cannot be null

-- वैध मान डालना - सफल
mysql> INSERT INTO DemoTable1949 VALUES (101, 'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1949 VALUES (102, 'Bob');
Query OK, 1 row affected (0.00 sec)

डेटा सत्यापित करना

mysql> SELECT * FROM DemoTable1949;
+--------+----------+
| UserId | UserName |
+--------+----------+
|    101 | Chris    |
|    102 | Bob      |
+--------+----------+
2 rows in set (0.00 sec)

महत्वपूर्ण विचार

मौजूदा NULL मान

यदि टेबल में पहले से NULL मान हैं, तो ALTER TABLE विफल होगा:

ERROR 1138 (HY000): Invalid use of NULL value

समाधान: पहले NULL मानों को अपडेट करें:

UPDATE DemoTable1949 SET UserName = 'Unknown' WHERE UserName IS NULL;
ALTER TABLE DemoTable1949 MODIFY UserName VARCHAR(20) NOT NULL;

पूर्ण सिंटैक्स विकल्प

-- कॉलम परिभाषा दोहरानी होगी
ALTER TABLE table_name MODIFY column_name data_type NOT NULL;

-- एक साथ डिफ़ॉल्ट मान जोड़ना
ALTER TABLE table_name MODIFY column_name data_type NOT NULL DEFAULT 'default_value';

-- एक साथ कॉलम नाम बदलना
ALTER TABLE table_name CHANGE old_name new_name data_type NOT NULL;

एकाधिक कॉलम्स

ALTER TABLE DemoTable1949 
    MODIFY UserId INT NOT NULL,
    MODIFY UserName VARCHAR(20) NOT NULL;

संबंधित ऑपरेशन

NOT NULL हटाना

ALTER TABLE DemoTable1949 MODIFY UserName VARCHAR(20) NULL;

CHECK प्रतिबंध जोड़ना (MySQL 8.0.16+)

ALTER TABLE DemoTable1949 
ADD CONSTRAINT chk_username_length CHECK (CHAR_LENGTH(UserName) >= 3);

सर्वोत्तम अभ्यास

  1. उत्पादन पर लागू करने से पहले स्टेजिंग पर परीक्षण करें
  2. पहले मौजूदा NULL मानों की जांच करें: SELECT COUNT(*) FROM table WHERE col IS NULL
  3. डिफ़ॉल्ट मान प्रदान करें यदि उपयुक्त हो
  4. एप्लिकेशन कोड को अपडेट करें ताकि NULL पास न करे
  5. विदेशी कुंजी संबंधों पर विचार करें
  1. - रिकॉर्ड वाले मौजूदा टेबल में नया NOT NULL कॉलम जोड़ना

    पहले से बनी टेबल में एक नया NOT NULL कॉलम जोड़ने के लिए ALTER कमांड का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20) -> ); Query OK, 0 rows affected (0.60 sec) मौजूदा टेबल मे

  1. - MySQL में NOT NULL बाधा से कॉलम को खाली न रहने दें

    कॉलम परिभाषा में NOT NULL बाधा जोड़कर उस कॉलम में NULL मान डालने से रोकें। टेबल बनाएं mysql> CREATE TABLE DemoTable1895 ( Id INT NOT NULL, FirstName VARCHAR(20), LastName VARCHAR(20) NOT NULL ); डेटा डालें (त्रुटि प्रदर्शन) mysql> INSERT INTO DemoTable1895 VALUES(100, John, Smith

  1. - MySQL में NOT NULL मान के लिए 1 सेट करें

    MySQL में किसी कॉलम के NOT NULL मान होने पर 1 और NULL होने पर 0 लौटाने के लिए IF() फंक्शन के साथ IS NOT NULL ऑपरेटर का उपयोग करें। यह डेटा वैलिडेशन, रिपोर्टिंग, और कंडीशनल एग्रीगेशन के लिए उपयोगी है। बुनियादी सिंटैक्स SELECT IF( IS NOT NULL, 1, 0) AS anyAliasName; आउटपुट: 1 (क्योंकि खाली स्ट्रिंग N