新しいテーブルを作成します。
メモ Microsoft Jet データベース エンジンは、Microsoft Jet データベース以外のデータベースでは CREATE TABLE 句や DDL (データ定義言語) ステートメントを使用できません。Microsoft Jet データベース以外のデータベースでは代わりに DAO の Create 系メソッドを使用してください。
CREATE [TEMPORARY] TABLE table (field1 type [(size)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]][, CONSTRAINT multifieldindex [, ...]])
CREATE TABLE ステートメントには、次の指定項目があります。
| 指定項目 | 内容 |
|---|---|
| table | 作成するテーブルの名前。 |
| field1、field2 | 新しいテーブルに作成するフィールドの名前。少なくとも 1 つのフィールドを作成する必要があります。 |
| type | 新しいテーブルに作成する引数 field のデータ型。 |
| size | バイト数で表したフィールド サイズ。テキスト型 (Text) およびバイナリ型 (Binary) フィールドのみ指定します。 |
| index1、index2 | 単一フィールドを定義する CONSTRAINT 句。このインデックスの作成方法の詳細については、「CONSTRAINT 句」を参照してください。 |
| multifieldindex | 複数フィールドを定義する CONSTRAINT 句。このインデックスの作成方法の詳細については、「CONSTRAINT 句」を参照してください。 |
CREATE TABLE ステートメントを使用すると、新しいテーブルとそのフィールド、およびフィールドの制約を定義できます。フィールドに対して NOT NULL を指定した場合、フィールドには新しいレコードが有効なデータとして必要になります。
CONSTRAINT 句はフィールドに対してさまざまな制約を設定するもので、これを使用して主キーを設定することができます。また、CREATE INDEX ステートメントを使用して、既存のテーブルに主キーまたは追加のインデックスを作成することもできます。
NOT NULL は、単一フィールド、または名前付き CONSTRAINT 句の内部で使用できます。名前付き CONSTRAINT 句は、単一フィールドまたは複数フィールドのどちらかの名前付き CONSTRAINT 句に適用されます。ただし、NOT NULL の制約を適用できるのはフィールドに対して一度のみです。再度適用しようとした場合は実行時エラーになります。
一時テーブルが作成される場合、作成されたセッションの中でのみ見ることができます。セッションが終了すると、自動的に削除されます。一時テーブルは、複数のユーザーからアクセスすることができます。
WITH COMPRESSION 属性には、テキスト型 (Text) であるメモ型 (Memo) や文字型 (Character) のおよび類似のデータ型のみ使用できます。
Unicode 文字の表示形式に変更するために、WITH COMPRESSION 属性が CHARACTER 列に追加されました。Unicode 文字には、各文字一律に 2 バイトを必要とします。これは、主に文字データを含む既存の Microsoft® Jet データベースにとって、Microsoft Jet 4.0 の形式にデータベースを変換すると、大きさの点でほとんど 2 倍になることを意味します。しかし、Unicode 表示形式の文字セットの多くは、以前 1 バイトの文字セット (SBCS) であり、簡単に 1 バイトに圧縮することが可能です。CHARACTER 列をこの属性で定義すると、データは、自動的に格納時に圧縮され取得時に圧縮解除されるようになります。
MEMO 列もデータの格納を圧縮形式で定義することができます。ただし、これには制限があります。圧縮時 4096 バイト以下になる MEMO 列のインスタンスのみ圧縮されます。それ以外の MEMO 列のインスタンスは圧縮されずに残ります。これは、所定のテーブルの所定の MEMO 列で、圧縮されたデータと圧縮されていないデータが混在しているかもしれないことを意味します。
CREATE TABLE ステートメント、CONSTRAINT 句の使用例