ALTERステートメントの列部分を削除するためにMicrosoftが指定した構文は、次のとおりです。
DROP
{
[ CONSTRAINT ]
{
constraint_name
[ WITH
( <drop_clustered_constraint_option> [ ,...n ] )
]
} [ ,...n ]
| COLUMN
{
column_name
} [ ,...n ]
} [ ,...n ]
[、... n]は、列名の後とドロップ句全体の最後の両方に表示されることに注意してください。つまり、複数の列を削除するには2つの方法があります。あなたはこれを行うことができます:
ALTER TABLE TableName
DROP COLUMN Column1, Column2, Column3
またはこれ
ALTER TABLE TableName
DROP
COLUMN Column1,
COLUMN Column2,
COLUMN Column3
この2番目の構文は、列のドロップと制約のドロップを組み合わせる場合に役立ちます。
ALTER TBALE TableName
DROP
CONSTRAINT DF_TableName_Column1,
COLUMN Column1;
列を削除する場合、SQL Severは、削除された列が占めるスペースを再利用しません。行にインラインで格納されるデータ型(intなど)の場合、alterステートメントの後に追加された新しい行で領域を占有することさえあります。これを回避するには、テーブルにクラスター化インデックスを作成するか、クラスター化インデックスが既にある場合はクラスター化インデックスを再構築する必要があります。テーブルを変更した後、REBUILDコマンドを使用してインデックスを再構築できます。ただし、非常に大きなテーブルではこれが遅くなる可能性があることに注意してください。例えば:
ALTER TABLE Test
REBUILD;