এসকিএল সার্ভার 2005 এ এসকিএল কোয়েরি ব্যবহার করে কোনও টেবিলের কলাম ক্রম কীভাবে পরিবর্তন করবেন?


109

এসকিউএল সার্ভার 2005 এ এসকিউএল কোয়েরি ব্যবহার করে কোনও টেবিলের কলাম ক্রম কীভাবে পরিবর্তন করবেন?

আমি এসকিউএল কোয়েরি ব্যবহার করে একটি সারণীতে কলাম ক্রম পুনরায় সাজতে চাই।


3
আপনি যদি সারণিতে বিদ্যমান কলামগুলির অবস্থান পরিবর্তন করার বিষয়ে উল্লেখ করছেন , আপনার পছন্দসই ক্রম সহ একটি নতুন টেবিল তৈরি করতে হবে, পুরানো সারণি থেকে ডেটা ,োকানো হবে, তারপরে মূল টেবিলটি ফেলে দিন। এটি করার জন্য আর কোনও উপায় নেই (আমার জ্ঞানের কাছে)।
মাইকেল টড

আপনি কি একটি নির্বাচনী বিবৃতিতে কলাম অর্ডার, বা টেবিলের সংজ্ঞাতে কলামের আদেশের বিষয়ে কথা বলছেন?
marc_s

উত্তর:


111

তুমি পার না. এসএমএল সার্ভারের কাছে কলামের ক্রমটি কেবল একটি "প্রসাধনী" বিষয় যা আমরা মনুষ্যদের মনে করি it's এটি প্রায় সর্বদা অপ্রাসঙ্গিক।

আপনি যখন কলামের ক্রম পরিবর্তন করবেন তখন এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওটি ব্যাকগ্রাউন্ডে কী করে তা কোনও নতুন CREATE TABLEকমান্ডের সাহায্যে টেবিলটি আবার নতুন কমান্ড দিয়ে পুনরায় তৈরি করা হয় , পুরানো টেবিল থেকে ডেটা অনুলিপি করে এবং তারপরে ফেলে দেওয়া হয়।

কলাম ক্রম সংজ্ঞায়িত করার জন্য কোনও এসকিউএল আদেশ নেই।


4
না, এসকিউএল সার্ভার নেই এমন কোনও জিনিস নেই - এবং কোনও আসল আরবিডিএমএসে থাকা উচিত নয় - কলাম ক্রম কোনও এসকিউএল টেবিলের সাথে প্রাসঙ্গিক ধারণা নয়
marc_s

68
@marc_s কলাম অর্ডার সমর্থন করার পক্ষে কোনও ভাল কারণ নেই। এমনকি যদি এটি শুধুমাত্র চাক্ষুষ হয়। আপনি যখন "নির্বাচন করুন" "তৈরি করেন তখন প্রদত্ত কলামের অর্ডার সহ কোনও সারণিতে ডেটাটি দেখার পক্ষে এটি সহজতর হয়। আমি একজন বিকাশকারী এবং সারাক্ষণ এই জাতীয় কোয়েরি করি। আপনি একটি ভাল প্রাক-সংজ্ঞায়িত কলাম অর্ডার দিয়ে কিছুটা সময় ব্যয় করতে পারেন। অন্য যে কোনও দৃষ্টিকোণ থেকে অবশ্যই এর কোনও বুদ্ধি নেই: কিছুই কলামের ক্রমের উপর নির্ভর করে না। যাইহোক, আপনি "INFORMATION_SCHEMA.COLUMNS" জিজ্ঞাসা করার পরে একটি ORDINAL_POSITION কলাম রয়েছে। আমি এর অর্থ কী জানি না ... তবে এটির সাথে অবশ্যই এটির কিছু করা উচিত।
জোটাবি

