列プロパティの変更

テーブル内の各列には、名前、データ型、NULL 値許容属性、データ長などのプロパティがあります。各列の定義はこれらのプロパティを合わせて構成されています。

列データ型

既存の列のデータ型は変更できますが、その列にある既存のデータが新しいデータ型に暗黙的に変換できることが条件です。詳細については、「ALTER TABLE (Transact-SQL)」を参照してください。

列のデータ長

データ型を選択すると、データ長が自動的に定義されます。長さのプロパティは、データ型が binary、char、nchar、varbinary、varchar、または nvarchar の列の場合にのみ値を増減できます。この他のデータ型の場合は、データ長がデータ型に基づいて決められているので変更することはできません。変更後のデータ長が元のデータ長より短い場合は、変更後のデータ長を超える列内の値はすべて切り詰められます。このとき、警告は生成されません。PRIMARY KEY 制約または FOREIGN KEY 制約で定義されている列の長さは変更できません。

列の有効桁数

数値列の有効桁数とは、選択したデータ型で使用する最大桁数です。数値列以外の列の有効桁数は、一般に、その列の最大長または定義長のどちらかのことを指します。

decimal 型および numeric 型以外のすべてのデータ型列では、自動的に有効桁数が定義されます。decimal 型列および numeric 型列の有効桁数は、これらの列で使用する最大桁数を再定義する場合、変更できます。SQL Server データベース エンジンでは、これらのデータ型のどちらかが指定されていない列の有効桁数は変更できません。

列の小数点以下桁数

numeric 型列または decimal 型列の小数点以下桁数とは、小数点の右側の最大桁数です。データ型を選択するとき、既定では列の小数点以下桁数は 0 に設定されます。浮動小数点概数を含む列の場合、小数点の右側の桁数が固定されていないため、小数点以下桁数は不定です。numeric 型列または decimal 型列の小数点以下桁数は、小数点の右側に表示できる桁数を再定義する場合、変更できます。

列の NULL 値許容属性

列で NULL 値を許容するかどうかを定義できます。既定では、NULL 値を許容するように定義されます。既存の列の定義を変更して、NULL 値を禁止できるのは、その列に現在 NULL 値がなく、インデックスが作成されていないときだけです。現在 NULL 値がある既存の列を NULL 値を許容しないように定義するには、次の手順に従います。

  1. 新しい列を追加し、NULL 値の代わりに有効な値を挿入する DEFAULT 定義をその列に指定します。

  2. 古い既存の列のデータを新しい列にコピーします。

  3. 古い列を削除します。

NULL 値を許容しない既存の列に PRIMARY KEY 制約が定義されていなければ、その列は NULL 値を許容するように変更できます。

スパース列と列セット

スパース列は、テーブルのほとんどの行で NULL 値が格納されている列です。列の値の 20 ~ 40% が NULL となる場合は、スパース列の使用を検討してください。スパース列は、NULL 値用にストレージが最適化されている通常の列です。詳細については、「スパース列の使用」を参照してください。

スパース列を使用するテーブルでは、テーブル内のすべてのスパース列を返すための列セットを指定できます。列セットは、型指定されていない XML 表記であり、テーブルのすべてのスパース列を 1 つにまとめて構造化した出力です。列セットは、テーブルに物理的に保存されないという点で計算列に似ています。詳細については、「列セットの使用」を参照してください。

列のプロパティを設定するには

列のプロパティを表示するには

列の名前を変更するには