DELETE ステートメント (Microsoft Access SQL)

適用先: Access 2013、Office 2013

FROM 句で指定したテーブルから WHERE 句の条件を満たすレコードを削除する削除クエリを作成します。

構文

DELETE [table.*] FROM table WHERE criteria

DELETE ステートメントでは次の引数を使用します。

パーツ

説明

table

レコードを削除するテーブルのオプションの名前。

table

レコードを削除するテーブルの名前。

criteria

削除するレコードを決める式。

注釈

DELETE ステートメントは、多数のレコードを削除する場合に特に便利です。

データベースからあるテーブル全体を削除するには、DROP ステートメントで Execute メソッドを使用します。 ただし、テーブルを削除するとテーブルの構造も失われます。 これに対して、DELETE ステートメントを使用した場合はデータのみが削除され、テーブルの構造や、フィールド属性、インデックスなどのテーブル プロパティはすべてそのまま残されます。

DELETE ステートメントを使用すると、あるテーブルとの間に一対多リレーションシップがある複数のテーブルからレコードを削除できます。 連鎖削除を行うと、"一" 側のテーブルに含まれるレコードがクエリで削除された場合に、"多" 側にある対応するレコードも削除されます。 たとえば、[得意先] テーブルと [注文] テーブルとの間にリレーションシップが設定されていて、[得意先] テーブルが "一" 側、[注文] テーブルが "多" 側であるとします。 この場合、連鎖削除オプションが指定されていれば、[得意先] テーブルからレコードを削除すると、それに対応する [注文] テーブルのレコードも削除されます。

削除クエリでは、特定のフィールドのデータだけでなく、レコード全体が削除されます。 特定のフィールドの値を削除する場合は、値を Null に変更する更新クエリを作成 します

重要

  • 削除クエリでいったん削除したレコードは、元に戻せません。 どのレコードが削除されるかをあらかじめ確認する場合は、削除クエリを実行する前に、同じ抽出条件を使用する選択クエリを実行してその結果を調べてください。
  • データのバックアップ コピーを常に維持してください。 間違ったレコードを削除した場合は、バックアップ コピーからレコードを取得できます。

次の使用例では、役職が Trainee である社員のすべてのレコードを削除します。 FROM 句に 1 つのテーブルのみが含まれている場合は、テーブル名を DELETE ステートメントにリストする必要はありません。

    Sub DeleteX() 
     
        Dim dbs As Database, rst As Recordset 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
     
        ' Delete employee records where title is Trainee.     
        dbs.Execute "DELETE * FROM " _ 
            & "Employees WHERE Title = 'Trainee';" 
         
        dbs.Close 
     
    End Sub