বিদ্যমান সারণী থেকে কীভাবে একটি কলাম সরাবেন?


386

বিদ্যমান সারণী থেকে কীভাবে একটি কলাম সরাবেন?

আমি একটা টেবিল আছে MENসঙ্গে FnameএবংLname

আমি এটি অপসারণ করা প্রয়োজন Lname

এটা কিভাবে করতে হবে?



উত্তর:



157

জেনেরিক:

ALTER TABLE table_name DROP COLUMN column_name;

আপনার ক্ষেত্রে:

ALTER TABLE MEN DROP COLUMN Lname;

72

আপনার উদাহরণটি সহজ এবং কোনও অতিরিক্ত টেবিল পরিবর্তনের প্রয়োজন নেই তবে সাধারণত এটি বলা তুচ্ছ নয়।

যদি এই কলামটি অন্য টেবিলগুলি দ্বারা উল্লেখ করা হয় তবে আপনাকে অন্যান্য টেবিল / কলামগুলির সাথে কী করবেন তা নির্ধারণ করতে হবে। একটি বিকল্প হ'ল বিদেশী কীগুলি সরানো এবং অন্যান্য টেবিলে রেফারেন্স করা ডেটা রাখা।

অন্য বিকল্পটি হ'ল সমস্ত রেফারেন্সিং কলামগুলি সন্ধান করা এবং সেগুলির আর প্রয়োজন না হলে সেগুলি সরিয়ে ফেলুন।

এই ধরনের ক্ষেত্রে আসল চ্যালেঞ্জ হ'ল সমস্ত বিদেশী কী খুঁজে পাওয়া। আপনি সিস্টেম টেবিলগুলি অনুসন্ধান করে বা তৃতীয় পক্ষের সরঞ্জামগুলি যেমন অ্যাপেক্সএসকিউএল অনুসন্ধান (ফ্রি) বা রেড গেট নির্ভরতা ট্র্যাকার (প্রিমিয়াম তবে আরও বৈশিষ্ট্য) ব্যবহার করে এটি করতে পারেন। বিদেশী কীগুলিতে একটি সম্পূর্ণ থ্রেড এখানে


47

এটা সঠিক উত্তর:

ALTER TABLE MEN DROP COLUMN Lname

কিন্তু ... একটি CONSTRAINTবিদ্যমান COLUMN, তাহলে আপনি আবশ্যক প্রথম, তারপর আপনি করতে সক্ষম হবে । একটি ড্রপ করার জন্য , চালান:DROPCONSTRAINTDROPCOLUMNCONSTRAINT

ALTER TABLE MEN DROP CONSTRAINT {constraint_name_on_column_Lname}

টেবিলের পরিবর্তে tb_name ড্রপ বিদেশী কী কী_নাম
বোরটুনাক

3
কীভাবে করবেন অনুসন্ধান constraintএকটি জন্য কলাম ?
কুইকিনেট

21

ইন SQL সার্ভার 2016 আপনি নতুন ডাই বিবৃতি ব্যবহার করতে পারেন।

ALTER TABLE Table_name DROP COLUMN IF EXISTS Column_name

উপরের ক্যোয়ারীটি কেবল dropsতখনই কলামটি এটি পুনরায় চালিত হয়exists অন্য টেবিলে থাকে তবে এটি ত্রুটি ছুঁড়ে না ফেলে।

বড় বড় IFমোড়ক ব্যবহারের পরিবর্তে columnএটি ফেলে দেওয়ার আগে অস্তিত্ব পরীক্ষা করতে আপনি কেবল উপরের DDLস্টেটমেন্টটি চালাতে পারেন


3
কী ডাই বিবৃতি ?
কিকিনেট

3
উপায় দ্বারা, আপনি এই ধরণের "পুনরায় চলমান
tomosius

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আপনি যদি অটোমেটেড এসকিএল স্ক্রিপ্টটি মোতায়েন করেন তবে আপনার স্ক্রিপ্টগুলি ডিফেন্সিয়ালি এভাবে লিখতে হবে।
বিজয়ী

7

প্রশ্নটি হল, আপনি কি কেবল একটি অনাবিল টেবিল থেকে কলামটি মুছতে পারবেন ;-)

BEGIN TRANSACTION

IF exists (SELECT * FROM  sys.columns c 
INNER JOIN  sys.objects t ON (c.[object_id] = t.[object_id])
WHERE t.[object_id] = OBJECT_ID(N'[dbo].[MyTable]')
AND c.[name] = 'ColumnName')
    BEGIN TRY
        ALTER TABLE [dbo].[MyTable] DROP COLUMN ColumnName
    END TRY
    BEGIN CATCH
        print 'FAILED!'
    END CATCH
ELSE
    BEGIN 
        SELECT ERROR_NUMBER() AS ErrorNumber;
        print 'NO TABLE OR COLUMN FOUND !'
    END 

COMMIT  

1
আমি মনে করি আপনি যদি কোনও অস্তিত্বহীন টেবিল থেকে কোনও কলামটি ফেলে দিতে চান তবে এটি করার উপায় এটি ছিল
মটিয়ান

