मैं SQL का उपयोग करके डेटाबेस तालिका में एक कॉलम का नाम कैसे बदलूं?


113

यदि मैं SQL का उपयोग करते हुए एक SQL डेटाबेस में केवल एक कॉलम (इसके प्रकार या बाधाओं को नहीं बदल सकता हूं, तो बस इसका नाम) चाहूंगा? या यह संभव नहीं है?

यह SQL का समर्थन करने का दावा करने वाले किसी भी डेटाबेस के लिए है, मैं बस SQL-विशिष्ट क्वेरी की तलाश कर रहा हूं जो वास्तविक डेटाबेस कार्यान्वयन की परवाह किए बिना काम करेगा।


2
स्कैफ़मैन को सुरक्षित करना, यह "SQL" प्रश्न नहीं है, यह (शायद) "SQLServer" प्रश्न है।
टोनी एंड्रयूज

1
कोई भी डेटाबेस सिस्टम जो SQL का उपयोग करने के लिए करता है। Oracle, MySQL, आदि ... मैं एक डेटाबेस-स्वतंत्र उत्तर की तलाश में हूं।
MetroidFan2002

जवाबों:


97

PostgreSQL (और कई अन्य RDBMS) पर, आप इसे नियमित ALTER TABLEविवरण के साथ कर सकते हैं :

=> SELECT * FROM Test1;
 id | foo | bar 
----+-----+-----
  2 |   1 |   2

=> ALTER TABLE Test1 RENAME COLUMN foo TO baz;
ALTER TABLE

=> SELECT * FROM Test1;
 id | baz | bar 
----+-----+-----
  2 |   1 |   2

10
यह MySQL में समर्थित नहीं है, क्या यह है?
ustun

5
नहीं है, अपने MySQL में समर्थित नहीं
रिक

4
यह Microsoft SQL सर्वर में भी समर्थित नहीं है। इसके बजाय sp_renameगैलील के उत्तर के अनुसार उपयोग करें : stackoverflow.com/a/174586/834431
क्रिस

मेरा मानना ​​है कि MySQL 8.0 अब इस सिंटेक्स का समर्थन करता है
Dan

118

विशेष रूप से SQL सर्वर के लिए, का उपयोग करें sp_rename

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

यह Microsoft-विशिष्ट लगता है और मूल क्वेरी में कुछ भी Microsoft DBMS इंगित नहीं करता है।
बोरटज़मेयर

1
हां, मैं जिस उत्तर की तलाश कर रहा था वह "मानक" एसक्यूएल है, और किसी विशेष कार्यान्वयन पर निर्भर नहीं है। हालाँकि, यह Microsoft के सिस्टम का उपयोग करने वाले किसी भी व्यक्ति के लिए एक अच्छा उत्तर है।
MetroidFan2002

35

MySQL में, सिंटैक्स है ALTER TABLE ... CHANGE:

ALTER TABLE <table_name> CHANGE <column_name> <new_column_name> <data_type> ...

ध्यान दें कि आप केवल नाम नहीं बदल सकते हैं और प्रकार और बाधाओं को छोड़ सकते हैं; आपको स्तंभ के नए नाम के बाद डेटा प्रकार और बाधाओं को फिर से लिखना होगा।


यह mySQL डेटाबेस में परीक्षण किया गया है
jaspher chloe

2
हम RENAMEसिंटैक्स के साथ प्रकार / बाधा को प्रभावित किए बिना सिर्फ कॉलम का नाम बदल सकते हैं । MySQL में एक कॉलम का नाम बदलें
Lukasz Szozda

21

दुर्भाग्य से, एक डेटाबेस स्वतंत्र समाधान के लिए, आपको कॉलम के बारे में सब कुछ जानना होगा। यदि यह एक विदेशी कुंजी के रूप में अन्य तालिकाओं में उपयोग किया जाता है, तो उन्हें भी संशोधित करने की आवश्यकता होगी।

