MySQL प्रश्नों में बैकटिक (`) का उपयोग करने के लाभ?


25

MySQL में हम backtick ( `) सिंबल के साथ या उसके बिना प्रश्न बना सकते हैं । उदाहरण:

  1. SELECT * FROM TEST;
  2. SELECT * FROM `TEST`;

दोनों mysql- कंसोल में ठीक काम करते हैं।

क्या उनके बीच कोई तकनीकी अंतर है?

क्या `सामान्य प्रश्नों से अधिक ( ) उपयोग करने का कोई लाभ है ?

जवाबों:


32

उन्हें उद्धृत पहचानकर्ता कहा जाता है और वे अपने बीच पाठ को शाब्दिक स्ट्रिंग के रूप में संभालने के लिए पार्सर को बताते हैं। वे तब आपके लिए उपयोगी होते हैं जब आपके पास एक कॉलम या टेबल होता है जिसमें कोई कीवर्ड या स्पेस होता है। उदाहरण के लिए निम्नलिखित काम नहीं करेगा:

CREATE TABLE my table (id INT);

लेकिन निम्नलिखित होगा:

CREATE TABLE `my table` (id INT);

इसके अलावा, निम्नलिखित को एक त्रुटि मिलेगी, क्योंकि COUNTएक आरक्षित कीवर्ड है:

SELECT count FROM some_table

लेकिन निम्नलिखित सही ढंग से पार्स किया जाएगा:

SELECT `count` FROM some_table

मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।


24

यदि आप ऑब्जेक्ट आइडेंटिफ़ायर के आसपास कुछ उपयोग करना चाहते हैं, तो कम से कम मानक डबल कोट्स का उपयोग करें: "

यह MySQL, PostgreSQL, SQL Server, Oracle, आदि में काम करता है। MySQL के लिए आपको डिफ़ॉल्ट कॉन्फ़िगरेशन के आधार पर SQL मोड asi_quotes की आवश्यकता हो सकती है:

SET sql_mode = 'ANSI_QUOTES';

Backticks `केवल MySQL में उपयोग किए जाते हैं, आप SQL का एक प्रकार सीखते हैं जो DBMS के किसी अन्य ब्रांड में काम नहीं करेगा।


6

इसका मतलब है कि आपके पास टेबल नामों में स्थान हो सकते हैं। विशेष रूप से आकर्षक नहीं, बिल्कुल। SQL सर्वर के साथ []।


3

यदि आपके पास आरक्षित नाम वाला कॉलम है, तो यह मददगार हो सकता है।

उदाहरण: आप इस तरह से एक बयान को क्वेरी कर सकते हैं:

select * from tablename group by `group`;

1

मेरे दृष्टिकोण से, @ Mr.Brownstone का उत्तर केवल आंशिक रूप से सही है।

Backtick `का उपयोग MySQL में शाब्दिक अर्थों को परिसीमित करने के लिए किया जाता है जो पहचानकर्ताओं (स्ट्रिंग नहीं) का प्रतिनिधित्व करते हैं।

यह आपको पहचानकर्ता के रूप में आम तौर पर स्वीकृत वर्णों जैसे रिक्त स्थान, आरक्षित शब्दों आदि का उपयोग करने की अनुमति देता है। उदाहरण के लिए:

SELECT * FROM `Strange table name`;

यह भी महत्वपूर्ण है कि यह पार्सर को यह जानने की अनुमति देता है कि क्या आप कुछ गलत कर रहे हैं जैसे कि उस कॉलम का चयन करना जो मौजूद नहीं है। उदाहरण के लिए:

SELECT notexistingcolumn FROM atable;

अगर atableमौजूद है लेकिनnotexistingcolumn स्तंभ मौजूद नहीं है, तो इसका अर्थ शाब्दिक स्ट्रिंग "नोटेक्सिस्टिंगकैल्यूम" के रूप में होगा जो इसे एक मूल्य के रूप में चुनता है (और शायद एक चेतावनी का उत्सर्जन करता है)।

इसके बजाय, यदि आप उपयोग करते हैं:

SELECT `notexistingcolumn` FROM `atable`;

इसे वह पहचान लेगा notexistingcolumn यह उस स्तंभ का नाम है जो मौजूद नहीं है और एक त्रुटि फेंक सकता है।

मुझे लगता है कि अलियास सहित बैकटिक्स के साथ पहचानकर्ताओं को घेरने के लिए हमेशा बेहतर होता है और पहचानकर्ताओं के लिए आरक्षित शब्दों और अजीब पात्रों का उपयोग करने से बचने की कोशिश करें।

आप https://dev.mysql.com/doc/refman/8.0/en/identifiers.html पर MySQL के बैकटिक के बारे में अधिक पढ़ सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.