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

MySQL में कॉलम कैरेक्टर सेट (Character Set) कैसे बदलें: ALTER TABLE MODIFY

MySQL में किसी कॉलम का कैरेक्टर सेट (Character Set) और कोलेशन बदलना

सिंटैक्स:

ALTER TABLE yourTableName 
MODIFY yourColumnName column_type CHARACTER SET charset_name;

व्यावहारिक उदाहरण

1. टेबल बनाएं (डिफ़ॉल्ट utf8mb4):

mysql> CREATE TABLE setCharsetDemo (
    -> FirstName VARCHAR(60)
    -> ); 
Query OK, 0 rows affected (2.09 sec)

2. वर्तमान कैरेक्टर सेट जांचें:

mysql> SHOW CREATE TABLE setCharsetDemo;
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table          | Create Table                                                                                                                                                           | 
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| setCharsetDemo | CREATE TABLE `setcharsetdemo` (`FirstName` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | 
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec)

डिफ़ॉल्ट: utf8mb4 कैरेक्टर सेट, utf8mb4_unicode_ci कोलेशन।

3. कैरेक्टर सेट को utf8 में बदलें:

mysql> ALTER TABLE setCharsetDemo 
    -> MODIFY FirstName VARCHAR(60) CHARACTER SET utf8; 
Query OK, 0 rows affected, 1 warning (2.81 sec)

4. परिवर्तन वेरिफाई करें:

mysql> SHOW CREATE TABLE setCharsetDemo;
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Table          | Create Table                                                                                                                                                                         | 
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| setCharsetDemo | CREATE TABLE `setcharsetdemo` (`FirstName` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | 
+----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec)

अब कॉलम CHARACTER SET utf8 और COLLATE utf8_general_ci दिखा रहा है।

महत्वपूर्ण बिंदु:

  • MODIFY कॉलम परिभाषा दोहराता है (टाइप, लंबाई, नया चारसेट)
  • टेबल का डिफ़ॉल्ट चारसेट (DEFAULT CHARSET=utf8mb4) अपरिवर्तित रहता है
  • केवल निर्दिष्ट कॉलम प्रभावित होता है
  • चेतावनी (warning) आ सकती है अगर डेटा ट्रंकेशन का जोखिम हो

सामान्य कैरेक्टर सेट:

नामविवरणअधिकतम बाइट्स/कैरेक्टर
utf8mb4पूर्ण यूनिकोड (इमोजी सहित)4
utf8बेसिक मल्टीलिंगुअल प्लेन (BMP)3
latin1पश्चिमी यूरोपीय भाषाएं1
asciiकेवल ASCII1

कोलेशन (Collation) भी बदलें:

ALTER TABLE table_name 
MODIFY col_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

सावधानी:

  • बड़े टेबल पर ALTER TABLE लॉक लगा सकता है — pt-online-schema-change या MySQL 8.0+ इंस्टेंट DDL विचार करें
  • मौजूदा डेटा नए चारसेट में कन्वर्ट होगा — बैकअप लें
  • इंडेक्स की लंबाई सीमा (767 बाइट्स इननोडेब में) प्रभावित हो सकती है
  1. - MySQL में JOIN और UPDATE से दूसरी टेबल के कॉलम मान के आधार पर कॉलम अपडेट करें

    MySQL में UPDATE ... JOIN सिंटैक्स का उपयोग करके एक टेबल के कॉलम को दूसरी टेबल के संबंधित कॉलम मान के आधार पर अपडेट कर सकते हैं। यह डेटा सिंक्रनाइज़ेशन, माइग्रेशन, और संदर्भ डेटा लागू करने के लिए मानक पैटर्न है। सिंटैक्स UPDATE target_table t1 JOIN source_table t2 ON t1.join_col = t2.join_col SET t

  1. - MySQL में कॉलम मानों के लिए ENUM कैसे सेट करें?

    ENUM कॉलम के साथ टेबल बनाना टेबल बनाते समय ENUM प्रकार निर्दिष्ट करें: ); रिकॉर्ड डालना INSERT INTO DemoTable2019 VALUES (45, Second); सभी रिकॉर्ड देखना SELECT * FROM DemoTable2019; +--------------+---------------+ | StudentMarks | StudentStatus | +--------------+---------------+ | 96

  1. - MySQL क्वेरी: अधिकतम संचयी मान प्राप्त करें

    समाधान सबक्वेरी में गुणनफल की गणना करें, फिर GROUP BY और ORDER BY से अधिकतम खोजें। उदाहरण टेबल बनाएं: INSERT INTO demo23 (value1, value2) VALUES (5,600), (20,800), (7,400), (6,500), (10,300), (11,500); क्वेरी LIMIT 1; परिणाम +-------------+-----------------------+ | total_value | number_of_occu