2012-04-26 8 views
10

मेरे पास mysql क्वेरी के बारे में एक छोटा सवाल है।एक MySQL क्वेरी में टेबल और कॉलम के आसपास उद्धरण वास्तव में आवश्यक हैं?

सही क्या है?

SELECT * FROM Persons WHERE Year='1965' 

या

SELECT * FROM `Persons` WHERE `Year` = '1965' 

यह एक व्यक्तिगत पसंद है या यह कुछ क्या वास्तव में गलत है?

+0

सभी उत्तरों और संपादन के लिए धन्यवाद। तो जल्द ही यदि मैं कर सकता हूं तो मैं एक जवाब स्वीकार करूंगा (लेकिन मुझे कौन सा जवाब स्वीकार करना चाहिए?) – JochemQuery

+0

मैं बैकटिक्स का उपयोग नहीं करता जब तक कि मैंने "टेबल" जैसी कोई तालिका नाम नहीं दी (जो अन्यथा त्रुटि उत्पन्न करेगी)। यह क्वेरी क्लीनर बनाता है। अपवाद तब होता है जब आप गतिशील रूप से जेनरेट की गई तालिका/कॉलम नामों का उपयोग कर रहे होते हैं। – HappyTimeGopher

उत्तर

6

क्या होगा यदि आप table नाम के एक तालिका, या where नाम के एक स्तंभ है। ये आरक्षित कीवर्ड हैं। यदि आपने बैकटिक्स के बिना अपने प्रश्नों में उन लोगों का उपयोग किया है, तो वे एक अवैध क्वेरी उत्पन्न करेंगे (बेशक, आरक्षित कीवर्ड का उपयोग करना बुरा अभ्यास है)।

SELECT something FROM table WHERE where = 1; 

बनाम

SELECT something FROM `table` WHERE `where` = 1; 
+1

सभी उत्तरों बहुत अच्छे हैं। लेकिन यह मेरे लिए सबसे अच्छा है! धन्यवाद। – JochemQuery

7

दोनों सही हैं, लेकिन दूसरा आप हमेशा स्वीकार किए जाएंगे, भले ही आप while और NOW() जैसे कीवर्ड या फ़ंक्शंस का उपयोग करते हैं जो आमतौर पर ऑपरेटरों के रूप में देखा जाएगा।

9

यदि आपके पहचानकर्ता (कॉलम, टेबल नाम, ऑपरेटरों, आदि) में MySQL आरक्षित शब्द होते हैं तो उद्धरण आवश्यक हैं।

आरक्षित शब्द की पूरी सूची के लिए यहाँ देखें: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

2

दोनों ही तरीकों से सही हैं, एकल उद्धरण चिह्न शुरू होता है और एक स्ट्रिंग के अंत का संकेत है।

इसलिए यदि आप उदाहरण के लिए Birth year जैसी जगह के साथ कॉलम उपनाम का उपयोग करते हैं तो आपको इस तरह के एकल उद्धरण चिह्न का उपयोग करना होगा;

... WHERE `Birth year` = `1965` 

हालांकि यह अनुशंसा नहीं की जाती है कि उपनामों में केवल एक शब्द का उपयोग करें।

और @Cody Caughlan ने भी कहा जब आप MySQL reserved words का उपयोग करते हैं।

संबंधित मुद्दे