Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

アクションクエリの作成と実行 - 削除クエリ : SQL入門講座



登録しているテーブルレコードを削除するクエリを削除クエリと呼びます。

DELETE 〜 FROM 〜 構文

DELETE 〜 FROM 〜 構文とは、DELETE句で指定したテーブルのレコードを削除するSQL構文です。

  • FROM句でテーブルを指定し、DELETE句でテーブル名を省略するか、全フィールドを現すアスタリスク(*)を用いるのが一般的です。
  • FROM句に、複数のテーブルを指定することはできません。
  • 特定のフィールドのレコードだけを削除することはできません。
  • WHERE句を用いて、特定のレコードのみ削除することもできます。
  • Accessでレコードを削除する「削除クエリ」と機能的には同じです。
  • 削除クエリを実行すると削除した値を元に戻せません。
サンプルテーブル

サンプルテーブル(手形割引管理)は以下のものを予定しています。

ID 会社名 手形入金額 割引後入金額/th>
1 立花商事株式会社 ¥542,100 ¥460,785
2 日下日照株式会社 ¥82,100 ¥69,785
3 松村建設株式会社 ¥7,821,000 ¥6,647,850
構文
DELETE tablenameA FROM tablenameB
引数 意味 指定
tablenameA 削除するレコードがあるテーブル名を指定します。

省略可

tablenameB 削除するレコードがあるテーブル名を指定します。  省略不可
  • tablenameAは省略し、アスタリスト(*)を記述するのが一般的です。
サンプル構文

「手形管理」テーブルレコードを削除します。削除条件としては、WHERE句を用いて「手形入金額」フィールド の値が100000以上レコードのみとしています。

  • DELETE * FROM 手形割引管理 WHERE 手形入金額 >= 100000;

DAOを用いた事例

DAOのExcuteメソッドを用いてSQLを実行します。

Sub MySQLDelete()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim mySQL As String
    
    Set db = CurrentDb()
    ' 全レコードを削除するSQLを記述します。
    mySQL = "DELETE * FROM 手形割引管理 WHERE 手形入金額 >= 100000;"
    
    If MsgBox("該当レコードを削除します。", vbYesNo) = vbYes Then
        ' SQLを実行します。
        db.Execute mySQL
        MsgBox "該当レコードを削除しました。"
    End If
       
    db.Close: Set db = Nothing
    
Exit Sub

エラー:
    
    MsgBox Err.Number & " : " & Err.Description
    Exit Sub
    
End Sub
留意点
  1. WHERE句を組み合わせて、条件抽出の設定を行っています。
  2. Excuteメソッドを実行すると、Access既定の警告メッセージは表示されません。
  3. VBA内でSQLを用いる場合は、前後をダブルクォーション(")で囲みます。
結果

下記のように該当レコードが削除されます。

削除クエリ

このSQLをクエリで作成すると、下記のようになります。

特定フィールドのデータのみ削除する方法

DELETEメソッドは、全てまたは一部のレコード全体を削除するメソッドです。しかし、実際の作業の中では、特定のフィールドデータを削除したい時があります。このような場合は、DELETEメソッドを用いるのではなく、UPDATEメソッドを下記のように用います。

UPDATEメソッドでNULLの利用

このプロシージャを実行すると、「手形割引管理」テーブルの「手形入金額」に NULL を代入します。つまり、フィールドデータが消去されます。

Sub MySQLDelete()

    Dim db As DAO.Database
    Dim mySQL As String
    
    Set db = CurrentDb()
    
    mySQL = "UPDATE 手形割引管理 SET 手形入金額 = Null;"
    ' SQLを実行します。
    db.Execute mySQL
       
    db.Close: Set db = Nothing
    
End Sub
結果

下記のようにフィールドデータが削除されています。

2004/08/17

ページの先頭へ 前ページへ戻る

 


アクションクエリの作成と実行 - 削除クエリ : SQL入門講座


-Microsoft Access Club-

アメリカ合衆国の大手データセンターのアダルト対応可能なリーズナブル価格設定の専用・共有レンタルサーバーをご提供しています。
アメリカ合衆国の大手データセンターにサーバー機器を設置。
アダルト対応可能な専用・共有レンタルサーバーを提供。