3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL入門】まずはここから!SQLの4大命令

Posted at

はじめに

以前「スッキリわかるSQL入門」を読んだので、振り返りも兼ねてSQLの基本である4大命令についてまとめました。

以下のURLからdokoQLにアクセスすると、実際に操作しながら学べるので、ぜひ試してみてください。

読者ターゲット

こんな方におすすめです。

  • SQLを触り始めたばかりの人
  • SQLの基本を復習したい人
  • 「スッキリわかるSQL入門」に興味のある人

SQLの4大命令

SQLとは、データベースを操作するための専用の言葉である。

データベースの中のデータを操作するには、データベース管理システム(DBMS)と呼ばれるプログラムに対して、SQLで書かれた命令文(SQL文)を送信する必要がある。

では、どのようなSQL文を送信すればいいのだろうか。

SQL文にはいくつかの種類が存在する。

しかし、実際にはほとんどのデータ操作は、SELECTUPDATEDELETEINSERT のたった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文の中でも特によく使われるので、ぜひ何度も使って慣れてください。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?