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

MySQL में टेबल और कॉलम नाम के लिए बैकटिक (`) कब जरूरी हैं?

MySQL में जब टेबल या कॉलम नाम **रिजर्व्ड वर्ड्स** (आरक्षित शब्द) हों, या विशेष कैरेक्टर/स्पेस हों, तो **बैकटिक (` `)** का उपयोग अनिवार्य है।

सिंटैक्स

SELECT * FROM `table` WHERE `where` = condition;

समस्या: रिजर्व्ड वर्ड्स बिना बैकटिक के

mysql> CREATE TABLE table (
    -> where INT
    -> );
ERROR 1064 (42000): You have an error in your SQL syntax...
near 'table ( where int )' at line 1

table और where दोनों MySQL रिजर्व्ड वर्ड्स हैं।

समाधान: बैकटिक के साथ

mysql> CREATE TABLE `table` (
    -> `where` INT
    -> );
Query OK, 0 rows affected (0.55 sec)

रिकॉर्ड डालें और क्वेरी करें

INSERT INTO `table`(`where`) VALUES(1);
INSERT INTO `table`(`where`) VALUES(100);
INSERT INTO `table`(`where`) VALUES(1000);

SELECT * FROM `table` WHERE `where` = 100;

आउटपुट:

+-------+
| where |
+-------+
| 100   |
+-------+

बैकटिक कब आवश्यक हैं?

स्थितिउदाहरणआवश्यक?
रिजर्व्ड वर्डselect, where, order, group, table, indexहाँ
स्पेस वाला नाम`first name`हाँ
विशेष कैरेक्टर`col-name`, `col@name`हाँ
संख्या से शुरू`123col`हाँ
सामान्य नामusers, first_name, idनहीं (लेकिन अच्छा अभ्यास)

सामान्य रिजर्व्ड वर्ड्स (आंशिक सूची)

SELECT, INSERT, UPDATE, DELETE, WHERE, FROM, JOIN, 
INNER, LEFT, RIGHT, OUTER, ON, AS, ORDER, GROUP, BY,
HAVING, LIMIT, OFFSET, TABLE, INDEX, VIEW, TRIGGER,
PROCEDURE, FUNCTION, DATABASE, SCHEMA, USER, ROLE,
GRANT, REVOKE, CREATE, DROP, ALTER, TRUNCATE,
PRIMARY, KEY, FOREIGN, REFERENCES, UNIQUE, CHECK,
NULL, NOT, AND, OR, IN, LIKE, BETWEEN, IS, EXISTS,
CASE, WHEN, THEN, ELSE, END, IF, ELSEIF, LOOP,
CURSOR, DECLARE, SET, COMMIT, ROLLBACK, START,
TRANSACTION, LOCK, UNLOCK, HANDLER, PREPARE, EXECUTE

बेस्ट प्रैक्टिस

  • हमेशा बैकटिक उपयोग करें - भविष्य में नाम रिजर्व्ड वर्ड बन सकता है
  • ORM/क्वेरी बिल्डर स्वचालित रूप से बैकटिक जोड़ते हैं
  • sql_mode=ANSI_QUOTES में डबल कोट्स (") भी काम करते हैं
  • सिंगल कोट्स (') स्ट्रिंग लिटरल के लिए हैं, पहचानकर्ता के लिए नहीं

सही बनाम गलत

-- सही
SELECT `id`, `name`, `email` FROM `users` WHERE `status` = 'active';

-- काम करता है लेकिन जोखिम भरा (यदि name रिजर्व्ड बन जाए)
SELECT id, name, email FROM users WHERE status = 'active';

-- गलत: सिंगल कोट्स पहचानकर्ता के लिए नहीं
SELECT 'id', 'name' FROM 'users';  -- यह स्ट्रिंग लिटरल लौटाएगा!
  1. - MySQL में दो कॉलम बराबर होने पर पंक्ति डिलीट कैसे करें

    WHERE क्लॉज में कॉलम तुलना के साथ DELETE दो कॉलम्स के मान समान होने पर पंक्ति डिलीट करने के लिए DELETE के साथ WHERE column1 = column2 का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( Name VARCHAR(40), Score1 INT, Score2 INT ); रिकॉर्ड्स इन्सर्ट करें: mysql>

  1. - MySQL में दो टेबल पर एकल SELECT क्वेरी करना (कार्टेशियन उत्पाद)

    MySQL में दो टेबल पर कार्टेशियन उत्पाद (क्रॉस जॉइन) दो टेबल पर बिना जॉइन शर्त के SELECT करने से कार्टेशियन उत्पाद (क्रॉस जॉइन) उत्पन्न होता है: पहली टेबल की प्रत्येक पंक्ति दूसरी टेबल की प्रत्येक पंक्ति के साथ जुड़ती है। परिणाम पंक्तियाँ = पंक्तियाँ_टेबल1 × पंक्तियाँ_टेबल2। उदाहरण: दो असंबंधित टेबल

  1. - MySQL में INSERT INTO SELECT UNION ALL से एक क्वेरी में दो टेबल में चयन और सम्मिलन

    MySQL में INSERT INTO ... SELECT ... UNION ALL ... SELECT का उपयोग करके एक ही क्वेरी में एक टेबल से डेटा चुनकर दूसरी टेबल में एकाधिक पंक्तियां डाल सकते हैं। उदाहरण 1. लक्ष्य टेबल बनाएं ); 2. स्रोत टेबल बनाएं INSERT INTO DemoTable2 VALUES(Chris); 3. एक क्वेरी में चयन और सम्मिलन SELECT Name, 98