18
কলামের ক্রমটি প্রাসঙ্গিক উদাহরণ হিসাবে কলামের নাম উল্লেখ না করে INSERT INTO ব্যবহার করার সময়। আর একটি উদাহরণ কলাম নামের পরিবর্তে অর্ডার বাই কলাম সূচক। উভয়ই স্পষ্টতই প্রস্তাবিত অনুশীলনগুলি না করে, তবে এসকিউএল সার্ভার এটির অনুমতি দেয় যাতে কলামের ক্রম পরিবর্তন করার সময় কেউ সম্ভবত এটি কোথাও ব্যবহার করেছেন T
কারভেলিস

12
@ কারভেলিস: আপনার কলামগুলি যেভাবেই হোক স্পষ্টভাবে উল্লেখ না করে ব্যবহার করা উচিত নয় INSERT!
marc_s

2
@মার্ক_স: একেবারে, তবে আমি সাধারণত কোনও প্রকল্পে কাজ করি না। আমি বেশ কয়েকটি প্রকল্প দেখেছি যেখানে লোকেরা এই ধরণের কোড ব্যবহার করে।
কারভেলিস

30

'ডিফল্ট' আদেশের জন্য * ব্যবহার না করে আপনি ক্ষেত্রগুলিকে যাতে ক্রম হিসাবে ফিরিয়ে দিতে চান সেগুলি স্পষ্টভাবে তালিকাবদ্ধ করতে হবে।

মূল জিজ্ঞাসা:

select * from foobar

আয়

foo bar
--- ---
  1   2

এখন লিখ

select bar, foo from foobar

bar foo
--- ---
  2   1

উপরের উত্তরটি কি ভুল? এই উত্তরটি আক্ষরিকভাবে কীভাবে কলামগুলি অর্ডার করতে দেখায়, কেন আগেরটির একটি চেকমার্ক রয়েছে এবং এটির কী নেই?
এজেন্ট লু

1
@ এজেন্ট লু সমস্যাটি হ'ল মূল প্রশ্নের বাক্যটি। মার্ক এবং আমি 'কলামগুলির ক্রম পরিবর্তন করার জন্য' ওপির প্রশ্নের ব্যাখ্যা আলাদাভাবে করেছি। তিনি কড়া যুক্তি তৈরি করেছেন কেন কলামের অর্ডার সঞ্চিত সারণীতে অপ্রাসঙ্গিক (নামগুলি যদিও রয়েছে)। আমি দেখিয়েছি কীভাবে কোনও আলাদা কলামের ক্রমে ডেটা বের করা যায়। মোটেও একই জিনিস নয়!
লেেক্সু

23

http://msdn.microsoft.com/en-us/library/aa337556.aspx অনুসারে

লেনদেন-এসকিউএল স্টেটমেন্ট ব্যবহার করে এই কাজটি সমর্থিত নয়।

ঠিক আছে, এটি করা যাবে, create/ অনুলিপি / drop/ পুনর্নবীকরণ ব্যবহার করে , হিসাবে komma8.komma1 দ্বারা উত্তর

অথবা আপনি এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও ব্যবহার করতে পারেন

  1. ইন অবজেক্ট এক্সপ্লোরার , কলাম টেবিল ডান-ক্লিক করুন পুনর্বিন্যাস করতে যদি আপনি চান এবং ক্লিক করুন ডিজাইন (Ver মধ্যে পরিবর্তন করুন। 2005 এসপি 1 বা তার আগে)
  2. আপনি যে কলামটির নামটি পুনঃক্রম করতে চান তার বাম দিকে বাক্সটি নির্বাচন করুন। (আপনি আপনার কীবোর্ডে [শিফট] বা [সিআরটিএল] কী ধরে রেখে একাধিক কলাম নির্বাচন করতে পারেন))
  3. কলামটি গুলি টেবিলের মধ্যে অন্য স্থানে টানুন।

তারপরে সেভ ক্লিক করুন। এই পদ্ধতিটি আসলে টেবিলটি ড্রপ করে পুনরায় তৈরি করে, যাতে কিছু ত্রুটি ঘটতে পারে।

যদি ট্র্যাকিং পরিবর্তন করুন বিকল্পটি ডাটাবেস এবং টেবিলের জন্য সক্ষম করা থাকে তবে আপনার এই পদ্ধতিটি ব্যবহার করা উচিত নয়।

