আমি কীভাবে এসকিউএল ব্যবহার করে একটি কলামের ডাটাবেস সারণিতে নাম পরিবর্তন করব?


113

যদি আমি এসকিউএল ব্যবহার করে কোনও এসকিউএল ডাটাবেসে কেবল কোনও কলামের নাম (তার ধরণ বা সীমাবদ্ধতাগুলি পরিবর্তন না করে কেবল নাম পরিবর্তন করতে চাই) তবে কীভাবে করব? নাকি সম্ভব হচ্ছে না?

এটি এসকিউএল সমর্থন করার যে কোনও ডাটাবেসের দাবি করার জন্য, আমি কেবল একটি এসকিউএল-নির্দিষ্ট ক্যোয়ারী খুঁজছি যা প্রকৃত ডাটাবেস বাস্তবায়ন নির্বিশেষে কাজ করবে।


2
সেকাফম্যানকে সেকেন্ডিং, এটি কোনও "এসকিউএল" প্রশ্ন নয়, এটি (সম্ভবত) একটি "এসকিউএল সার্ভার" প্রশ্ন।
টনি অ্যান্ড্রুজ

1
যে কোনও ডাটাবেস সিস্টেম যা এসকিউএল ব্যবহারের পরিকল্পনা করে। ওরাকল, মাইএসকিউএল, ইত্যাদি ... আমি একটি ডাটাবেস-স্বতন্ত্র উত্তর খুঁজছি।
MetroidFan2002

উত্তর:


97

পোস্টগ্রেএসকিউএল (এবং আরও অনেক আরডিবিএমএস) এ, আপনি নিয়মিত 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
এটি মাইএসকিউএলে সমর্থিত নয়, তাই না?
ustun

5
না, এটি মাইএসকিউএলে সমর্থিত নয়
রিক

4
এটি মাইক্রোসফ্ট এসকিউএল সার্ভারে সমর্থিত নয়। পরিবর্তে sp_renameগ্যালুয়ানির উত্তর অনুযায়ী ব্যবহার করুন : stackoverflow.com/a/174586/834431
ক্রিস

আমি বিশ্বাস করি যে মাইএসকিউএল 8.0 এখন এই বাক্য গঠনটিকে সমর্থন করে
ড্যান

118

বিশেষত এসকিউএল সার্ভারের জন্য ব্যবহার করুন sp_rename

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

এটি মাইক্রোসফ্ট-নির্দিষ্ট বলে মনে হয় এবং মূল ক্যোয়ারিতে কিছুই মাইক্রোসফ্ট ডিবিএমএসকে নির্দেশ করে না।
bortzmeyer

1
হ্যাঁ, আমি যে উত্তরটির সন্ধান করছিলাম তা হ'ল "স্ট্যান্ডার্ড" এসকিউএল, এবং কোনও নির্দিষ্ট প্রয়োগের উপর নির্ভর করে না। তবে মাইক্রোসফ্টের সিস্টেমটি যে কেউ ব্যবহার করছে এটি তার পক্ষে একটি ভাল উত্তর answer
MetroidFan2002

35

মাইএসকিউএলে সিনট্যাক্সটি হ'ল ALTER TABLE ... CHANGE:

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

মনে রাখবেন যে আপনি কেবল নাম পরিবর্তন করতে পারবেন না এবং প্রকার এবং সীমাবদ্ধতাগুলি যেমন রেখে দিতে পারেন; কলামের নতুন নামের পরে আপনাকে অবশ্যই ডেটা টাইপ এবং সীমাবদ্ধতাগুলি টাইপ করতে হবে।


এটি মাইএসকিউএল ডাটাবেসে পরীক্ষা করা হয়
জাফার ক্লো

2
RENAMEসিনট্যাক্সের সাথে টাইপ / সীমাবদ্ধতা প্রভাবিত না করে আমরা কেবল কলামটির নাম পরিবর্তন করতে পারি । মাইএসকিউএলে একটি কলামটির নাম পরিবর্তন করুন
লুকাস্জ সজোদা

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'

এটি এসকিউএল সার্ভারে আমার জন্য কাজ করেছে। আমি নিশ্চিত নই যে এটি অন্যান্য ডিবিএমএস
নিক

9

ইনফর্মিক্সে, আপনি ব্যবহার করতে পারেন:

RENAME COLUMN TableName.OldName TO NewName;

এসকিউএল স্ট্যান্ডার্ডটি সমস্যার সমাধান করার আগে এটি প্রয়োগ করা হয়েছিল - যদি এটি এসকিউএল স্ট্যান্ডার্ডে সম্বোধন করা হয়। আমার এসকিউএল 9075: 2003 স্ট্যান্ডার্ডের অনুলিপিটি এটি মানক হিসাবে দেখায় না (অন্যান্য জিনিসগুলির মধ্যে, RENAME কীওয়ার্ডগুলির মধ্যে একটি নয়)। এটি আসলে এসকিউএল 9075: ২০০৮-এ আছে কিনা তা আমি জানি না।


2
এসকিউএল ২০০৮ খসড়াতে কোনও পুনরায় নাম নেই।
নিকোলাস বুদুরই

যেমন নয় - টু ব্যবহার করুন। RENAME COLUMN TableName.OldName TO NewName; www-01.ibm.com/support/ জ্ঞানসেন্টিটার
এসএসইউ

6

SQL সার্ভারে আপনি ব্যবহার করতে পারেন

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

অথবা

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

6

আপনি এসকিউএল সার্ভারে যে কোনও সারণীর কলামটির নাম পরিবর্তন করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

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

3

অলটার টেবিলে স্ট্যান্ডার্ড এসকিউএল হয়। তবে এটি অনেকগুলি ডাটাবেস সিস্টেমে সম্পূর্ণরূপে প্রয়োগ করা হয় নি।


আমি আপনার উপর বোর্টজের উত্তর গ্রহণ করেছি কারণ তিনি একটি বিশদ ব্যাখ্যা দিয়েছেন। যাইহোক, আমি আপনাকে upvated।
MetroidFan2002

@ মেট্রয়েডফ্যান ২০০২ - আমি এই স্বীকৃতি জানাতে কেবল আমার উত্তর যুক্ত করেছি যে "অলটার টেবল" কেবল পোস্টগ্র্যাসকিউএল নয়, এটি বেশ সাধারণ বিষয়।
পল টমবলিন 18

2

স্ট্যান্ডার্ডটি হবে ALTER TABLE, তবে এটির মুখোমুখি হওয়া প্রতিটি ডিবিএমএস অগত্যা আপনাকে সমর্থন করবে না, তাই আপনি যদি সর্ব-সংবেদী সিনট্যাক্সের সন্ধান করেন, আপনি ভাগ্য থেকে দূরে থাকতে পারেন।


0

বিকল্পভাবে SQL , আপনি টেবিল ডিজাইন প্যানেল থেকে মাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে এটি করতে পারেন।

প্রথম উপায়

কলামটিতে ধীরে ধীরে ডাবল ক্লিক করুন। কলামের নাম একটি সম্পাদনাযোগ্য পাঠ্য বাক্সে পরিণত হবে।

দ্বিতীয় উপায়

স্ক্যাল ম্যানেজমেন্ট স্টুডিও >> ডাটাবেস >> টেবিল >> নির্দিষ্ট টেবিল >> কলাম ফোল্ডার >> কলামে ডান ক্লিক করুন >> পুনরায়

তৃতীয় উপায়

ছক >> Rightclick >> ডিজাইন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.