ALTER TABLE ステートメント (Microsoft Access SQL)
適用先: Access 2013、Office 2013
CREATE TABLE ステートメントで作成されたテーブルのデザインを変更します。
注:
[!メモ] Microsoft Access データベース エンジンは、Microsoft Access データベース以外のデータベースの ALTER TABLE または DDL (データ定義言語) ステートメントをサポートしません。 代わりに、DAO の Create メソッドをご使用ください。
構文
ALTER TABLE テーブル {ADD {COLUMN フィールド型[(size)] [NOT NULL] [CONSTRAINT index] |ALTER COLUMN フィールドの種類[(size)] |CONSTRAINT multifieldindex} |DROP {COLUMN フィールド I CONSTRAINT indexname} } }
ALTER TABLE ステートメントでは、次の引数を使用します。
パーツ |
説明 |
---|---|
table |
変更されるテーブルの名前です。 |
field |
table に対して追加または削除されるフィールドの名前です。 または、table で変更されるフィールドの名前です。 |
type |
field のデータ型です。 |
size |
文字数単位のフィールド サイズです (テキスト型とバイナリ型のフィールドのみ)。 |
index |
field のインデックスです。 このインデックスの作成方法については、「CONSTRAINT 句」を参照してください。 |
multifieldindex |
table に追加される複数フィールド インデックス定義です。 このインデックスの作成方法については、「CONSTRAINT 句」を参照してください。 |
indexname |
削除される複数フィールド インデックスの名前です。 |
注釈
ALTER TABLE ステートメントを使用すると、いくつかの方法で既存のテーブルを変更できます。 以下のことが実行できます。
テーブルに新しいフィールドを追加するには、ADD COLUMN 句を使用します。 フィールド名およびデータ型を指定し、テキスト型フィールドとバイナリ型フィールドの場合はサイズ (省略可) も指定します。 たとえば、次のステートメントにより、"Notes" という名前の 25 バイトのテキスト型フィールドが Employees テーブルに追加されます。
ALTER TABLE Employees ADD COLUMN Notes TEXT(25)
そのフィールドにインデックスを定義することもできます。 単一フィールド インデックスの詳細については、「CONSTRAINT 句」を参照してください。
フィールドに対して NOT NULL を指定した場合、フィールドには新しいレコードが有効なデータとして必要になります。
既存のフィールドのデータ型を変更するには、ALTER COLUMN 句を使用します。 フィールド名および新しいデータ型を指定し、テキスト型フィールドとバイナリ型フィールドの場合はサイズ (省略可) も指定します。 たとえば、次のステートメントでは、Employees テーブルにある "ZipCode" という名前のフィールドのデータ型を整数型から 10 バイトのテキスト型に変更します。
ALTER TABLE Employees ALTER COLUMN ZipCode TEXT(10)
複数フィールド インデックスを追加するには、ADD CONSTRAINT を使用します。 複数フィールド インデックスの詳細については、「CONSTRAINT 句」を参照してください。
フィールドを削除するには、DROP COLUMN 句を使用します。 フィールド名のみを指定します。
複数フィールド インデックスを削除するには、DROP CONSTRAINT 句を使用します。 予約語 CONSTRAINT の後にインデックス名のみを指定します。
注:
- 同時に複数のフィールドまたはインデックスを追加または削除することはできません。
- CREATE INDEX ステートメントを使用すると、単一フィールド インデックスまたは複数フィールド インデックスをテーブルに追加できます。また、ALTER TABLE ステートメントや CREATE INDEX ステートメントで作成したインデックスは、ALTER TABLE ステートメントまたは DROP ステートメントを使用して削除できます。
- NOT NULL を 1 つのフィールドまたは名前付きの CONSTRAINT 句内で使用し、CONSTRAINT という名前の 1 つのフィールドまたは複数のフィールドに適用することができます。 ただし、フィールドに NOT NULL 制限を 1 回だけ適用することができます。 この制限を複数回実行しようすると、実行時エラーになります。
例
次の使用例では、データ型が通貨型 ( Money ) である Salary フィールドを Employees テーブルに追加します。
Sub AlterTableX1()
Dim dbs As Database
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Add the Salary field to the Employees table
' and make it a Money data type.
dbs.Execute "ALTER TABLE Employees " _
& "ADD COLUMN Salary MONEY;"
dbs.Close
End Sub
次の使用例では、Salary フィールドのデータ型を通貨型 ( Money ) から文字型 ( Char ) に変更します。
Sub AlterTableX2()
Dim dbs As Database
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Modify the existing Salary field of the Employees table
' by changing it to a CHAR data type.
dbs.Execute "ALTER TABLE Employees " _
& "ALTER COLUMN Salary CHAR(20);"
dbs.Close
End Sub
次の使用例では、Salary フィールドを Employees テーブルから削除します。
Sub AlterTableX3()
Dim dbs As Database
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Delete the Salary field from the Employees table.
dbs.Execute "ALTER TABLE Employees " _
& "DROP COLUMN Salary;"
dbs.Close
End Sub
次の使用例は、外部キーを Orders テーブルに追加します。 外部キーは EmployeeID フィールドに基づいており、Employees テーブルの EmployeeID フィールドを参照します。 この例では、EmployeesID は Employees テーブルの主キーであるため、REFERENCES 句の Employees テーブルの後に EmployeeID フィールドを一覧表示する必要はありません。
Sub AlterTableX4()
Dim dbs As Database
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Add a foreign key to the Orders table.
dbs.Execute "ALTER TABLE Orders " _
& "ADD CONSTRAINT OrdersRelationship " _
& "FOREIGN KEY (EmployeeID) " _
& "REFERENCES Employees (EmployeeID);"
dbs.Close
End Sub
次の使用例では、外部キーを Orders テーブルから削除します。
Sub AlterTableX5()
Dim dbs As Database
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Remove the OrdersRelationship foreign key from
' the Orders table.
dbs.Execute "ALTER TABLE Orders " _
& "DROP CONSTRAINT OrdersRelationship;"
dbs.Close
End Sub