যদি এটি অক্ষম করা থাকে, সংরক্ষণের পরিবর্তনগুলি প্রতিরোধ করুন যা টেবিল পুনর্নির্মাণ বিকল্পের জন্য প্রয়োজনীয় সেটিংস মেনু> বিকল্প> ডিজাইনারগুলিতে সাফ করা উচিত, অন্যথায় "পরিবর্তনগুলি সংরক্ষণের অনুমতি নেই" ত্রুটি ঘটবে।

  • টেবিল পুনর্নির্মাণ বিকল্পের জন্য প্রয়োজনীয় সংরক্ষণের পরিবর্তনগুলি অক্ষম করা মাইক্রোসফ্টের বিরুদ্ধে কঠোরভাবে পরামর্শ দেওয়া হয়েছে, কারণ এটি টেবিলটি পুনরায় তৈরি হওয়ার সময় বিদ্যমান পরিবর্তন ট্র্যাকিংয়ের তথ্য মুছে ফেলার দিকে পরিচালিত করে, সুতরাং পরিবর্তন ট্র্যাকিং থাকলে আপনার এই বিকল্পটি কখনই অক্ষম করা উচিত নয় should তৌফিক!

প্রাথমিক এবং বিদেশী কী তৈরির সময় সমস্যাও দেখা দিতে পারে।

যদি উপরের ত্রুটিগুলির কোনওটি ঘটে থাকে তবে সংরক্ষণ ব্যর্থ হয় যা আপনাকে মূল কলাম ক্রমের সাথে ছেড়ে দেয়।


1
This task cannot be performed using Transact-SQL statements.দস্তাবেজের " " বক্তব্যটি ভুল ছিল। আমি লেখককে ব্যাখ্যা করে তাকে " This task is not supported using Transact-SQL statements." এ পরিবর্তিত করতে বলেছিলাম । প্রায় এক দিন আগে, লেখক সম্মত হন এবং নথিটি স্থির করে দেওয়া হয়েছিল। গিটহাবে আমাদের যে আলোচনা হয়েছিল তা আপনি অনুসরণ করতে পারেন
রোনেন অ্যারিলি

@ রোনেনএরিলি ভাল কাজ, এবং আমাকে জানানোর জন্য ধন্যবাদ। আমি আমার উত্তর আপডেট করেছি
রোবটিক

আপনি @robotik most এর সর্বাধিক স্বাগত 😀 আমি আশা করি যে এখানে যারা এসেছেন এবং সর্বাধিক ভোটের সাথে প্রতিক্রিয়া দেখছেন তারা সকলেই বুঝতে পারবেন যে এটি একটি সম্পূর্ণ ভুল। দুর্ভাগ্যক্রমে, সম্প্রদায়গুলি সাধারণত একটি পশুর পাল (গবাদি পশু) এর মতো আচরণ করে এবং একবার নেতা এবং শীর্ষস্থানীয় অবদানকারী (যাকে শীর্ষ বিশেষজ্ঞ হিসাবে বিবেচনা করা হয়) ভুল করে ফেলে, অন্যরা তাকে অনুসরণ করে, যেমন এই থ্রেডে ঘটেছিল। লোকেরা ইতিমধ্যে ভুলের পক্ষে ভোট দিতে থাকে যদি এটি ইতিমধ্যে অনেকগুলি ভোট পেয়ে থাকে (এর পদ্ধতির: "যেহেতু সবাই এটি বলে, তবে এটি সত্য"), এবং ফোরামে আসবে এমন অন্যান্য ব্যক্তিরা ভাববেন যে এটি সঠিক উত্তর।
রোনেন অরিলি

1
@ রোনেনআরিলি সে কারণেই আমি সর্বদা নীচে স্ক্রোল করি :)
রোবটিক

13

এটি কোনও প্রশ্নের ফলাফলের রেকর্ডগুলি অর্ডার করার প্রশ্নের সাথে সমান .. এবং সাধারণত কেউই আনুষ্ঠানিকভাবে সঠিক উত্তর পছন্দ করে না ;-)

