ODBC を使用したデータの削除

このチュートリアルでは、ODBC を使用して基本的な削除コマンドを実行する方法を学習します。ここでは、CRUD データベース操作の Delete(削除)部分について説明します。

先のチュートリアルで作成した接続文字列と ZENDB データベースを使用して、右側(このページの内容)に挙げたトピックの手順を実行します。

テーブルから 1 件のレコードを削除する

テーブルから特定のレコードを削除するには、SQL DELETE ステートメントを使用します。

レコードの ID がわかっている場合は、次のように指定することができます。

c.execute("DELETE FROM Students WHERE Id = 7")

別の列の値を指定することもできますが、そのレコードが一意であることを確認する必要があります。

c.execute("DELETE FROM Students WHERE Name = 'Sue'")

変更をコミットすると、レコードはデータベースから削除され、変更を元に戻すことができなくなることに留意してください。

Zen Control Center に戻ってデータを見ると、学生 ID 7 番の Sue はもうテーブルに存在していません。

重要:チュートリアルを続けて次のトピックの「ストアド プロシージャとトリガー」に進むには、残りのデータをこのテーブルに残しておく必要があるので、他のレコードや、テーブル、データベースを削除するステートメントの例は、実際には実行しないでください。

テーブルから複数のレコードを削除する

テーブルから複数のレコードを削除するには、複数のレコードに該当する WHERE 句を指定します。たとえば、専攻(Major)が English であるすべてのレコードを削除することができます。

c.execute("DELETE FROM Students WHERE Major = 'English'")

すべてのレコードを削除するには、WHERE 句を省略するだけです。

c.execute("DELETE FROM Students")

WHERE 句がない場合は、単純にテーブルからすべてを削除します。

テーブルを削除する

テーブルの削除とは、テーブル内のデータも含め、データベースからテーブル全体を削除することを意味します。これを行うには、SQL DROP TABLE ステートメントを使用します。

c.execute("DROP TABLE Students")

メモ:データベースにコミットされていないトランザクションがある場合、Zen はデータベースの削除を許可しません。これに対処するには、Python で毎回トランザクション処理後に commit() を呼び出すか、またはデータベースに最初に接続するときに autocommit=True を設定しておく必要があります。

データベースを削除する

データベースの削除は、Zen Control Center からでも、SQL ステートメントを使用しても行えます。

ZenCC でデータベースを削除するには、削除したいデータベースを右クリックして[削除]を選択します。

ダイアログで選択肢が提示されます。

  • データベース名のみを削除した場合、そのデータベース名は ZenCC に表示されなくなり、SQL ステートメントを受け入れることができなくなります。ただし、サポートしているメタデータ、データ辞書ファイル(DDF)は、テーブルの作成に使用するデータ ファイルと一緒に残ります。同じ場所にデータベースを再作成する場合は、以前のデータベースのデータ ファイルおよびメタデータを再利用できます。
  • データベース名と DDF の両方を削除した場合は、データ ファイルのみが残ります。このファイルが削除されることはありません。以前のデータベースと同じ場所にデータベースを再作成する場合は、CREATE TABLE ステートメントを使用して、テーブル スキーマおよび列のデータ型のメタデータを復元する必要があります。

SQL では、データベースを削除する 2 つの方法、DROP DATABASE <DB 名> および DROP DATABASE <DB 名> DELETE FILES があります。ZenCC での削除と同様に、データ ファイルは常にそのままの状態で残されます。

詳細: