INSERT बनाम INSERT INTO


90

मैं पिछले कुछ समय से MS SQL में T-SQL के साथ काम कर रहा था और जब भी मुझे किसी तालिका में डेटा सम्मिलित करना होता है तो मैं वाक्य विन्यास का उपयोग करता हूं:

INSERT INTO myTable <something here>

मैं समझता हूं कि यहां कीवर्ड INTOवैकल्पिक है और मुझे इसका उपयोग करने की आवश्यकता नहीं है, लेकिन किसी तरह यह मेरे मामले में आदत में बदल गया।

मेरा सवाल यह है कि:

  • क्या INSERTसिंटैक्स बनाम का उपयोग करने के कोई निहितार्थ हैं INSERT INTO?
  • कौन सा मानक के साथ पूरी तरह से अनुपालन करता है?
  • क्या वे दोनों SQL मानक के अन्य कार्यान्वयन में मान्य हैं?

जवाबों:


94

INSERT INTOमानक है। हालांकि INTOअधिकांश कार्यान्वयन में वैकल्पिक है, यह कुछ में आवश्यक है, इसलिए यह सुनिश्चित करना एक अच्छा विचार है कि यह सुनिश्चित करने के लिए कि आपका कोड पोर्टेबल है।

आप यहां SQL मानक के कई संस्करणों के लिंक पा सकते हैं । मुझे यहां एक पुराने मानक का HTML संस्करण मिला ।


2
"एसक्यूएल -99 कम्प्लीट, रियली" पुस्तक कहती है कि साइबेस (और इसलिए एमएस एसक्यूएल सर्वर) गैर-मानक तरीके से व्यवहार करता है, जिससे इन्टो वैकल्पिक हो सकता है। डेटाबेस के अन्य ब्रांडों को कीवर्ड की आवश्यकता होती है।
बिल कार्विन

2
सही। यदि आप हमेशा INTO का उपयोग करते हैं, तो आपको यह याद रखने की आवश्यकता नहीं है कि कौन से लोग इसे वैकल्पिक मानते हैं। सभी कार्यान्वयन इसे उपयोग करने की अनुमति देते हैं।
छिपकली

21

वे एक ही चीज हैं, INTOटी-एसक्यूएल में पूरी तरह से वैकल्पिक हैं (अन्य एसक्यूएल बोलियां भिन्न हो सकती हैं)।

अन्य उत्तरों के विपरीत, मुझे लगता है कि यह उपयोग करने के लिए पठनीयता को बाधित करता है INTO

मुझे लगता है कि यह एक वैचारिक बात है: मेरी धारणा में, मैं "ग्राहक" नामक एक तालिका में एक पंक्ति नहीं डाल रहा हूं, लेकिन मैं एक ग्राहक को सम्मिलित कर रहा हूं । (यह इस तथ्य से जुड़ा है कि मैं अपनी तालिकाओं का नाम एकवचन में रखने के लिए उपयोग करता हूं, बहुवचन में नहीं)।

यदि आप पहली अवधारणा का पालन करते हैं, INSERT INTO Customerतो आपके लिए सबसे अधिक संभावना "सही महसूस" होगी।

यदि आप दूसरी अवधारणा का पालन करते हैं, तो यह आपके लिए सबसे अधिक संभावना है INSERT Customer


5
मुझे लगता है कि आपके दृष्टिकोण के साथ जोखिम यह है कि आप टेबल के साथ वस्तुओं को भ्रमित करने के लिए नए प्रोग्रामर का नेतृत्व कर सकते हैं।
डेव ड्यूप्लांटिस

12
आपका उत्तर तथ्यात्मक रूप से सही है। यह शर्म की बात है जब लोग वोटों के दृष्टिकोण का विरोध करते हैं। मुझे लगता है कि एसओ के लाभों में से एक उन भिन्न विचारों को सुन रहा है।
DOK

यह वस्तुओं और तालिकाओं में सोचने की बात नहीं है। यह एक इकाई संबंधपरक मॉडल के रूप में एक वैचारिक तरीके से सोच रहा है।
आंद्रे फिग्यूएरेडो

@DaveDuPlantis आह, जैकी ट्रीहॉर्न फॉलसी। +1
रफिन

10

