क्या मैं तर्कसंगत रूप से तालिका में स्तंभों को पुन: व्यवस्थित कर सकता हूं?

यदि मैं माइक्रोसॉफ्ट एसक्यूएल सर्वर में किसी तालिका में कॉलम जोड़ रहा हूं, तो क्या मैं क्वेरी में तर्कसंगत रूप से कॉलम कहां प्रदर्शित कर सकता हूं?

मैं डिस्क पर कॉलम के भौतिक लेआउट से गड़बड़ नहीं करना चाहता हूं, लेकिन जब भी संभव हो तो मैं तर्कसंगत रूप से स्तंभों को समूहबद्ध करना चाहता हूं ताकि SQL सर्वर प्रबंधन स्टूडियो जैसे टूल सुविधाजनक तरीके से तालिका की सामग्री सूचीबद्ध कर सकें।

मुझे पता है कि मैं इसे एसक्यूएल मैनेजमेंट स्टूडियो के माध्यम से टेबल के लिए अपने "डिज़ाइन" मोड में जाकर और कॉलम के ऑर्डर को खींचकर कर सकता हूं, लेकिन मैं कच्चे एसक्यूएल में ऐसा करने में सक्षम होना चाहता हूं ताकि मैं ऑर्डर कर सकूं कमांड लाइन से लिखित।

0
जोड़ा संपादित
विचारों: 2
यह भी देखें कि stackoverflow.com/questions/5327545/…
जोड़ा लेखक Tim Abell, स्रोत
अधिक संबंधित चीजें: dba.stackexchange.com/questions/18719/…
जोड़ा लेखक Tim Abell, स्रोत
और एक और संबंधित सवाल, चाहे यह महत्वपूर्ण है stackoverflow.com/questions/6692021/…
जोड़ा लेखक Tim Abell, स्रोत
माइक्रोसॉफ्ट कनेक्ट: कॉलम ऑर्डर बदलने के लिए वैकल्पिक तालिका वाक्यविन्यास - प्रतिक्रिया चॉकलेट का है सामान्य WONTFIX के रूप में -टेपोट विविधता
जोड़ा लेखक Tim Abell, स्रोत
उत्तर के लिए बहुत देर हो चुकी है लेकिन इस लिंक पर एक नज़र डालें। blog.sqlauthority.com/2013/03/11/…
जोड़ा लेखक sqluser, स्रोत

8 उत्तर

जब प्रबंधन स्टूडियो ऐसा करता है, तो यह एक अस्थायी तालिका बना रहा है, सब कुछ कॉपी कर रहा है, अपनी मूल तालिका छोड़ रहा है और अस्थायी तालिका का नाम बदल रहा है। कोई सरल समकक्ष टी-एसक्यूएल कथन नहीं है।

यदि आप ऐसा करने की कल्पना नहीं करते हैं, तो आप हमेशा उस क्रम में कॉलम के साथ तालिका का दृश्य बना सकते हैं, जिसे आप चाहें और उसका उपयोग करें?

संपादित करें: पीटा!

0
जोड़ा

आप एक नई तालिका बनाने के बिना इस प्रोग्रामेटिक रूप से (एक सुरक्षित तरीके से) नहीं कर सकते हैं।

एंटरप्राइज़ मैनेजर क्या करता है जब आप एक नई टेबल बनाने के लिए एक पुनर्वितरण करते हैं, डेटा ले जाएं और फिर पुरानी तालिका को हटाएं और मौजूदा तालिका में नई तालिका का नाम बदलें।

यदि आप अपने कॉलम को किसी भौतिक क्रम में बदलने के बिना किसी विशेष क्रम / समूह में चाहते हैं, तो आप एक ऐसा दृश्य बना सकते हैं जो आप चाहें।

0
जोड़ा

यदि मैं आपका प्रश्न समझता हूं, तो आप मौजूदा प्रश्नों में पहले, दूसरे, तीसरे, आदि को कौन से कॉलम लौटाएंगे, प्रभावित करना चाहते हैं, है ना?

