MySQL में ORDER एक आरक्षित शब्द (reserved word) है। इसे टेबल या कॉलम नाम के रूप में उपयोग करने के लिए बैकटिक्स (`) से घेरना आवश्यक है।
समस्या
mysql> CREATE TABLE order (StudentId INT); ERROR 1064: You have an error in your SQL syntax near 'order'
समाधान: बैकटिक्स का उपयोग
mysql> CREATE TABLE `order` (StudentId INT); Query OK
उदाहरण
1. टेबल बनाएं
mysql> CREATE TABLE `order` (StudentId INT);
2. डेटा डालें
mysql> INSERT INTO `order` VALUES(101), (210), (190), (180), (205);
3. क्वेरी में बैकटिक्स
mysql> SELECT * FROM `order`; mysql> SELECT * FROM `order` ORDER BY StudentId DESC LIMIT 1;
4. परिणाम
+-----------+ | StudentId | +-----------+ | 210 | +-----------+
आरक्षित शब्दों की सूची (आंशिक)
- ORDER, GROUP, SELECT, INSERT, UPDATE, DELETE
- INDEX, KEY, PRIMARY, UNIQUE, FOREIGN
- TABLE, DATABASE, SCHEMA, VIEW
- USER, PASSWORD, GRANT, REVOKE
- RANK, WINDOW, LATERAL (MySQL 8.0+)
सर्वोत्तम अभ्यास
- हमेशा पहचानकर्ताओं (टेबल, कॉलम, डेटाबेस) के लिए बैकटिक्स उपयोग करें
- आरक्षित शब्दों को नाम के रूप में टालें
- यदि उपयोग करना पड़े तो बैकटिक्स अनिवार्य
बैकटिक्स के बिना विकल्प
-- ANSI SQL मानक: डबल कोट्स (sql_mode=ANSI_QUOTES के साथ) CREATE TABLE "order" (StudentId INT); -- लेकिन MySQL डिफ़ॉल्ट में डबल कोट्स स्ट्रिंग के लिए हैं
सामान्य त्रुटि
-- गलत: कॉलम नाम में बैकटिक्स नहीं SELECT order FROM `order`; -- सही: कॉलम नाम भी बैकटिक्स में SELECT `order` FROM `order`;