जवाबों:
SQL में स्ट्रिंग की शुरुआत और अंत को इंगित करने के लिए सिंगल कोट्स का उपयोग किया जाता है। डबल कोट्स आमतौर पर SQL में उपयोग नहीं किए जाते हैं, लेकिन यह डेटाबेस से डेटाबेस में भिन्न हो सकते हैं।
एकल उद्धरण का उपयोग करने के लिए छड़ी।
यह वैसे भी प्राथमिक उपयोग है। आप स्तंभ उपनाम के लिए एकल उद्धरण का उपयोग कर सकते हैं - जहां आप चाहते हैं कि स्तंभ का नाम जिसे आप अपने एप्लिकेशन कोड में संदर्भित करते हैं, वह स्तंभ डेटाबेस में वास्तव में क्या कहा जाता है, के अलावा कुछ और हो। उदाहरण के लिए: के PRODUCT.id
रूप में अधिक पठनीय होगा product_id
, इसलिए आप निम्न में से किसी एक का उपयोग करते हैं:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
या तो Oracle, SQL Server, MySQL में काम करता है ... लेकिन मुझे पता है कि कुछ ने कहा है कि TOAD IDE एकल उद्धरण दृष्टिकोण का उपयोग करते समय कुछ दुःख देता है।
आपको एक उद्धरण का उपयोग करना होगा, जब स्तंभ उपनाम में एक स्थान वर्ण शामिल होता है, उदाहरण के लिए product id
, लेकिन यह स्तंभ उपनाम के लिए एक से अधिक शब्द होने के लिए अनुशंसित अभ्यास नहीं है।
SELECT * FROM USERS 'Users'
SQL सर्वर में काम नहीं करता है, लेकिन SELECT * FROM USERS "Users"
करता है।
SELECT PRODUCT.id 'product_id'
Oracle में काम नहीं करेगा एकल उद्धरण केवल वर्ण शाब्दिकों के लिए हैं। (मानक) SQL में पहचानकर्ताओं के लिए इनका उपयोग नहीं किया जा सकता है (हालाँकि कुछ DBMS SQL मानक की उपेक्षा करते हैं जब इसे पहचानने वालों को उद्धृत किया जाता है)
हमारे लिए एक सरल नियम याद है कि किस मामले में क्या उपयोग करना है:
MySQL और MariaDB में, ` (बैकटिक) प्रतीक के रूप में एक ही है " प्रतीक। आप उपयोग कर सकते हैं " जब आपके SQL_MODE
गया है ANSI_QUOTES
सक्षम होना चाहिए।
एकल उद्धरण एक स्ट्रिंग स्थिरांक या एक तारीख / समय निरंतर परिसीमन करते हैं।
तालिका उद्धरण या स्तंभ नामों के लिए दोहरे उद्धरणों को पहचानने वालों को परिसीमित करें। यह आमतौर पर केवल तभी आवश्यक होता है जब आपका पहचानकर्ता सरल पहचानकर्ताओं के लिए नियम फिट नहीं करता है।
यह सभी देखें:
आप ANSI मानक के अनुसार MySQL के दोहरे-उद्धरण का उपयोग कर सकते हैं:
SET GLOBAL SQL_MODE=ANSI_QUOTES
आप Microsoft SQL सर्वर ANSI मानक के अनुसार दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं:
SET QUOTED_IDENTIFIER ON
ANSI SQL में, डबल कोट्स ऑब्जेक्ट नाम (जैसे टेबल) उद्धृत करते हैं, जो उन्हें वर्णों को शामिल करने की अनुमति देता है अन्यथा अनुमति नहीं है, या आरक्षित शब्दों के समान हो (इससे बचें, वास्तव में)।
एकल उद्धरण तार के लिए हैं।
हालांकि, MySQL मानक से बेखबर है (जब तक कि इसका SQL_MODE नहीं बदला जाता है) और उन्हें स्ट्रिंग्स के लिए परस्पर उपयोग करने की अनुमति देता है।
इसके अलावा, Sybase और Microsoft भी पहचानकर्ता उद्धरण के लिए वर्ग कोष्ठक का उपयोग करते हैं।
तो यह थोड़ा विक्रेता विशिष्ट है।
अन्य डेटाबेस जैसे पोस्टग्रैज और आईबीएम वास्तव में एएनआई मानक का पालन करते हैं :)
अंतर उनके उपयोग में निहित है। सिंगल कोट्स का इस्तेमाल ज्यादातर WHERE, HAVING और कुछ बिल्ट-इन SQL फंक्शन्स जैसे CONCAT, STRPOS, POSITION आदि में किया जाता है।
जब आप किसी ऐसे उपनाम का उपयोग करना चाहते हैं जिसके बीच में जगह है तो आप उस उपनाम को संदर्भित करने के लिए दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं।
उदाहरण के लिए
(select account_id,count(*) "count of" from orders group by 1)sub
यहां विदेशी मुद्रा के रूप में account_id वाले आदेश तालिका से एक उपश्रेणी है जिसे मैं यह जानने के लिए एकत्रित कर रहा हूं कि प्रत्येक खाते में कितने आदेश हैं। यहाँ मैंने एक कॉलम किसी भी यादृच्छिक नाम को उद्देश्य के लिए "गिनती" के रूप में दिया है।
अब उन पंक्तियों को प्रदर्शित करने के लिए एक बाहरी क्वेरी लिखते हैं जहाँ "गिनती" 20 से अधिक है।
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
आप उसी मामले को कॉमन टेबल एक्सप्रेशन पर भी लागू कर सकते हैं।