यदि आपके सभी प्रश्न <�कोड> चयन * तालिका से के साथ लिखे गए हैं - तो वे आउटपुट में दिखाए जाएंगे क्योंकि वे SQL में रखे गए हैं।

यदि आपके प्रश्न SELECT Field1, तालिका से फ़ील्ड 2 के साथ लिखे गए हैं - तो SQL में दिए गए क्रम से कोई फर्क नहीं पड़ता।

0
जोड़ा

पूरी तालिका को पुनर्निर्माण किए बिना कॉलम के क्रम को बदलना संभव नहीं है। यदि आपके पास केवल डेटाबेस के कुछ उदाहरण हैं, तो आप इसके लिए एसएसएमएस का उपयोग कर सकते हैं (तालिका का चयन करें और "डिज़ाइन" पर क्लिक करें)।

In case you have too many instances for a manual process, you should try this script: https://github.com/Epaminaidos/reorder-columns

0
जोड़ा

इसे सिस्टम टेबल को सीधे संशोधित करके, एसक्यूएल का उपयोग करके किया जा सकता है। उदाहरण के लिए, यहां देखें:

तालिका बदलें - बीच में नया कॉलम जोड़ें

हालांकि, मैं सिस्टम टेबल के साथ खेलने की अनुशंसा नहीं करता, जब तक कि यह बिल्कुल जरूरी न हो।

0
जोड़ा

मुझे लगता है कि यहां हर कोई क्या खो रहा है, यह है कि हालांकि हर किसी को देश और दुनिया भर में स्थापित एक ही सॉफ्टवेयर सिस्टम के 10, 20, या 1000 के उदाहरणों से निपटना नहीं है ... हम में से जो व्यावसायिक रूप से बेचे गए सॉफ्टवेयर को डिजाइन करते हैं, ऐसा करते हैं। नतीजतन, हम समय के साथ सिस्टम का विस्तार करते हैं, खेतों को जोड़कर तालिकाओं का विस्तार करते हैं क्योंकि नई क्षमता की आवश्यकता होती है, और जैसे ही उन क्षेत्रों की पहचान की जाती है, मौजूदा तालिका में होते हैं, और इस तरह, विस्तार, बढ़ने, खेतों को जोड़ने के एक दशक से अधिक आदि। टेबल के लिए .... और फिर डिजाइन से, उन समर्थनों के साथ काम करने के लिए, कभी-कभी कच्चे डेटा / समस्या निवारण में खोदने के लिए नई कार्यक्षमता कीड़े को डिबग करने के लिए काम करना पड़ता है .... यह प्राथमिक जानकारी नहीं है जो आप चाहते हैं फ़ील्ड के पहले मुट्ठी भर में देखें, जब आपके पास 30-40-50 या 90 फ़ील्ड के साथ टेबल हो और हां सख्ती से सामान्यीकृत डेटाबेस में हो।

मैंने अक्सर कामना की है कि मैं इस सटीक कारण से ऐसा कर सकता हूं। लेकिन एसक्यूएल क्या करता है ठीक करने से कम, एक नई तालिका के लिए एक स्क्रिप्ट बनाएं, जिस तरह से मैं इसे चाहता हूं, इसे सम्मिलित करना, फिर मौजूदा तालिका और नामकरण से सभी मौजूदा बाधाओं, रिश्तों, चाबियों, सूचकांक इत्यादि को छोड़ना पुरानी नाम पर "नई" तालिका वापस आती है, और फिर उन सभी कुंजियों, रिश्तों, सूचकांक इत्यादि को पढ़ती है ....

केवल कष्टप्रद, समय लेने वाली नहीं है ... लेकिन पांच और वर्षों में, फिर से होने की आवश्यकता होगी ....

यह बहुत बड़ी मात्रा में काम करने के लायक है, हालांकि मुद्दा यह है कि ... आखिरी बार हमें इस क्षमता की आवश्यकता नहीं होगी, क्योंकि हमारे सिस्टम बढ़ते क्रमशः संचालित, विस्तारित और खेतों में फ़ील्ड प्राप्त करेंगे जरूरत / डिजाइन जोड़ों।

