كيف يمكنني إعادة تسمية عمود في جدول قاعدة البيانات باستخدام SQL؟

StackOverflow https://stackoverflow.com/questions/174582

سؤال

إذا وأود أن مجرد إعادة تسمية عمود (لا تغيير نوعه أو قيود، مجرد اسمها) في قاعدة بيانات SQL باستخدام SQL، كيف أفعل ذلك؟ أم أنه ليس من الممكن؟

وهذا هو لأي قاعدة بيانات تزعم دعم SQL، أنا ببساطة تبحث عن استعلام خاص ب SQL التي ستعمل بغض النظر عن تنفيذ قاعدة البيانات الفعلية.

هل كانت مفيدة؟

المحلول

في كيو (وغيرها الكثير من 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

نصائح أخرى

وعلى وجه التحديد لSQL Server استخدام sp_rename

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

في الخلية، بناء الجملة ALTER TABLE ... CHANGE :

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

لاحظ أنه لا يمكن إعادة تسمية فقط وترك نوع والقيود وهو. يجب إعادة كتابة نوع البيانات والقيود بعد الاسم الجديد للعمود.

وأعتقد أن هذا هو أسهل طريقة لتغيير اسم العمود.

SP_RENAME 'TABLE_NAME.OLD_COLUMN_NAME','NEW_COLUMN_NAME'

للأسف، عن حل مستقل قاعدة البيانات، سوف تحتاج إلى معرفة كل شيء حول العمود. إذا تم استخدامه في جداول أخرى كمفتاح خارجي، وسوف تحتاج إلى تعديل أيضا.

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 خطوط. عن أي شيء أكثر تعقيدا أنه يمكن الحصول على الفوضى جدا كما كنت في ملء الأجزاء الناقصة.

ولكن، وكما ذكر أعلاه، هناك طرق محددة قاعدة البيانات أبسط إذا كنت تعرف قاعدة البيانات التي تحتاج إلى تعديل في وقت مبكر.

في ينفورميكس، يمكنك استخدام:

RENAME COLUMN TableName.OldName TO NewName;
تم تنفيذ

وهذا قبل تناول المعيار SQL القضية - إذا تم تناوله في مستوى SQL. نسختي من SQL 9075: مستوى 2003 لا تظهر عليه باعتباره معيار (من بين أمور أخرى، إعادة تسمية ليست واحدة من الكلمات الرئيسية). أنا لا أعرف ما إذا كان هو في الواقع في SQL 9075: 2008

في مزود خدمة يمكنك استخدام

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

أو

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

ويمكنك استخدام الأمر التالي لإعادة تسمية العمود في أي جدول في SQL Server:

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

وALTER TABLE غير SQL القياسية. لكنها لم تنفذ بشكل كامل في العديد من نظم قواعد البيانات.

وسيتم ALTER TABLE المعيار، ولكن هذا غير معتمد بالضرورة كل DBMS أنت من المحتمل أن تواجه، لذلك إذا كنت تبحث عن بناء جملة شامل، قد يكون من الحظ.

وبدلا من ذلك إلى SQL، يمكنك القيام بذلك في Microsoft SQL Server إدارة Studio، من لوحة الجدول التصميم.

والطريق الأولى

وبطيئة نقرا مزدوجا فوق على العمود. سيصبح اسم عمود مربع نص قابل للتحرير.

والطريقة الثانية

<اقتباس فقرة>   

ستوديو SqlManagement >> قواعد البيانات >> الجداول >> specificTable >> العمود   مجلد >> بزر الفأرة الأيمن على عمود >> رمان

والطريق الثالث

والجدول >> انقر بالزر الايمن >> تصميم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top