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購入🗒️、他の方へのチップ代💰に使わせていただきます。
いつも応援ありがとうございます!