ALTER TABLE MyTable ADD MyNewColumn OLD_COLUMN_TYPE;
UPDATE MyTable SET MyNewColumn = MyOldColumn;
-- add all necessary triggers and constraints to the new column...
-- update all foreign key usages to point to the new column...
ALTER TABLE MyTable DROP COLUMN MyOldColumn;

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

हालांकि, जैसा कि ऊपर उल्लेख किया गया है, सरल डेटाबेस विशिष्ट तरीके हैं यदि आप जानते हैं कि आपको किस डेटाबेस को समय से पहले संशोधित करने की आवश्यकता है।


सीधे सवाल का जवाब दें, भले ही यह
पूछने वाले की

टिप्पणी में, ओपी ने वास्तव में स्पष्ट किया कि यह वही है जो वह खोज रहा था।
मैग्नेटिज्म

20

मुझे लगता है कि कॉलम नाम बदलने का यह सबसे आसान तरीका है।

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'

यह SQL सर्वर पर मेरे लिए काम किया। मुझे यकीन नहीं है कि यह अन्य DBMS पर काम करता है
निक

9

Informix में, आप उपयोग कर सकते हैं:

RENAME COLUMN TableName.OldName TO NewName;

SQL मानक समस्या को संबोधित करने से पहले इसे लागू किया गया था - यदि यह SQL मानक में संबोधित किया गया है। SQL 9075: 2003 मानक की मेरी प्रति मानक होने के रूप में यह नहीं दिखाती है (अन्य बातों के अलावा, RENAME कीवर्ड्स में से एक नहीं है)। मुझे नहीं पता कि यह वास्तव में SQL 9075: 2008 में है।


2
SQL 2008 ड्राफ्ट में भी कोई RENAME नहीं।
निकोलस बुदुरोई

एएस के रूप में - का उपयोग करें। RENAME COLUMN TableName.OldName TO NewName; www-01.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/…
hitzi

6

Sql सर्वर में आप उपयोग कर सकते हैं

exec sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'

या

sp_rename '<TableName.OldColumnName>','<NewColumnName>','COLUMN'

6

SQL सर्वर में किसी तालिका के स्तंभ का नाम बदलने के लिए आप निम्न आदेश का उपयोग कर सकते हैं:

exec sp_rename 'TableName.OldColumnName', 'New colunmName'

3

अन्य तालिका मानक SQL है। लेकिन यह कई डेटाबेस सिस्टम में पूरी तरह से लागू नहीं है।


मैंने आपके ऊपर बोर्त्ज़ के उत्तर को स्वीकार किया क्योंकि उन्होंने एक विस्तृत विवरण दिया था। फिर भी, मैंने तुम्हारा उत्थान किया।
MetroidFan2002

@ MetroidFan2002 - मैंने केवल यह स्वीकार करने के लिए अपना उत्तर जोड़ा है कि "ALTER TABLE" केवल PostgreSQL नहीं है, यह बहुत आम है।
पॉल टॉम्बलिन 18

2

मानक होगा ALTER TABLE, लेकिन यह जरूरी नहीं है कि आप हर डीबीएमएस का सामना करें, जिससे आप मुठभेड़ कर सकते हैं, इसलिए यदि आप एक सर्वव्यापी वाक्यविन्यास की तलाश कर रहे हैं, तो आप भाग्य से बाहर हो सकते हैं।


0

वैकल्पिक रूप से SQL, आप इसे Microsoft SQL सर्वर प्रबंधन स्टूडियो में तालिका डिज़ाइन पैनल से कर सकते हैं।

पहला रास्ता

कॉलम पर डबल-क्लिक करें। कॉलम नाम एक संपादन योग्य टेक्स्ट बॉक्स बन जाएगा।

दूसरा तरीका

SqlManagement Studio >> DataBases >> टेबल >> विशिष्ट >> कॉलम फ़ोल्डर >> कॉलम पर राइट क्लिक करें >> Reman

तीसरा रास्ता

टेबल >> rightclick >> डिजाइन

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