CREATE TABLE ステートメントで作成されたテーブルのデザインを変更します。
メモ Microsoft Jet データベース エンジンは、Microsoft Jet データベース以外のデータベースでは ALTER TABLE ステートメントや DDL (データ定義言語) ステートメントを使用できません。Microsoft Jet データベース以外のデータベースでは代わりに DAO の Create 系メソッドを使用してください。
ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
ALTER COLUMN field type[(size)] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }
ALTER TABLE ステートメントには、次の指定項目があります。
| 指定項目 | 内容 |
|---|---|
| table | 変更するテーブルの名前。 |
| field | 引数 table に追加する、または引数 table から削除するフィールドの名前。あるいは、table で変更されるフィールドの名前。 |
| type | 引数 field のデータ型。 |
| size | バイト数で表したフィールド サイズ。テキスト型 (Text) およびバイナリ型 (Binary) フィールドのみ指定します。 |
| index | 引数 field のインデックス。このインデックスの構成方法の詳細については、「CONSTRAINT 句」を参照してください。 |
| multifieldindex | 引数 table に追加する複数フィールド インデックスの定義。このインデックスの構成方法の詳細については、「CONSTRAINT 句」を参照してください。 |
| indexname | 削除する複数フィールド インデックスの名前。 |
ALTER TABLE ステートメントを使用すると、次の方法で既存のテーブルを変更できます。
テーブルに新しいフィールドを追加するには、ADD COLUMN 句を使用します。フィールド名およびデータ型を指定し、テキスト型 (Text) フィールドとバイナリ型 (Binary) フィールドの場合はサイズ (省略可) も指定します。たとえば、次のステートメントでは [社員] テーブルに "メモ" という名前の 25 バイトのテキスト型 (Text) フィールドが追加されます。
ALTER TABLE 社員 ADD COLUMN メモ TEXT(25)
追加したフィールドにインデックスを定義することもできます。単一フィールド インデックスの詳細については、「CONSTRAINT 句」を参照してください。
フィールドに対して NOT NULL を指定した場合、フィールドには新しいレコードが有効なデータとして必要になります。
既存のフィールドのデータ型を変更するには、ALTER COLUMN 句を使用します。フィールド名および新しいデータ型を指定し、テキスト型 (Text) フィールドとバイナリ型 (Binary) フィールドの場合はサイズ (省略可) も指定します。たとえば、次のステートメントでは、[社員] テーブルにある "郵便番号" という名前のフィールドのデータ型を整数型 (Integer) から 10 バイトのテキスト型 (Text) に変更します。
ALTER TABLE 社員 ALTER COLUMN 郵便番号 TEXT(10)
複数フィールド インデックスを追加するには、ADD CONSTRAINT 句を使用します。複数フィールド インデックスの詳細については、「CONSTRAINT 句」を参照してください。
フィールドを削除するには、DROP COLUMN 句を使用します。フィールド名のみを指定します。
複数フィールド インデックスを削除するには、DROP CONSTRAINT 句を使用します。予約語 CONSTRAINT の後にインデックス名のみを指定します。
メモ
一度に複数のフィールドおよびインデックスを追加または削除することはできません。
CREATE INDEX ステートメントを使用すると、単一フィールド インデックスまたは複数フィールド インデックスをテーブルに追加できます。また、ALTER TABLE ステートメントや CREATE INDEX ステートメントで作成したインデックスは、ALTER TABLE ステートメントまたは DROP ステートメントを使用して削除できます。
NOT NULL は、単一フィールド、または名前付き CONSTRAINT 句の内部で使用できます。名前付き CONSTRAINT 句は、単一フィールドまたは複数フィールドのどちらかの名前付き CONSTRAINT 句に適用されます。ただし、NOT NULL の制約を適用できるのはフィールドに対して一度のみです。再度適用しようとした場合は実行時エラーになります。