यह mySQL में वैकल्पिक हो सकता है, लेकिन कुछ अन्य DBMS में यह अनिवार्य है, उदाहरण के लिए Oracle। तो एसक्यूएल अधिक संभावित पोर्टेबल होगा इन्टो कीवर्ड के साथ, जो इसके लायक है।


4

इस मुद्दे के बारे में एक सबक यह है कि आपको हमेशा इसे लगातार रखना चाहिए! यदि आप INSERT INTO का उपयोग करते हैं, तो INSERT का भी उपयोग न करें। यदि आप ऐसा नहीं करते हैं, तो कुछ प्रोग्रामर एक ही सवाल फिर से पूछ सकते हैं।

यहाँ मेरा एक और संबंधित उदाहरण मामला है: मुझे MS SQL 2005 में एक बहुत लंबी संग्रहित प्रक्रिया को अपडेट करने का मौका मिला। समस्या यह है कि परिणाम तालिका में बहुत सारे डेटा डाले गए थे। मुझे यह पता लगाना था कि डेटा कहां से आया है। मैंने यह पता लगाने की कोशिश की कि नए रिकॉर्ड कहां जोड़े गए हैं। सपा की शुरुआत में, मैंने कई INSERT INTO देखे। फिर मैंने "INSERT INTO" खोजने की कोशिश की और उन्हें अपडेट किया, लेकिन मैं एक जगह से चूक गया जहाँ केवल "INSERT" का उपयोग किया गया था। कि वास्तव में कुछ कॉलम में खाली डेटा की 4k + पंक्तियों को सम्मिलित किया गया है! बेशक, मुझे सिर्फ INSERT की खोज करनी चाहिए। हालाँकि, मेरे साथ वही हुआ। मैं पिछले प्रोग्रामर को दोषी ठहराता हूं :)


ऐसा लगता है जैसे लेखक ने इसे INSERT INTO के साथ बनाया और कुछ ने INSERT को रखरखाव में लगा दिया। यह बहुत कुछ होता है, इससे बहुत अधिक "चाहिए", दुर्भाग्य से।
आंद्रे फिग्यूएरेडो

3

SQL Server 2005 में, आप इस तरह INSERT और INTO के बीच कुछ कर सकते हैं:

INSERT शीर्ष (5) INTT tTable1 का चयन करें * TTable2 से;

यद्यपि यह INTO के बिना काम करता है, मैं पठनीयता के लिए INTO का उपयोग करना पसंद करता हूं।


1

वे दोनों एक ही काम करते हैं। INTO वैकल्पिक है (SQL सर्वर के T-SQL में), लेकिन पठनीयता को प्रभावित करता है।


0

मैं इसका उपयोग करना पसंद करता हूं। यह वही वाक्य रचना चित्रण महसूस और SQL भाषा, की तरह के अन्य भागों में पठनीयता का कहना है group BY, order BY


0

मैंने ORACLE पर SQL को wtiting करना शुरू किया, इसलिए जब मुझे INTO के बिना कोड दिखाई देता है तो यह केवल 'टूटा हुआ' और भ्रमित करने वाला लगता है।

हां, यह सिर्फ मेरी राय है, और मैं यह नहीं कह रहा हूं कि आपको हमेशा INTO का उपयोग करना चाहिए । लेकिन यह आपको पता नहीं होना चाहिए कि कई अन्य लोग शायद एक ही बात सोचेंगे, खासकर अगर उन्होंने नए कार्यान्वयन के साथ स्क्रिप्टिंग शुरू नहीं की है।

SQL के साथ मुझे लगता है कि यह महसूस करना भी बहुत ज़रूरी है कि आप एक TABLE में ROW जोड़ रहे हैं, और वस्तुओं के साथ काम नहीं कर रहे हैं। मुझे लगता है कि वस्तुओं के रूप में SQL टेबल पंक्तियों / प्रविष्टियों के बारे में सोचना एक नए डेवलपर के लिए अनुचित होगा। फिर, बस मेरी राय है।


0

यदि उपलब्ध हो तो मानक फ़ंक्शन का उपयोग करें। ऐसा नहीं है कि आपको कभी भी अपने विशेष डेटाबेस के लिए पोर्टेबिलिटी की आवश्यकता है, लेकिन संभावना है कि आपको अपने एसक्यूएल ज्ञान के लिए पोर्टेबिलिटी की आवश्यकता है। एक विशेष बुरा टी-एसक्यूएल उदाहरण isnull का उपयोग, coalesce का उपयोग करें!

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