はじめに
以前「スッキリわかるSQL入門」を読んだので、振り返りも兼ねてSQLの基本である4大命令についてまとめました。
以下のURLからdokoQLにアクセスすると、実際に操作しながら学べるので、ぜひ試してみてください。
読者ターゲット
こんな方におすすめです。
- SQLを触り始めたばかりの人
- SQLの基本を復習したい人
- 「スッキリわかるSQL入門」に興味のある人
SQLの4大命令
SQLとは、データベースを操作するための専用の言葉である。
データベースの中のデータを操作するには、データベース管理システム(DBMS)と呼ばれるプログラムに対して、SQLで書かれた命令文(SQL文)を送信する必要がある。
では、どのようなSQL文を送信すればいいのだろうか。
SQL文にはいくつかの種類が存在する。
しかし、実際にはほとんどのデータ操作は、SELECT
、UPDATE
、DELETE
、INSERT
のたった4つの命令で実現できてしまうのだ。
この記事では、これらの4つの命令について紹介しよう。
SELECT
文
データベースとデータのやり取りをするにあたって、最も頻繁に使われる命令が SELECT
文である。
SELECT
文は、テーブルから目的のデータを取得するための命令である。
-- SELECT文の基本構文
SELECT 列名1, 列名2, ...
FROM テーブル名
(WHERE修飾)
(その他の修飾)
SELECT
の後ろに取得したい列の名前を、FROM
句の後ろに取得するデータが格納されているテーブルを指定することで、目的のデータを取得することができる。
なお、列名を記述する代わりに、アスタリスク(*
)を記述すれば、すべての列を指定するのと同様の効果が得られる。
また、必要に応じて、WHERE
による修飾やその他の修飾を続けて記述することで、さまざまな検索条件を指定することができる。
それでは、実際に使ってみよう。
今回は、dokoQLのデータベースにあらかじめ準備されている以下のような家計簿テーブルを使用する。
日付 | 費目 | メモ | 入金額 | 出金額 |
---|---|---|---|---|
2024-02-03 | 食費 | コーヒーを購入 | 0 | 380 |
2024-02-10 | 給料 | 1月の給料 | 280000 | 0 |
2024-02-11 | 教養娯楽費 | 書籍を購入 | 0 | 2800 |
2024-02-14 | 交際費 | 同期会の会費 | 0 | 5000 |
2024-02-18 | 水道光熱費 | 1月の電気代 | 0 | 7560 |
はじめに、次のSQL文を実行して、家計簿テーブルのうち、日付と出金額の列だけを抽出してみよう。
SELECT 日付, 出金額
FROM 家計簿
このように、日付と出金額の列だけが表示されるはずだ。
日付 | 出金額 |
---|---|
2024-02-03 | 380 |
2024-02-10 | 0 |
2024-02-11 | 2800 |
2024-02-14 | 5000 |
2024-02-18 | 7560 |
では、2月3日の出金額のみを知りたかったら、どうすればいいだろうか。
簡単なことだ。
先ほどの命令に検索条件を追加すればいいのだ。
SELECT 日付, 出金額
FROM 家計簿
WHERE 日付 = '2024-02-03'
ぜひ一度試してみて、次のような結果になるかを確認してみよう。
日付 | 出金額 |
---|---|
2024-02-03 | 380 |
UPDATE
文
UPDATE
文は、すでにテーブルに存在するデータを書き換えるための命令である。
-- UPDATE文の基本構文
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2, ...
(WHERE修飾)
UPDATE
の後ろに更新したいデータが存在するテーブル名を、SET
句の後ろに更新したい列名と、その列に書き込むデータをイコール記号(=
)で対応させて記述することで、データを書き換えることができる。
WHERE
で対象行を指定しないと、UPDATE
文と DELETE
文はすべての行を書き換えてしまうので、注意が必要だ。
試しに2月10日の給料を30万円に書き換えてみよう。
UPDATE 家計簿
SET 入金額 = 300000
WHERE 日付 = '2024-02-10'
次のような結果になればOKだ。
もし時間に余裕があれば、SET
句の後ろに複数の更新したい列名を記述してみよう。
日付 | 費目 | メモ | 入金額 | 出金額 |
---|---|---|---|---|
2024-02-03 | 食費 | コーヒーを購入 | 0 | 380 |
2024-02-10 | 給料 | 1月の給料 | 300000 | 0 |
2024-02-11 | 教養娯楽費 | 書籍を購入 | 0 | 2800 |
2024-02-14 | 交際費 | 同期会の会費 | 0 | 5000 |
2024-02-18 | 水道光熱費 | 1月の電気代 | 0 | 7560 |
DELETE
文
DELETE
文は、すでにテーブルに存在する行を削除するための命令である。
既存のデータに対する操作という点では、これまでに登場した SELECT
文や UPDATE
文と同じだが、行をまるごと削除する機能であるため、特定の列だけを指定することはできない。
-- DELETE文の基本構文
DELETE
FROM テーブル名
(WHERE修飾)
FROM
句の後ろにテーブル名を指定することで、行を削除することができる。
さっそく2月3日のデータを削除してみよう。
DELETE
FROM 家計簿
WHERE 日付 = '2024-02-03'
2月3日のデータが削除されて、レコード数は4件になっているはずだ。
UPDATE
文と DELETE
文は、WHERE
で対象行を指定しなくても、実行することができる。
しかし、実務においては、WHERE
なしで使用することはないので、本能的に実行をためらう感覚を身に付けよう。
日付 | 費目 | メモ | 入金額 | 出金額 |
---|---|---|---|---|
2024-02-10 | 給料 | 1月の給料 | 300000 | 0 |
2024-02-11 | 教養娯楽費 | 書籍を購入 | 0 | 2800 |
2024-02-14 | 交際費 | 同期会の会費 | 0 | 5000 |
2024-02-18 | 水道光熱費 | 1月の電気代 | 0 | 7560 |
INSERT
文
INSERT
文は、テーブルに新しいデータを1行だけ追加する命令である。
これまでに紹介した3つの命令とは少し異なった形をしているので、注意深く見てみよう。
-- INSERT文の基本構文
INSERT INTO テーブル名
(列名1, 列名2, ...)
VALUES (値1, 値2, ...)
INTO
の後ろにデータを追加するテーブル名と列名を、VALUES
句の後ろに2行目に記述した列名に対応するデータの値を指定することで、データを1行だけ追加することができる。
ただし、テーブルのすべての列に値を指定する場合には、2行目をまるごと省略可能である。
じゃあ、思い切って100万円を2月の給料として入金してみよう。
INSERT INTO 家計簿
VALUES ('2024-03-10', '給料', '2月の給料', 1000000, 0)
次のような結果になれば大成功だ。
100万円獲得おめでとう。
日付 | 費目 | メモ | 入金額 | 出金額 |
---|---|---|---|---|
2024-02-10 | 給料 | 1月の給料 | 300000 | 0 |
2024-02-11 | 教養娯楽費 | 書籍を購入 | 0 | 2800 |
2024-02-14 | 交際費 | 同期会の会費 | 0 | 5000 |
2024-02-18 | 水道光熱費 | 1月の電気代 | 0 | 7560 |
2024-03-10 | 給料 | 2月の給料 | 1000000 | 0 |
おわりに
今回は、SQLの基本である4大命令について紹介しました。
これらの命令はSQL文の中でも特によく使われるので、ぜひ何度も使って慣れてください。