見出し画像

3分間データベース講座 第2回: データベースの基本操作~CRUDを学ぼう~



登場人物:

  • チャット先生(通称:先生): オブジェクト指向マスター。最近はデータベースの世界にも詳しい。

  • ボット助手(通称:ボット君): プログラミングを始めたばかりの若手。データベースはまだ未知の世界。


ボット君: 先生!データベースにテーブルがあることは分かりました!でも、どうやってその中にデータを保存したり、取り出したりするんですか?

先生: いい質問だね、ボット君!プログラミングの世界で、データベースを操作するための言語を「SQL(Structured Query Language)」と言うんだ。今回はこのSQLを使って、データの基本的な操作を学んでいこう。

先生: データの操作は、ほとんどの場合、「CRUD(クラッド)」と呼ばれる4つの操作に分類できる。

  • Create(作成): データを新しく追加する

  • Read(読み出し): データを読み出す

  • Update(更新): 既存のデータを更新する

  • Delete(削除): 既存のデータを削除する

先生: この4つの操作をマスターすることが、データベース活用の第一歩だ!

1. CRUDの「C」:データを新しく追加する(INSERT文)

先生: まずは、テーブルに新しいデータを追加する方法からだ。INSERT INTO文を使う。

先生: 前回作成したproductsテーブルに、新しい商品データを追加してみよう。

/*
productsテーブルの構造とデータ例:
+----+-----------+-------+----------+
| id | name      | price | category |
+----+-----------+-------+----------+
|  1 | りんご     |   120 | 果物     |
|  2 | みかん     |   100 | 果物     |
|  3 | パソコン    | 80000 | 家電     |
+----+-----------+-------+----------+
*/

-- 主キー(id)は自動生成されるため、指定しない
INSERT INTO products (name, price, category)
VALUES ('バナナ', 130, '果物');

先生: INSERT INTOの後ろにテーブル名、その後のカッコ内にデータを入れる列名、そしてVALUESの後ろにその列に対応する値を記述する。PostgreSQLでは、id(主キー)を自動で生成してくれるので、INSERT文でIDを指定する必要はないんだ。

2. CRUDの「R」:データを読み出す(SELECT文)

先生: 次は、追加したデータや既存のデータを読み出す「SELECT」文だ。これは、最もよく使うSQL文だよ。

-- テーブル内のすべてのデータを取得する
SELECT * FROM products;

-- 実行結果の例:
/*
+----+-----------+-------+----------+
| id | name      | price | category |
+----+-----------+-------+----------+
|  1 | りんご     |   120 | 果物     |
|  2 | みかん     |   100 | 果物     |
|  3 | パソコン    | 80000 | 家電     |
|  4 | バナナ     |   130 | 果物     |
+----+-----------+-------+----------+
*/

先生: *は「すべての列」を意味する。もし特定の列だけを取得したい場合は、列名をカンマで区切って指定する。

-- 列名を指定して、商品名と価格だけを取得する
SELECT name, price FROM products;

WHERE句:条件を指定してデータを絞り込む

先生: データベースの真価は、大量のデータの中から、欲しいデータだけを絞り込めることにある。そのために「WHERE」句を使う。

-- 価格が150円以下の商品だけを取得
SELECT name, price
FROM products
WHERE price <= 150;

-- 実行結果:
/*
+--------+-------+
| name   | price |
+--------+-------+
| りんご  |   120 |
| みかん  |   100 |
| バナナ  |   130 |
+--------+-------+
*/

先生: WHERE句で使える主な演算子を見てみよう。

-- 【WHERE句で使える主な比較演算子】
-- 数値の比較
SELECT name FROM products WHERE price = 120;           -- 等しい
SELECT name FROM products WHERE price BETWEEN 100 AND 200; -- 範囲指定

-- 文字列の比較
SELECT name FROM products WHERE category = '果物';     -- 完全一致
SELECT name FROM products WHERE name LIKE '%りん%';     -- 部分一致('りん'を含む)

ORDER BY句とLIMIT句:データを並べ替える

先生: 取得したデータを特定の順序で並べ替えたい場合は「ORDER BY」句を、取得する件数を制限したい場合は「LIMIT」句を使う。

-- 価格の高い順に並べて、上位3件だけを取得する
SELECT name, price
FROM products
ORDER BY price DESC  -- DESCは降順(高い順)
LIMIT 3;             -- 上位3件だけを取得する

3. CRUDの「U」:データを更新する(UPDATE文)

先生: 既存のデータを更新するには「UPDATE」文を使う。ここで一番大事なのは「どのデータを更新するか」を正確に指定することだ。

-- idが3の商品(パソコン)の価格を90000円に更新する
UPDATE products
SET price = 90000
WHERE id = 3;

先生: 注意! もしWHERE id = 3を書き忘れると、テーブルのすべてのデータの価格が90000円になってしまう! UPDATE文と次のDELETE文では、WHERE句を絶対に忘れないように注意が必要だ。

4. CRUDの「D」:データを削除する(DELETE文)

先生: 最後に、不要になったデータを削除するには「DELETE」文を使う。

-- idが3の商品(パソコン)を削除する
DELETE FROM products
WHERE id = 3;

先生: 実際に業務でデータを完全に削除することは少なく、代わりに「論理削除」という手法がよく使われる。これは、is_deletedのような削除フラグを立てて、データ自体は残しておく方法だ。

先生: ここでも、WHERE句を忘れるとテーブルのすべてのデータが消えてしまうので、細心の注意が必要だ。

まとめと次回の予告

先生: 今日のまとめだ。

  • INSERT: 新しいデータを追加する。

  • SELECT: データを読み出す。

  • UPDATE: 既存のデータを更新する。

  • DELETE: データを削除する。

  • WHERE: SELECT、UPDATE、DELETE文で条件を指定して対象を絞り込む。

ボット君: 先生、SQLって、英語の命令文みたいで面白いですね!これを使えば、データベースのデータが自由自在に操れそうです!

先生: その調子だ、ボット君!君が今学んだのは、すべてのプログラマーにとって必須の基礎知識だ。これらの操作を組み合わせることで、Webアプリケーションの様々な機能(新規登録、ログイン、情報変更など)が実現できるんだ。

先生: 次回は、複数のテーブルを組み合わせる「結合(JOIN)」という、データベースの真の力を引き出すためのテクニックについて学んでいこう。


次回:第3回: 複数のデータを組み合わせる~結合(JOIN)と集約関数~

#データベース #SQL #CRUD #INSERT #SELECT #UPDATE #DELETE #プログラミング学習


いいなと思ったら応援しよう!

ナオユキ|物語と知識のコンシェルジュ もしこの記事が少しでも役に立ったり、楽しんでいただけたりしたら、チップをいただけるととても嬉しいです! いただいたチップは、今後のより良いコンテンツ制作のための書籍代📚とnote購入🗒️、他の方へのチップ代💰に使わせていただきます。 いつも応援ありがとうございます!