MySQL में टेबल या कॉलम नाम में अंडरस्कोर (_) या अन्य विशेष वर्ण होने पर, नाम को बैकटिक्स (\`) में संलग्न करना आवश्यक है, सिंगल कोट्स में नहीं।
समस्या: सिंगल कोट्स का उपयोग (गलत)
mysql> CREATE TABLE 'Demo_Table725' (
ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(100),
ClientAge INT,
ClientCountryName VARCHAR(100),
isMarried BOOLEAN
);
ERROR 1064 (42000): You have an error in your SQL syntax...
near ''Demo_Table725' (ClientId int...' at line 1
समाधान: बैकटिक्स का उपयोग (सही)
mysql> CREATE TABLE `Demo_Table725` (
ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName VARCHAR(100),
ClientAge INT,
ClientCountryName VARCHAR(100),
isMarried BOOLEAN
);
Query OK, 0 rows affected (0.58 sec)
डेटा डालें और क्वेरी करें
mysql> INSERT INTO `Demo_Table725` (ClientName, ClientAge, ClientCountryName, isMarried)
VALUES ('John', 34, 'US', true), ('Chris', 28, 'UK', false);
Query OK, 2 rows affected (0.30 sec)
mysql> SELECT * FROM `Demo_Table725`;
+----------+------------+-----------+-------------------+-----------+
| ClientId | ClientName | ClientAge | ClientCountryName | isMarried |
+----------+------------+-----------+-------------------+-----------+
| 1 | John | 34 | US | 1 |
| 2 | Chris | 28 | UK | 0 |
+----------+------------+-----------+-------------------+-----------+
2 rows in set (0.00 sec)
बैकटिक्स कब आवश्यक हैं
| स्थिति | उदाहरण | आवश्यक? |
|---|---|---|
| अंडरस्कोर वाला नाम | `my_table` | ✅ हाँ |
| रिज़र्व्ड कीवर्ड | `select`, `from`, `order` | ✅ हाँ |
| स्पेस वाला नाम | `my table` | ✅ हाँ |
| संख्या से शुरू | `123table` | ✅ हाँ |
| साधारण नाम | users, orders | ❌ वैकल्पिक |
सर्वोत्तम अभ्यास
- हमेशा बैकटिक्स उपयोग करें - यह भविष्य की समस्याओं से बचाता है
- MySQL डंप/स्क्रिप्ट्स स्वचालित रूप से बैकटिक्स जोड़ते हैं
- ANSI SQL मोड में डबल कोट्स (
") भी काम करते हैं:SET sql_mode='ANSI_QUOTES' - एप्लिकेशन कोड में क्वेरी बिल्डर/ORM स्वचालित रूप से हैंडल करते हैं
बैकटिक्स के बिना अंडरस्कोर समस्या
अंडरस्कोर स्वयं समस्या नहीं है; समस्या यह है कि बिना बैकटिक्स के, पार्सर नाम को अलग टोकन के रूप में नहीं पहचान पाता जब इसमें विशेष वर्ण हों।