応用編の内容

データベースの変更・更新

基本編では、データベースの作成から、テーブルの生成、そしてそのデータの検索について説明してきました。これで、基本的なデータベースの操作の基本は一通りわかったと言えるでしょう。

しかし、データベースの長期にわたって使用されるものです。新たにデータが追加されたり、削除・更新がされます。応用編では、そういったデータベースの維持・更新に必要な内容について学習していくことにします。

第一弾として、すでにできているテーブルのデータを削除・更新する方法について学習しますが、その前にDCL命令であるCOMMITROLLBACKについて説明します。

DCL命令

2日目で説明したとおり、SQL命令の中には、DCL命令である、COMMITROLLBACKがあります。以下、それぞれのコマンドについて説明します。

COMMIT

COMMITは、コミットと言い、とランザクションに発行した命令を確定します。書式は以下の通りです。

コミット命令
COMMIT;

ROLLBACK

ROLLBACKは、コミットされていない命令の取り消しを行う命令です。

ロールバック命令
ROLLBACK;

コミットされていない命令は、このコマンドでキャンセルできます。

DBViewerでのコミットモードの変更

続いて、DBViewerの自動コミットモードと、手動コミットモードの使い分けについて説明します。通常、とくに変更をしなければ、起動時にDBViewerの下部にある「SQL実行・ビュー」の部分は、以下のようになっています。(図1-1.)

図1-1.SQL実行・ビュー
SQL実行・ビュー

ここに出ている、矢印の部分にあるのが、コミットモードを変更するためのボタンです。起動時には、Aとなっています(図1-2.)。これは、自動コミットモードであり、発行したSQL文は、自動的にコミットされます。このボタンを押すと、Mとなります(図1-3.)。これが手動コミットモードで、このボタンを押すことによって、モードは入れ替わります。(表4-1.)

表4-1:コミットモード変換ボタン
ボタン 意味
図1-2.自動コミットモード 自動コミットモード 発行したSQL命令が自動的にコミットされる。
図1-3.手動コミットモード 手動コミットモード 発行したSQL命令はコミットされない。

ここでは、このボタンを押して、手動コミットモードに変更します。それにより、テーブル内容への変更をリセットすることができるようにします。

データの削除

DELETE

テーブルに格納されているデータを削除するにはDELETE文を使います。基本となる書式は次の通りです。

DELETEの書式①
DELETE FROM データベース名.テーブル名 [WHERE条件];

これにより、指定のデータベース内にある指定のテーブルに対し、指定したカラムに新しい値を設定します。データベース名は、useで指定されている場合は省略可能です。そのような場合、以下のような表現になります。

DELETEの書式②
DELETE FROM テーブル名 [WHERE条件];

これにより、指定のテーブルに含まれるデータを削除することが出来ます。どのデータを削除するのかはWHERE句を使って指定します。なお、WHERE条件は、SELECTの場合と同じ条件を使用することができます。WHERE句を省略すると、テーブル内の全てのデータが削除されます。

サンプル

では実際に、テーブルデータを削除してみましょう。3日目で使用した、studentテーブルのデータを変更してみましょう。まずは、「SELECT * FROM student;」を実行して、再びstudentテーブルを表示しましょう。(図1-4.)

図1-4.studentテーブル(再掲)
studentテーブル

まずは、以下のSQL文を実行してみてください。

Sampleex101.sql:DELETEの実行例①
DELETE FROM student WHERE grade = 1;

これを実行すると、gradeカラムの値が1のデータを削除されます。(図1-5.)

図1-5.DELETEの実行例①の実行結果
DELETEの実行例①の実行結果

続いて、DBViewerが手動コミットモードになっていることを確認して、以下のSQL文を実行してみてください。

Sampleex102.sql:DELETEの実行例②
 DELETE FROM student WHERE id > 3000;

これを実行すると、②idカラムの値が3000以上のデータを削除されます。(図1-6.)

図1-6.DELETEの実行例②の実行結果
DELETEの実行例②の実行結果

最後に、テーブルのデータをすべて削除する方法を紹介します。以下のSQL文を実行してみてください。

Sampleex103.sql:DELETEの実行例③
DELETE FROM student;

再び、studentテーブルを見てみましょう。すると、結果として何も出力されません。つまり、studentテーブルのデータがこれによって全て削除されるのです。(図1-7.)

図1-7.DELETEの実行例③の実行結果
DELETEの実行例③の実行結果

以上で、DELETEの説明は終了します。ここで、ROLLBACK命令を発行し、studentテーブルのデータを元に戻しておいてください。続いて、UPDATE命令について説明します。

データの更新

UPDATE命令

テーブルに格納されているデータを更新するにはUPDATE文を使います。基本となる書式は次の通りです。

UPDATEの書式①
UPDATE テーブル名 SET 列名1 = 値1[,列名2 = 値2...] [WHERE条件];

指定のデータベース内にある指定のテーブルに対し、指定したカラムに新しい値を設定します。データベース名は、useで指定されている場合は省略可能です。そのような場合、以下のような表現になります。

UPDATEの書式②
UPDATE テーブル名 SET 列名1 = 値1[,列名2 = 値2...] [WHERE条件];

これにより数値や文字列の値、又は関数や式などを指定したカラムに新しい値として格納します。

サンプル

今度は、テーブルのデータを変更してみましょう。削除の場合と同様、3日目で使用した、studentテーブルを変更してみましょう。まずは、「SELECT * FROM student;」を実行して、ROLLBACKでデータが復活したことを確認しましょう。(図1-4.)

図1-4.studentテーブル(再掲)
studentテーブル

では、実際にUPDATE文のサンプルを実行してみましょう。まずは、以下のSQL文を実行してみてください。

Sampleex104.sql:UPDATEの実行例①
UPDATE student SET name="山口太郎" WHERE id = 1001;

これを実行すると、idカラムの値が1001のデータのnameカラムの値を”山口太郎”に設定されます。(図1-8.)

図1-8.UPDATEの実行例①の実行結果
UPDATEの実行例①の実行結果

続いて、DBViewerが手動コミットモードになっていることを確認して、以下のSQL文を実行してみてください。

Sampleex105.sql:UPDATEの実行例②
UPDATE student SET name='学生', grade = 0;

これを実行すると、全てのデータのnameカラムの値を「学生」にし、gradeカラムの値を0に設定されます。(図1-9.)

図1-9.UPDATEの実行例②の実行結果
UPDATEの実行例②の実行結果

以上で、UPDATEの説明は終了します。再びROLLBACK命令を発行し、studentテーブルのデータを元に戻しておいてください。