সুতরাং এখানে এটি যায়:

  • এসকিউএল স্ট্যান্ডার্ড অনুযায়ী, একটি টেবিলের কলামগুলি "অর্ডার করা" হয় না
  • ফলস্বরূপ, ক select * একটি নির্দিষ্ট ক্রমে কলামগুলি ফেরত দিতে বাধ্য করে না
  • সাধারণত, প্রতিটি আরডিবিএমএসের এক ধরণের "ডিফল্ট" অর্ডার থাকে (সাধারণত যে ক্রমটি টেবিলের সাথে টেবিলের সাথে যুক্ত হত, হয় হয় create table' or in the পরিবর্তিত সারণিতে যোগ করুন `বিবৃতিগুলি
  • অতএব, যদি আপনি কলামগুলির ক্রমের উপর নির্ভর করেন (কারণ আপনি কলামগুলির অবস্থান থেকে অন্য কোনও ডেটাস্ট্রাকচারকে পোলিট করার জন্য কোনও প্রশ্নের ফলাফল ব্যবহার করছেন), আপনি যে ক্রমগুলি চান সেগুলিতে স্পষ্টভাবে কলামগুলি তালিকাভুক্ত করুন।

11

আপনি অবশ্যই একটি বর্গ বিবৃতিতে কলামগুলির ক্রম পরিবর্তন করতে পারেন। তবে আপনি যদি টেবিলগুলির শারীরিক কলাম ক্রম বিমূর্ত করতে চান তবে আপনি একটি দৃশ্য তৈরি করতে পারেন। অর্থাত

CREATE TABLE myTable(
    a int NULL,
    b varchar(50) NULL,
    c datetime NULL
);


CREATE VIEW vw_myTable
AS
SELECT c, a, b
  FROM myTable;

select * from myTable;
a  b  c
-  -  -

select * from vw_myTable
c  a  b
-  -  -

এটি কি ক্যোয়ারির সময় পরিবর্তন করে?
ব্লাইংগুয়ে

@ ব্লিনডগুই না এটি আপনার প্রশ্নের সময় পরিবর্তন করে না
mevdiven

9

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে:

সরঞ্জাম -> বিকল্প -> ডিজাইনার -> সারণী এবং ডেটাবেস ডিজাইনার

  • 'টেবিল পুনরায় তৈরির প্রয়োজন এমন সংরক্ষণ পরিবর্তনগুলি প্রতিরোধ করুন' নির্বাচন করুন।

তারপর:

  • আপনি যে টেবিলটির জন্য কলামগুলি পুনরায় অর্ডার করতে চান তা ডান ক্লিক করুন।
  • 'ডিজাইন' ক্লিক করুন।
  • আপনি যে ক্রমটি চান তাতে কলামগুলি টেনে আনুন।
  • শেষ পর্যন্ত, সংরক্ষণ ক্লিক করুন।

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওটি টেবিলটি ফেলে দেবে এবং ডেটা ব্যবহার করে এটি পুনরায় তৈরি করবে।


6

আপনি এটি একটি নতুন টেবিল তৈরি করে, সমস্ত ডেটা অনুলিপি করে, পুরানো টেবিলটি ফেলে দিতে পারেন, তারপরে পুরানোটিকে প্রতিস্থাপন করতে নতুনটির নাম পরিবর্তন করে।

আপনি টেবিলটিতে নতুন কলামও যুক্ত করতে পারেন, কলামের তথ্য দিয়ে কলামটি অনুলিপি করতে পারেন, পুরানো কলামগুলি ফেলে দিতে পারেন, এবং পুরানোগুলির সাথে মেলে নতুন কলামগুলির নাম পরিবর্তন করতে পারেন। নীচে একটি সাধারণ উদাহরণ: http://sqlfiddle.com/#!3/67af4/1

CREATE TABLE TestTable (
    Column1 INT,
    Column2 VARCHAR(255)
);
GO

insert into TestTable values(1, 'Test1');
insert into TestTable values(2, 'Test2');
GO

select * from TestTable;
GO

ALTER TABLE TestTable ADD Column2_NEW VARCHAR(255);
ALTER TABLE TestTable ADD Column1_NEW INT;
GO

update TestTable 
set Column1_NEW = Column1, 
    Column2_NEW = Column2;
GO

ALTER TABLE TestTable DROP COLUMN Column1;
ALTER TABLE TestTable DROP COLUMN Column2;
GO

sp_rename 'TestTable.Column1_NEW', 'Column1', 'COLUMN';
GO
sp_rename 'TestTable.Column2_NEW', 'Column2', 'COLUMN';
GO

select * from TestTable;
GO

1
আমি একটি সঞ্চিত প্রক্রিয়া লিখেছি যা অনুরূপ কিছু করে। এটি গতিশীল এসকিউএল ব্যবহার করে টেবিল পুনর্নির্মাণটি স্বয়ংক্রিয় করে। কেসইপ্লুমার.ওয়ার্ডপ্রেস.কম
ক্যাসি প্লামার

6

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে:

Tools-> Options->Designers ->Table and Database Designers

নির্বাচন মুক্ত করুন Prevent saving changes that require table re-creation

এখন আপনি টেবিলটি পুনরায় অর্ডার করতে পারেন।


2

স্কেল সার্ভার অভ্যন্তরীণভাবে স্ক্রিপ্টটি তৈরি করে। এটি নতুন পরিবর্তনগুলির সাথে একটি অস্থায়ী টেবিল তৈরি করে এবং ডেটা অনুলিপি করে এবং বর্তমান টেবিলটি ফেলে দেয় তবে টেম্প টেবিল থেকে সারণী সন্নিবেশটি পুনরায় তৈরি করে। আমি এটি "জেনারেট চেঞ্জ স্ক্রিপ্ট" বিকল্প এসএমএস 2014 থেকে পেয়েছি Script স্ক্রিপ্ট এর মতো। এখান থেকে : এসকিএল কোয়েরি ব্যবহার করে কোনও সারণীতে কলাম ক্রম কীভাবে পরিবর্তন করবেন

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_emps
    (
    id int NULL,
    ename varchar(20) NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_emps SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.emps)
     EXEC('INSERT INTO dbo.Tmp_emps (id, ename)
        SELECT id, ename FROM dbo.emps WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.emps
GO
EXECUTE sp_rename N'dbo.Tmp_emps', N'emps', 'OBJECT' 
GO
COMMIT

1

যদি আপনার টেবিলটিতে পর্যাপ্ত কলাম থাকে তবে আপনি এটি চেষ্টা করতে পারেন। প্রথমে কলামগুলির পছন্দের ক্রম সহ একটি নতুন টেবিল তৈরি করুন।

    create table new as select column1,column2,column3,....columnN from table_name;

ড্রপ কমান্ড ব্যবহার করে টেবিলটি ফেলে দিন

    drop table table_name;

এখন নতুন তৈরি করা টেবিলটির নাম পরিবর্তন করে আপনার পুরানো টেবিলের নাম দিন।

    rename new to table_name;

এখন টেবিলটি নির্বাচন করুন, আপনার কলামগুলি আগের পছন্দ অনুযায়ী পুনরায় সাজানো হয়েছে।

    select * from table_name;

এটি নতুন টেবিল তৈরি করার মতো, বিদ্যমান টেবিল থেকে নতুনটিতে ডেটা অনুলিপি করা, পুরানোটি মুছুন এবং নতুনটির নামকরণ করুন। সুতরাং কঠোরভাবে বলতে গেলে, এটি টেবিলের কলাম ক্রম পরিবর্তন করছে না। এটি পুরানো সারণী থেকে কপিগুলি তৈরি / তৈরি করার সাথে সাথে বিশাল টেবিলগুলির জন্য এটি সময় নেয়। সর্বশেষে তবে সর্বনিম্ন নয়, প্রস্তাবিত বাক্য গঠনটি টি-স্কেলে কাজ করে না।
জিন-

0

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

উপসংহারে: যদি এমন কোনও অ্যাপ্লিকেশন থাকে যা কলামের ক্রমের উপর নির্ভর করে তবে এটি সত্যই ভাল প্রোগ্রামিং নয় এবং ভবিষ্যতে অবশ্যই সমস্যা তৈরি করবে। কলামগুলি যে কোনও জায়গায় নিখরচায় 'বোধ করা' উচিত এবং যেকোন ডেটা প্রক্রিয়া (ইনসার্ট, আপডেট, নির্বাচন) ব্যবহার করা উচিত।


0

আপনি এই পদক্ষেপগুলি দিয়ে এটি অর্জন করতে পারেন:

  1. সমস্ত বিদেশী কী এবং মূল টেবিলের প্রাথমিক কী সরিয়ে ফেলুন।

  2. মূল টেবিলটির নতুন নাম দিন।

  3. সিটিএএস ব্যবহার করে আপনি চান ক্রমে মূল টেবিল তৈরি করুন।

  4. পুরানো টেবিলটি ফেলে দিন।

  5. সমস্ত সীমাবদ্ধতাগুলি মূল টেবিলটিতে ফিরে যান


0

যদি কলামগুলি পুনঃক্রম করতে হয় তবে সম্প্রতি তৈরি করা হয়েছে এবং খালি থাকলে কলামগুলি মুছে ফেলা যায় এবং সঠিক ক্রমে পুনরায় যুক্ত করা যেতে পারে।

আমার সাথে এটি ঘটেছিল, নতুন কার্যকারিতা যুক্ত করার জন্য ম্যানুয়ালি একটি ডাটাবেস বাড়িয়েছিলাম এবং আমি একটি কলামটি মিস করেছি এবং আমি এটি যুক্ত করার পরে ক্রমটি ভুল ছিল।

এখানে পর্যাপ্ত সমাধানের সন্ধান করার পরে আমি নিম্নলিখিত ধরণের কমান্ড ব্যবহার করে কেবল টেবিলটি সংশোধন করেছি।

ALTER TABLE  tablename  DROP COLUMN  columnname; 
ALTER TABLE  tablename  ADD columnname columntype;

দ্রষ্টব্য: আপনি যদি কলামগুলিতে ফেলে যাচ্ছেন এমন ডেটা না থাকলে কেবল এটি করুন only

লোকেরা বলেছে যে কলামের অর্ডার তাতে কিছু যায় আসে না। ডেটাবেসের স্কিমার একটি পাঠ্য সংস্করণ তৈরি করতে আমি নিয়মিত এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও "জেনারেট স্ক্রিপ্ট" ব্যবহার করি। এই স্ক্রিপ্টগুলি (গিট) এর কার্যকরভাবে সংস্করণ নিয়ন্ত্রণ করতে এবং সেগুলি (উইনমার্গ) তুলনা করার জন্য, এটি জরুরী যে সামঞ্জস্যপূর্ণ ডাটাবেসগুলি থেকে আউটপুট একই হয় এবং হাইলাইট করা পার্থক্য হ'ল আসল ডাটাবেস পার্থক্য।

কলামের আদেশে কিছু যায় আসে না; তবে কিছু লোকের কাছে, সবার কাছে নয়!


0

আমি মনে করি আপনি একটি নির্দিষ্ট অবস্থানে একটি নতুন কলাম যুক্ত করতে চান। আপনি ডানদিকে বর্তমান কলামগুলি সরিয়ে একটি নতুন কলাম তৈরি করতে পারেন।

+---+---+---+
| A | B | C |
+---+---+---+

সমস্ত প্রভাবিত সূচক এবং বিদেশী কী উল্লেখগুলি সরান। সর্বশেষ কলামের মতো ঠিক একই ডেটা টাইপের সাথে একটি নতুন কলাম যুক্ত করুন এবং সেখানে ডেটা অনুলিপি করুন।

+---+---+---+---+
| A | B | C | C |
+---+---+---+---+
          |___^

পূর্ববর্তী কলামের মতো তৃতীয় কলামের ডেটা ধরণের একই ধরণের পরিবর্তন করুন এবং সেখানে ডেটা অনুলিপি করুন।

+---+---+---+---+
| A | B | B | C | 
+---+---+---+---+
      |___^

সেই অনুযায়ী কলামগুলির নাম পরিবর্তন করুন, সরানো সূচি এবং বিদেশী কী উল্লেখগুলি পুনরায় তৈরি করুন।

+---+---+---+---+
| A | D | B | C | 
+---+---+---+---+

দ্বিতীয় কলমের ডাটা টাইপ পরিবর্তন করুন।

মনে রাখবেন যে কলামের আদেশটি কেবল "কসমেটিক" জিনিস যা মার্ক_স বলেছেন


-1

ব্যবহার

SELECT * FROM TABLE1

যা টেবিলের ডিফল্ট কলাম অর্ডার প্রদর্শন করে।

আপনি যদি কলামগুলির ক্রম পরিবর্তন করতে চান।

অনুরূপভাবে প্রদর্শন করতে কলামের নাম উল্লেখ করুন

SELECT COLUMN1, COLUMN5, COLUMN4, COLUMN3, COULMN2 FROM TABLE1

প্রশ্নটি অস্থায়ী আদেশের বিষয়ে নয়। আপনি যখন টেবিল পরিবর্তন করেন এবং নতুন কলাম যুক্ত করেন তখন প্রশ্নটি সারণী নকশা কাঠামো সম্পর্কে।
বিকাশ চতুর্বেদী

-1

আপনি ইনডেক্সিং ব্যবহার করতে পারেন .. সূচিকরণের পরে, যদি XXXX থেকে ফলাফল নির্বাচন করা হয় তবে সূচী অনুসারে ফলাফলগুলি হওয়া উচিত, তবে কেবল ফলাফল সেট .. টেবিলের কাঠামো নয়


-1

আপনি এসকিউএল কোয়েরি ব্যবহার করে এটি পরিবর্তন করতে পারেন। কলামের ক্রম পরিবর্তন করতে এখানে বর্গ কোয়েরি রয়েছে।

ALTER TABLE table name 
CHANGE COLUMN `column1` `column1` INT(11) NOT NULL COMMENT '' AFTER `column2`;

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

এই কার্যকারিতাটি এসকিউএল সার্ভারে কাজ করে না যেমন ওপি দ্বারা নির্দিষ্ট করা হয়েছিল। এটা করতে চান।
বিল

1
এটি মাইএসকিউএল সিনট্যাক্স, এসকিউএল সার্ভার নয়।
জন স্নাইডার

-1

নির্দিষ্ট কলামের অর্ডার পেতে আপনার ইচ্ছামতো ক্রম অনুসারে কলামটি কলাম দ্বারা নির্বাচন করতে হবে। নির্বাচনের অর্ডার আউটপুটে কলামগুলি কীভাবে অর্ডার করা হবে তা নির্দেশ করে।


-1

এই আদেশটি ব্যবহার করে দেখুন:

alter table students modify age int(5) first; 

এটি বয়সের অবস্থানকে প্রথম অবস্থানে পরিবর্তন করবে।


এটি এমএসএসকিউএলে কোনও বৈধ এসকিউএল নয়। মাইএসকিউএল বা অন্য কোনও উপভাষা হতে পারে তবে এসকিউএল সার্ভার ২০০৫-এর জন্য নয়
nsimeonov

-2

টেবিলের নাম পরিবর্তন করুন কলামনাম ইন্ট (5) প্রথমে পরিবর্তন করুন; টেবিলের নামটি প্রথমে পরিবর্তনের টেবিলের নাম কলামটি আনবে (টেবিলের নাম) পরে কলাম নাম (5) পরিবর্তন করুন;


-3

উদাহরণ: সারণী স্থিতিতে ক্ষেত্রের_পরের পরে ক্ষেত্রের_পরিচিতির অবস্থান পরিবর্তন করুন।

ALTER TABLE `status` CHANGE `priority` `priority` INT(11) NULL DEFAULT NULL AFTER `price`;

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