テーブルはリレーショナル データベースの主要な構成要素です。 テーブルにはデータの行 (レコード) が含まれ、各行は有限数の列 (フィールド) で構成されます。 Access SQL を使用して Access で 新しいテーブルを作成するには、テーブルおよびフィールドの名前を指定し、フィールドに格納するデータの型を定義する必要があります。 CREATE TABLE ステートメントを使用して、SQL でテーブルを定義します。 たとえば、請求処理用のデータベースを作成すると仮定します。 最初のステップは、初期の顧客テーブルを作成することです。
CREATE TABLE tblCustomers
(CustomerID INTEGER,
[Last Name] TEXT(50),
[First Name] TEXT(50),
Phone TEXT(10),
Email TEXT(50))
テーブルの作成および削除を行うときは、次の問題に注意してください。
- フィールド名にスペースまたはその他の英数字以外の文字が含まれる場合、フィールド名を角かっこ ([ ]) で囲む必要があります。
- テキスト フィールドの長さを宣言しない場合、既定では 255 文字になります。 必ずフィールドの長さを定義して、一貫性を保ち、コードを読みやすくするようにしてください。
フィールドを NOT NULL として宣言できます。つまり、null 値をその特定のフィールドに挿入することはできません。値は常に必要です。 null 値は、空の文字列または 0 の値と混同しないでください。これは、単に不明な値のデータベース表現です。
CREATE TABLE tblCustomers
(CustomerID INTEGER NOT NULL,
[Last Name] TEXT(50) NOT NULL,
[First Name] TEXT(50) NOT NULL,
Phone TEXT(10),
Email TEXT(50))
データベースからテーブルを削除するには、 DROP TABLE ステートメントを使用します。
DROP TABLE tblCustomers
インデックスの作成と削除
インデックスは、テーブル内のデータへのポインターの並べ替えや配置を行うときに使われる外部データ構造です。 テーブルにインデックスを適用することは、データにより高速にアクセスできるように、データの特定の配置を指定することを意味します。 ただし、テーブルに多くのインデックスを適用しすぎると、インデックスの管理に余分なオーバーヘッドが必要になったり、マルチユーザー環境での使用時にインデックスによってロックに関する問題が発生する可能性があるため、かえってパフォーマンスが低下する場合があります。 適切な状況下で使用すれば、インデックスはアプリケーションのパフォーマンスを大きく向上させることができます。
テーブルのインデックスを作成するには、インデックスの名前、インデックスを作成するテーブルの名前、テーブル内で使用する 1 つ以上のフィールド、および使用するオプションを指定する必要があります。 CREATE INDEX ステートメントを使用してインデックスを作成します。 たとえば、次のコードを使用すると、前の例で挙げた請求処理用データベース内の顧客テーブルに対してインデックスを作成できます。
CREATE INDEX idxCustomerID
ON tblCustomers (CustomerID)
インデックス フィールドは昇順 (ASC) または降順 (DESC) のどちらかの方法で並べ替えることができます。 既定の並べ替え順序は昇順であり、この場合、宣言する必要はありません。 昇順を使用する場合、データは 1 が先頭、100 が末尾になるようにして並べ替えられます。 降順を指定すると、データは 100 が先頭、1 が末尾になるように並べ替えられます。 並べ替え順序はインデックス内のフィールドごとに宣言することをお勧めします。
CREATE INDEX idxCustomerID
ON tblCustomers (CustomerID DESC)
インデックスで使用できるメイン オプションには、PRIMARY、DISALLOW NULL、IGNORE NULL、および UNIQUE の 4 つがあります。 PRIMARY オプションは、インデックスをテーブルに対する主キーとして指定します。 各テーブルに対して定義できる主キー インデックスは 1 つだけですが、複数のフィールドで主キー インデックスを宣言することができます。 インデックス オプションは WITH キーワードを使って宣言します。
CREATE INDEX idxCustomerID
ON tblCustomers (CustomerID)
WITH PRIMARY
複数のフィールドで主キー インデックスを作成するには、フィールド リストにすべてのフィールド名を追加します。
CREATE INDEX idxCustomerName
ON tblCustomers ([Last Name], [First Name])
WITH PRIMARY
DISALLOW NULL オプションを使用すると、フィールドに null データを挿入できません。 (これは、CREATE TABLE ステートメントで使用される NOT NULL 宣言に似ています)。
CREATE INDEX idxCustomerEmail
ON tblCustomers (Email)
WITH DISALLOW NULL
IGNORE NULL オプションを指定すると、テーブル内の Null データがインデックスで無視されます。 これは、宣言されたフィールドの値に Null が含まれるレコードはインデックスで使用されない (カウントされない) ことを意味します。
CREATE INDEX idxCustomerLastName
ON tblCustomers ([Last Name])
WITH IGNORE NULL
PRIMARY、DISALLOW NULL、および IGNORE NULL の各オプションのほかに、インデックスを UNIQUE としても宣言できます。これは、一意で繰り返しのない値のみをインデックス フィールドに挿入できることを意味します。
CREATE UNIQUE INDEX idxCustomerPhone
ON tblCustomers (Phone)
テーブルからインデックスを削除するには、DROP INDEX ステートメントを使用します。
DROP INDEX idxName
ON tblCustomers
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。