DBeaver-CE入門(4) – データの更新と削除

更新が少し遅くなってしまったが、続きをやっていこう。今回はデータの削除と更新である。データの削除および更新をする方法は、DBeaverで行う、SQLで行う方法の2つがある。削除や更新するデータが少ない場合は、DBeaverで、逆に多い場合はSQLで行ったほうが効率的である。どちらの方法を取るにせよ、操作や記述ミスには気をつけたい。とくに削除してしまうと、やりなおしというわけにはいかないからだ。

ロールバックすればいいでしょ、というかもしれないが、トランザクションが確定してしまった場合はロールバックしても復元できないので注意が必要である。削除に関していえば、削除せずにデータが削除されたことを示すフラグをUPDATEで付けるといいだろう。もちろんフィールドが1個余分に作り必要があるが、ロールバックしても復元できなくなるより、はるかにマシである。本当に不要であれば、あとでまとめてSQLでフラグがついたデータを削除することができる。

新しいデータの登録

更新と削除を行う前に新しいデータを1つ登録しておこう。下記のSQL構文をコピーしてSQLエディタに貼り付けてCtrl+Enterで実行しよう。反映されていない場合はF5を押して更新する。

book_idtitleauthorpublisherpublish_datepageisbn
11森のサバイバル術らいおんさんアニマルフォレスト出版局2022-01-016239789332156089
表1. DBeaverで登録するデータ
INSERT INTO booksdb.tbooks
(book_id, title, author, publisher, publish_date, page, isbn)
VALUES(11, '森のサバイバル術', 'らいおんさん', 'アニマルフォレスト出版局', '2022-01-01', '623', '9789332156089');
登録確認
登録確認

SQLによる更新と削除

ここでは、追加したデータの著者名の変更と登録したデータをSQL文で削除してみよう。

更新

テーブルtbooks上で右クリックして「SQLの生成」→「UPDATE」を選択する。

SQL文の雛形UPDATEを発行する
SQL文の雛形UPDATEを発行する

Generated SQLで[コピー]をクリックする。

発行されたSQLの雛形をコピーする

次にSQLエディタを実行して、コピーしたSQLを貼り付ける。ここでは、追加したデータのauthorを「らいおんさん」から「うさぎさん」に変更してみよう。変更するauthorのみを残してほかは削除する。

変更前
UPDATE booksdb.tbooks
SET title='', author=NULL, publisher=NULL, publish_date=NULL, page=NULL, isbn=''
WHERE book_id=0;

変更後
UPDATE booksdb.tbooks
SET author='うさぎさん'
WHERE book_id=11;
SQLを書き換える
SQLを書き換える

変更したらCtrl+Enterを押して実行し、テーブルtbooks上でダブルクリックするか、右クリックして「ビュー表」を選択して確認してみよう。

変更確認
変更確認

削除

テーブルtbooks上で右クリックして「SQLの生成」→「DELETE」を選択する。

SQL文の雛形DELETEを発行する

Generated SQLで[コピー]をクリックする。

発行されたSQLの雛形をコピーする

次にSQLエディタを実行して、コピーしたSQLを貼り付ける。ここではさきほど登録したデータを削除してみよう。

変更前
DELETE FROM booksdb.tbooks
WHERE book_id=0;

変更後
DELETE FROM booksdb.tbooks
WHERE book_id=11;

変更したらCtrl+Enterを押して実行する。

削除実行
削除実行

テーブルtbooks上でダブルクリックするか、右クリックして「ビューテーブル」を選択して確認してみよう。反映されていなければF5を押して更新する。

削除確認
削除確認

DBeaverによる変更と削除

SQL文を使わずにテーブルのデータを変更および削除する方法である。

変更

再度、前述のデータを登録しておこう。登録したらテーブルtbooks上でダブルクリックするか、右クリックして「ビュー表」を選択する。変更するには、該当するレコードのどの項目を変更するか決めたら、セルをダブルクリックして内容を変更する。さきほどと同じように、「森のサバイバル術」のauthorを「らいおんさん」から「うさぎさん」に変更してみよう。

セルを直接編集してデータを変更する
セルを直接編集してデータを変更する

変更したら、下部ツールバーにある[Save…]をクリックする。保存しない限りテーブルには書き込まれない。

削除

まず、削除したい行を選択する。

削除したい行を選択
削除したい行を選択

次に下部ツールバーの[現在の行を削除]をクリックするか、右クリックして「編集」→「現在の行を削除」を選択する。削除する行が赤く表示されるので、削除するのであれば、下部ツールバーの[Save…]を、取り消したい場合は[Cancel]をクリックする。

削除する行を選択
削除する行を選択

削除する行が赤く表示されるので、削除するなら下部ツールバーの[Save…]を、取り消したい場合は[Cancel]をクリックする。

削除可能な状態
削除可能な状態

フラグによる削除

物理的に削除しないで見かけ上削除する方法である。説明するより実際にやってみよう。まず、テーブルに削除したことを示すフィールドを追加する。

フィールド名NOT NULL
delmarkTINYINT
新しく追加するフィールド
新しくフィールドを追加する
新しくフィールドを追加する

ここでは、削除されていないデータを0、削除されたデータを1とする。デフォルトでは0になっているので、UPDATEで変更する必要はない。削除するにはUPDATE文でdelmarkに1を設定する。

book_idが11のデータを見かけ上削除してみる。

UPDATE booksdb.tbooks
SET delmark=1
WHERE book_id=11;
削除されたことを示すフィールド名delmarkに1がセットされた
削除されたことを示すフィールド名delmarkに1がセットされた

SELECT文で見かけ上削除されたデータ以外を表示するには、次のようにする。

SELECT * FROM booksdb.tbooks WHERE delmark=0;
見かけ上削除されたデータは表示されない

削除されたデータを表示するには次のようにする。

SELECT * FROM booksdb.tbooks WHERE delmark=1;
見かけ上削除されたデータのみを表示する
見かけ上削除されたデータのみを表示する

WHERE句に余分に記述する必要があるが、削除したくないデータをあやまって削除してしまうより安全な方法だろう。ちなみにこの方法では物理的に削除することはしない。物理的に削除する場合は復元可能な状態にしておくことである。

次回はER図の作成について述べる。