2012-08-09 13 views
7

प्रिय W3schools के माध्यम से देख रहा था और यह page पाया और वास्तव में कुछ दिलचस्प सीखा। मुझे नहीं पता था कि आप मानों को कॉलम निर्दिष्ट किए बिना एक सम्मिलित कमांड कॉल कर सकते हैं। उदाहरण के लिए;SQL INSERT। क्या होता है?

INSERT INTO table_name 
VALUES (value1, value2, value3,...) 

मेरी धुंधला स्मृति से खींच, मैं एसक्यूएल प्रोफेसर उल्लेख आप रूप में यदि वे किसी विशेष क्रम में नहीं हैं क्षेत्रों के इलाज के लिए है कि याद करने लगते हैं (हालांकि वहाँ RDB पक्ष पर है, लेकिन यह गारंटी नहीं है) ।

मेरा सवाल यह है कि सर्वर कैसे जानता है कि कौन से मूल्यों को फ़ील्ड को सौंपा गया है? * मैं इसे स्वयं जांचूंगा, लेकिन ऐसा करने के लिए उत्पादन सर्वर का उपयोग नहीं कर रहा हूं, जो इस समय मेरे पास पहुंच है ।

यदि यह तकनीक विशिष्ट है, तो मैं PostgresSQL पर काम कर रहा हूं। यह विशेष वाक्यविन्यास भी उपयोगी कैसे है?

उत्तर

6

आपका प्रोफेसर सही था - आपको मूल्यों का नाम देने से पहले कॉलम को स्पष्ट रूप से नाम देना चाहिए।

इस मामले में हालांकि मान तालिका परिभाषा में दिखाई देने के क्रम में डाले जाएंगे।

इसके साथ समस्या यह है कि यदि वह आदेश बदलता है, या कॉलम हटा दिए जाते हैं या जोड़े जाते हैं (भले ही वे शून्य हो जाएं), तो सम्मिलन टूट जाएगा।

इसकी उपयोगिता के मामले में, उत्पादन कोड में उतना ही नहीं। यदि आप त्वरित प्रविष्टि कोडिंग कर रहे हैं तो यह आपको सभी कॉलम नामों को टाइप करने में मदद कर सकता है।

3

वे तालिका परिभाषा में क्रम में फ़ील्ड में डाले जाते हैं।

तो यदि आपकी तालिका में फ़ील्ड (ए, बी, सी), ए = वैल्यू 1, बी = वैल्यू 2, सी = वैल्यू 3 है।

आपका प्रोफेसर सही था, यह आलसी है, और तोड़ने के लिए उत्तरदायी है। लेकिन एक त्वरित और गंदे आलसी डालने के लिए उपयोगी है।

0

मूल्यों को उसी क्रम में जोड़ा जाता है जैसे कॉलम तालिका में दिखाई देते हैं। यह परिस्थितियों में उपयोगी है जहां आप जिन स्तंभों के साथ काम कर रहे हैं, उनके नामों को नहीं जानते हैं, लेकिन पता है कि डेटा को किस डेटा में जाना है। आम तौर पर ऐसा करने का अच्छा विचार नहीं है, हालांकि कॉलम के क्रम में निश्चित रूप से टूट जाता है परिवर्तन या बीच में नए कॉलम डाले गए हैं।

0

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

0

जब तालिका बनाई जाती है, तो प्रत्येक कॉलम में सिस्टम तालिका में ऑर्डर नंबर होगा। इसलिए प्रत्येक मूल्य .. आदेश के अनुसार डाला जा होगा

Firt मूल्य पहले कॉलम के लिए जाना जाएगा ... एक तो

पर एसक्यूएल सर्वर में, सिस्टम तालिका syscolumn इस आदेश बनाए रखता है। Postgresql के समान कुछ होना चाहिए ..

2

मैं यहां "आरटीएफएम" लगाने का विरोध नहीं कर सकता।
PostgreSQL मैनुअल विवरण in the chapter on INSERT होता है क्या:

लक्ष्य स्तंभ नाम किसी भी क्रम में सूचीबद्ध किया जा सकता। यदि कॉलम नामों की कोई सूची बिल्कुल नहीं दी गई है, डिफ़ॉल्ट तालिका के सभी कॉलम उनके घोषित आदेश में हैं; या पहले एन कॉलम नाम, यदि केवल एन VALUES क्लॉज या क्वेरी द्वारा प्रदान किए गए कॉलम हैं। VALUES क्लॉज या क्वेरी द्वारा प्रदत्त मान स्पष्ट या निहित कॉलम सूची बाएं से दाएं से जुड़े हैं।

बोल्ड जोर मेरा है।

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