6

এর সহজ উত্তরটি এটি ব্যবহার করা:

ALTER TABLE MEN DROP COLUMN Lname;

একাধিক কলাম এইভাবে নির্দিষ্ট করা যেতে পারে:

ALTER TABLE MEN DROP COLUMN Lname, secondcol, thirdcol;

এসকিউএল সার্ভার 2016 থেকে কেবল কলামটি বিদ্যমান থাকলে কেবল তা ফেলে দেওয়াও সম্ভব। কলামটি উপস্থিত না থাকায় এটি আপনাকে ত্রুটি পেতে বাধা দেয় যা এমন কিছু যা সম্ভবত আপনি পাত্তা না।

ALTER TABLE MEN DROP COLUMN IF EXISTS Lname;

কলাম বাদ দেওয়ার জন্য কিছু পূর্বশর্ত রয়েছে। বাদ দেওয়া কলামগুলি এটি হতে পারে না:

  • একটি সূচক দ্বারা ব্যবহৃত
  • চেক, বিদেশী কী, ইউনিক বা প্রাথমিক কী বাধা দ্বারা ব্যবহৃত
  • একটি ডিফল্টের সাথে যুক্ত
  • একটি নিয়মের সাথে আবদ্ধ

উপরের যে কোনওটি যদি সত্য হয় তবে আপনাকে প্রথমে সেই সমিতিগুলি ফেলে দেওয়া উচিত।

এছাড়াও, এটি লক্ষ করা উচিত, যে কোনও কলামটি ড্রপ করা টেবিলের ক্লাস্টার্ড সূচকটি পুনরায় তৈরি না করা পর্যন্ত হার্ড ডিস্ক থেকে স্থানটি পুনরায় দাবি করে না। সারণীর পুনর্নির্মাণ কমান্ডের সাহায্যে উপরের অংশটি অনুসরণ করা প্রায়শই ভাল ধারণা:

ALTER TABLE MEN REBUILD;

অবশেষে কেউ কেউ বলেছে এটি ধীর হতে পারে এবং সম্ভবত সময়কালের জন্য টেবিলটি লক করে রাখবে। কাঙ্ক্ষিত কাঠামোর সাহায্যে একটি নতুন টেবিল তৈরি করা সম্ভব হবে এবং তারপরে এই জাতীয় নামকরণ করুন:

SELECT 
   Fname 
   -- Note LName the column not wanted is not selected
INTO 
   new_MEN
FROM
   MEN;

EXEC sp_rename 'MEN', 'old_MEN';
EXEC sp_rename 'new_MEN', 'MEN';

DROP TABLE old_MEN;

তবে সতর্ক হতে হবে এখানে প্রথম নির্বাচন এবং শেষ নামকরণ কমান্ডের মধ্যে সন্নিবেশ করা সারিগুলির ডেটা হ্রাসের জন্য একটি উইন্ডো রয়েছে।


2

বিদ্যমান সারণীতে কলাম যুক্ত করতে:

ALTER TABLE table_name
 ADD
 column_name DATATYPE NULL  

বিদ্যমান সারণীতে কলামগুলি মুছতে:

ALTER TABLE table_name
DROP COLUMN column_name

ADD কলাম সম্পর্কে প্রশ্ন নয় ।
কিকিনেট

2

এটি এসএসএমএস জিইআইয়ের মাধ্যমেও করা যেতে পারে। এই পদ্ধতির সুন্দর জিনিসটি হ'ল আপনাকে সতর্ক করে দিচ্ছে যদি সেই কলামে কোনও সম্পর্ক থাকে এবং সেগুলিও স্বয়ংক্রিয়ভাবে মুছতে পারে।

  1. ডিজাইন ভিউতে টেবিলটি রাখুন (টেবিলে ডান ক্লিক করুন):

এখানে চিত্র বর্ণনা লিখুন

  1. টেবিলের ডিজাইন দেখার কলামে ডান ক্লিক করুন এবং "কলাম মুছুন" ক্লিক করুন

এখানে চিত্র বর্ণনা লিখুন

যেমনটি আমি আগেই বলেছি, যদি এমন কোনও সম্পর্ক থাকে যা মুছে ফেলাও দরকার হয়, আপনি যদি সেগুলিও মুছে ফেলতে চান তবে এই মুহুর্তে আপনাকে জিজ্ঞাসা করবে। কলামটি মুছতে আপনার সম্ভবত এটি করতে হবে।


0

আপনি যদি সি # ব্যবহার করছেন এবং পরিচয় কলামটি অন্তর্নির্মিত হয় তবে এর কোনও মূল্য না দিয়ে ইন্টের একটি নতুন উদাহরণ তৈরি করুন t এটি আমার পক্ষে কাজ করেছে।

[পরিচয়_ কলাম] = নতুন ইনট ()


এই উত্তরটি কি করবে? এটি কি টেবিল থেকে কলামটি সরিয়ে দেবে?
প্রশান্ত পিম্পলে

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