更新日:
システム開発において、データベースのデータを操作する技術は根幹を成す要素です。データを新しく追加する、既存の状態を更新する、不要なレコードを削除するといった処理がそれに当たります。本章では、それらのデータ操作を司るSQLの基本構造について見ていきましょう。
INSERT文…データを登録する
テーブルに対して新しいレコードを書き加える際に使用するのがINSERT文です。データを新しく登録するための最も基本的な仕組みとなります。
INSERT INTO 表名 [ ( 列名 , 列名 , ・・・) ]
VALUES ( 値 , 値 , ・・・) ;
[列名]を指定した順に[値]を指定してください。もちろん双方の指定する数は同じでないといけません。数がズレるとエラーになります。整合性がポイント。
また、[列名]の記述自体を省略することも可能です。しかしその時は、そのテーブル内に存在する全ての列に対して[値]を順番通りに指定しなければいけません。複数の[列名]や[値]を指定する時は、区切りのカンマ(,)も必須です。配置に気をつけましょう。
① 例)「田中太郎」を登録する。
参考サイト:MySQL 公式サイト(INSERT 構文)
UPDATE文…データを更新する
既にテーブル内に存在しているデータを、新しい値へ書き換える処理を行うのがUPDATE文です。
UPDATE 表名
SET 列名 = 値 [ , 列名 = 値, 列名 = 値, ・・・・・・ ]
[ WHERE 条件式 ];
SET句に対して、変更処理を行いたい列とその値を指定します。複数の列を一括で指定する場合は、カンマで区切るのが鉄則です。
WHERE句では、値を変更したい行の抽出条件を指定してください。この指定の手順は、データを検索するSELECT文と同様。それゆえ指定条件に該当する複数の行が同時に変更されてしまうケースもあるので、上手く条件を指定するようにしましょう。
なお、WHERE句は省略することも可能ですが、その場合は特定の行ではなくテーブル内の全行が変更対象となってしまいます。大規模なデータ書き換えを招く恐れがあるため注意し、慎重に運用してください。
② 例)特定の社員データを書き換える。
(参考)UPDATE文は、1行も更新ができなかった場合でもSQL自体はエラーを返しません。しかし、実際のシステム開発現場でUPDATE文を発行するときは、必ず何らかのデータを書き換えたいはず。そのため、システム開発現場でUPDATEを組み込む際は、1行も更新されなかった場合を明示的にエラーとしてハンドリングする実装が求められることもあります。
参考サイト:MySQL 公式サイト(UPDATE 構文)
DELETE文…データを削除する
不要になってしまった行データを、テーブル内から完全に消去するためのSQL文がDELETE文です。
DELETE FROM 表名
[ WHERE 条件式 ];
WHERE句で指定した条件式に一致する行を、すべて削除する仕様となっています。このWHERE句は、省略することが可能です。ただしその場合は絞り込みが行われないため、指定テーブル内のすべての行が一度に削除されてしまいます。実行には細心の注意を払ってください。また、利用するデータベース製品のシステム特性によっては、WHERE句と一緒にFROM句すらも省略して実行できるものもあります。
③ 例)特定の社員データをテーブルから削除する。
参考サイト:MySQL 公式サイト(DELETE 構文)
SQLの分類
SQLコマンドは、その目的や扱う対象によって、大きく次の3つの言語体系に分類することが可能です。整理して把握しておきましょう。
SQLの3大分類とコマンド例
| 分類 | 概要 | SQL文 |
|---|---|---|
| DML | データ操作 | SELECT / INSERT / UPDATE / DELETE |
| DDL | データ定義 | CREATE DATABASE / DROP DATABASE / CREATE USER / DROP USER / CREATE TABLE / DROP TABLE など… |
| DCL | データ制御 | START TRANSACTION / COMMIT / ROLLBACK / GRANT / REVOKE |

