DBeaver-CE入門(4) – データの更新と削除
更新が少し遅くなってしまったが、続きをやっていこう。今回はデータの削除と更新である。データの削除および更新をする方法は、DBeaverで行う、SQLで行う方法の2つがある。削除や更新するデータが少ない場合は、DBeaverで、逆に多い場合はSQLで行ったほうが効率的である。どちらの方法を取るにせよ、操作や記述ミスには気をつけたい。とくに削除してしまうと、やりなおしというわけにはいかないからだ。
ロールバックすればいいでしょ、というかもしれないが、トランザクションが確定してしまった場合はロールバックしても復元できないので注意が必要である。削除に関していえば、削除せずにデータが削除されたことを示すフラグをUPDATEで付けるといいだろう。もちろんフィールドが1個余分に作り必要があるが、ロールバックしても復元できなくなるより、はるかにマシである。本当に不要であれば、あとでまとめてSQLでフラグがついたデータを削除することができる。
新しいデータの登録
更新と削除を行う前に新しいデータを1つ登録しておこう。下記のSQL構文をコピーしてSQLエディタに貼り付けてCtrl+Enterで実行しよう。反映されていない場合はF5を押して更新する。
book_id | title | author | publisher | publish_date | page | isbn |
11 | 森のサバイバル術 | らいおんさん | アニマルフォレスト出版局 | 2022-01-01 | 623 | 9789332156089 |
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」を選択する。
Generated 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;
変更したらCtrl+Enterを押して実行し、テーブルtbooks上でダブルクリックするか、右クリックして「ビュー表」を選択して確認してみよう。
削除
テーブルtbooks上で右クリックして「SQLの生成」→「DELETE」を選択する。
Generated 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 |
delmark | TINYINT | ○ |
ここでは、削除されていないデータを0、削除されたデータを1とする。デフォルトでは0になっているので、UPDATEで変更する必要はない。削除するにはUPDATE文でdelmarkに1を設定する。
book_idが11のデータを見かけ上削除してみる。
UPDATE booksdb.tbooks
SET delmark=1
WHERE book_id=11;
SELECT文で見かけ上削除されたデータ以外を表示するには、次のようにする。
SELECT * FROM booksdb.tbooks WHERE delmark=0;
削除されたデータを表示するには次のようにする。
SELECT * FROM booksdb.tbooks WHERE delmark=1;
WHERE句に余分に記述する必要があるが、削除したくないデータをあやまって削除してしまうより安全な方法だろう。ちなみにこの方法では物理的に削除することはしない。物理的に削除する場合は復元可能な状態にしておくことである。
次回はER図の作成について述べる。