はじめに
テーブルは2次元の論理構造であり、リレーショナルデータベース管理システムにデータを格納するための基本的な手段です。その「行と列」の形式は、スプレッドシートの構成に非常によく似ています。
テーブルに導入された新しい各レコードは行(レコードまたはタプルとも呼ばれます)ですが、行は有限の列のセット(フィールドまたは属性とも呼ばれます)にグループ化されます。各列には名前とデータ型があり、リレーショナルデータベースシステムからデータをクエリするときに結果セットを表示するための参照として機能します。
この記事では、SQLServerデータベースの既存のテーブルに新しい列を追加できる現在のオプションについて説明します。ユースケースは多くの場合に発生する可能性があります。特に、アプリケーションの更新があり、新しい列の追加を要求する場合に発生します。

テーブルを作成する
一連の短い実験を開始するために、ある会社に関する基本情報を含む4つの列を持つ小さなテーブルを作成しましょう。
-- Listing 1: Create New Table ntab
use AU
go
create table ntab (
ID INT identity (1,1)
, CompanyName varchar(100)
, CompanyAddress varchar(200)
, DateofIncorporation datetime
);
単一の列を追加
ntabに単一の列を追加するには テーブルでは、リスト2に示すコードを実行します。結果は、図1に示すように、5列のテーブルになります。 sp_columns を使用して、テーブルに関するこのメタデータを生成しました。 ストアドプロシージャ。
-- Listing 2: Add ManagingDirector Column to Empty Table
alter table ntab add ManagingDirector varchar(50);
exec sp_columns ntab;

リスト3のコードを使用して、新しいテーブルに1000行を入力します。
-- Listing 3: Add Column to Empty Table
insert into ntab values ('Simplex Technologies','Plot 121 Nova Ridge II, Appolonia City','20201023','Kenneth Igiri');
GO 1000
次に、別の列 TaxIdentityNumberを追加します –明らかなパフォーマンスのオーバーヘッドなしでこれを成功させることができます:
-- Listing 4: Add Column to Populated Table
alter table ntab add TaxIdentityNumber varchar(20);
exec sp_columns ntab;
複数の列を削除または追加 ALTERTABLEコマンドを使用する
1つのステートメントで、列を削除または追加することもできます。重要:データを含むテーブルから列を削除すると、データがすぐに失われます。確かに、本番環境でいじくり回すコマンドではありません。
ALTER TABLEコマンドは、TRUNCATEに似たデータ定義言語(DDL)コマンドです。操作はトランザクションログにキャプチャされないため、ロールバックすることはできません。本番環境でそれを行う理由がある場合は、前の状態にフォールバックできるようにバックアップを作成する必要があります。
-- Listing 5: Drop Column from Table
alter table ntab drop column ManagingDirector, TaxIdentityNumber;
alter table ntab add ManagingDirector varchar(50), TaxIdentityNumber varchar(20);
select * from ntab;
重要:インデックスのある列を削除しようとすると、エラーが返されます(画像を参照)。まず、インデックスをバックアップして削除する必要があります。



GUIの使用–テーブルデザイナー
先に進む前に、最新のSQL ServerManagementStudioバージョンを使用していることを確認する必要があることに注意してください。データベースのバージョンとSSMSのバージョンが一致しない場合は、次のエラーが発生します。

テーブル構造を変更するには、SSMSでテーブルデザイナを開きます。テーブルを右クリックして、[デザイン]をクリックします。

ntabが表示されます テーブルの詳細:

Table Designerで、追加する列の名前を追加し、必要に応じてデータ型とnull可能性を指定します。

完了したら、使用可能なオプションのいずれかを使用してテーブルを保存します。たとえば、SSMSバーメニューで使用可能なオプションを参照してください。

SQL Server Management Studioの設定が1つあり、新しく追加された列を含むテーブルを保存できない場合があります。この設定を無効にする必要がある場合があります:
ツール>オプション>デザイナ>テーブルおよびデータベースデザイナ

バックグラウンドで、SQL Serverは前に示したのと同じSQLを実行します(リスト5)。 SQLプロファイラーを使用してこれを抽出しました。拡張イベントでも同じデータを取得できます:

完了すると、以前と同じ結果が表示されます。

dbForge Studio for SQL Server
Devart社のdbForgeStudiofor SQL Serverは、SQLServerと対話するための堅牢な機能インターフェイスを提供します。ソリューションはSSMSに似ているため、操作が簡単です。 SQL Serverインスタンスにシームレスに接続し、ユーザーがSQLServerオブジェクトをスムーズに操作できるようにします。 ExpressEditionはこちらからダウンロードできます。 。
dbForge Studioでテーブルを変更するには、そのテーブルを右クリックして詳細なプロパティを表示します。

SQLServerのテーブルデザイナで行うのと同じ方法で新しい列を追加します。ただし、テーブルDDLを含め、テーブルに表示される詳細レベルに注意してください。 SSMSで利用できるものよりもはるかに堅牢です。

dbForge Studioは、SQL ServerManagementStudioと同じルールに従ってテーブルに列を追加します。列を追加するとすぐに、テーブルのDDLが更新されます。ただし、変更を保持するには[保存]をクリックする必要があります:

結論
この記事では、SQL Serverの既存のテーブルにデータが含まれているかどうかに関係なく、そのテーブルに列を追加するために使用できる方法について説明しました。
また、テーブルにデータがある場合に列を削除した場合の影響についても説明しました。 ALTERTABLEコマンドはDDLコマンドであることを指摘しました。ログはなく、パフォーマンスへの重大な影響もありません。テーブルデザイナを使用して、列リストの最後ではなく、既存の列の間に列を挿入します。
また、Devart dbForgeStudio2019の機能についても確認しました。このタスクや他の同様のタスクのためのはるかに堅牢で便利なインターフェースを備えています。また、SQLServerデータベース管理をはるかに簡単にする他の多くの機能を提供することもできます。
参照
- ALTERTABLEコマンドのパフォーマンスへの影響
- T-SQLでテーブルを変更する
- dbForge Studio forSQLServerのテーブルデザイナ機能