अधिकांश डेवलपर्स एक सिस्टम स्टैंडपॉइंट से सोचते हैं जो एक कंपनी या बहुत विशिष्ट हार्ड बॉक्स बाजार में कार्य करता है।

"ऑफ द शेल्फ" लेकिन महत्वपूर्ण रूप से प्रगतिशील डिजाइनरों और उनके बाजार स्थान में विकास के नेताओं को हमेशा इस समस्या से निपटना होगा, किसी भी व्यक्ति के पास एक रचनात्मक समाधान से प्यार होगा। यह आसानी से मेरी कंपनी को सप्ताह में एक दर्जन घंटे बचा सकता है, बस स्क्रॉल नहीं कर रहा है, या याद रखें कि "वह" फ़ील्ड स्रोत डेटा तालिका में कहां है ....

0
जोड़ा
हमारे पास एक ही समस्या थी और एक संग्रहित प्रक्रिया बनाई गई जो इस प्रक्रिया को स्वचालित करता है (नाम बदलें, नई तालिका बनाएं, कॉपी करें, सभी विदेशी कुंजी, बाधाएं इत्यादि बनाएं)। आपको केवल टैबलेटनाम और कॉलम के नए क्रम में पास होना होगा। यदि यह वास्तव में सप्ताह में दर्जनों घंटे आपकी कंपनी को बचा सकता है, तो आपको एक समान लिपि लिखने का समय निवेश करना चाहिए। हमारे लिए, एक स्थिर स्क्रिप्ट के लिए केवल 2-3 दिनों का समय लगता है जिसे हम नियमित रूप से स्तंभों को पुन: व्यवस्थित करने के लिए उपयोग करते हैं। यह उन सभी सुविधाओं का ख्याल रखता है जो हम एसक्लसेवर (उदाहरण के लिए आंशिक अनुक्रमणिका, अनुक्रमित विचार
जोड़ा लेखक Andreas, स्रोत

एक तरीका है, लेकिन यह केवल अस्थायी रूप से क्वेरी के लिए ही है। उदाहरण के लिए,

Lets say you have 5 tables. Table is called T_Testing

फर्स्टनाम, लास्टनाम, फोन नम्बर, ईमेल, और सदस्य_आईडी

आप चाहते हैं कि यह उनकी आईडी, फिर अंतिम नाम, फिर फर्स्टनाम, फिर फ़ोन को ईमेल करें।

आप इसे चयन के अनुसार कर सकते हैं।

Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

इसके अलावा, अगर आप किसी कारण से पहले नाम से पहले अंतिम नाम दिखाना चाहते हैं, तो आप इसे निम्नानुसार भी कर सकते हैं:

Select LastName, *
From T_Testing

एकमात्र चीज जो आप सुनिश्चित करना चाहते हैं कि आप ऐसा करते हैं कि ऑर्डरबी या कहां फ़ंक्शन को तालिका के रूप में इंगित करने की आवश्यकता है। कॉलम यदि आप कहां या ऑर्डर द्वारा उपयोग करने जा रहे हैं

उदाहरण:

Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

मुझे उम्मीद है कि इससे मदद मिलती है, मैंने इसे समझ लिया क्योंकि मुझे इसे खुद करने की ज़रूरत थी।

0
जोड़ा
इस क्वेरी में LastName का चयन करें, * T_Testing से, आपको LastName दो बार मिलता है।
जोड़ा लेखक sqluser, स्रोत
  1. अपनी मौजूदा तालिका को एक क्वेरी विंडो पर स्क्रिप्ट करें।
  2. इस स्क्रिप्ट को एक टेस्ट डेटाबेस (उपयोग कथन हटाएं) के विरुद्ध चलाएं
  3. आपको आवश्यक कॉलम परिवर्तन करने के लिए एसएसएमएस का उपयोग करें
  4. चेंज स्क्रिप्ट जेनरेट करें पर क्लिक करें (बाईं ओर सबसे अधिक और Bottommost आइकन बटनबार, डिफ़ॉल्ट रूप से)
  5. इस स्क्रिप्ट का उपयोग अपनी वास्तविक तालिका के विरुद्ध करें

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

0
जोड़ा