3分間データベース講座 第6回: SQLでデータを操作する!~基本操作と集約・並べ替え〜
登場人物:
チャット先生(通称:先生): オブジェクト指向マスター。最近はデータベースの世界にも詳しい。
ボット助手(通称:ボット君): プログラミングを始めたばかりの若手。データベースはまだ未知の世界。
ボット君: 先生!テーブルを作ったり、データのルールを決めたりするのは、まるで家を建てるみたいで面白いですね!でも、まだデータを入れたり、見たりする操作がよくわからないです。
先生: 良いところに気づいたね、ボット君。前回までの話は「データ定義言語(DDL)」と言って、データベースの構造(設計図)を作るためのものだった。今日のテーマは、実際にその構造を使ってデータを操作する「データ操作言語(DML)」だ。
1. データの作成、読み取り、更新、削除~DMLの基本4操作~
先生: データベースの操作には、頭文字をとって「CRUD」と呼ばれる4つの基本操作がある。
Create(作成): INSERT
Read(読み取り): SELECT
Update(更新): UPDATE
Delete(削除): DELETE
これらの操作を、ECサイトのproductsテーブルを例に見ていこう。
データの作成:INSERT
先生: INSERT文は、テーブルに新しい行を追加するときに使う。
-- productsテーブルに新しい商品データを追加
INSERT INTO products (product_id, product_name, price)
VALUES (101, 'ノートPC', 120000);
データの読み取り:SELECT
先生: SELECT文は、データベースからデータを取得するときに使う。最も頻繁に使う命令だ。
-- 全ての列と全ての行を取得
SELECT * FROM products;
-- 特定の列だけを取得
SELECT product_name, price FROM products;
-- 条件を指定して絞り込む
SELECT * FROM products WHERE price >= 100000;
データの更新:UPDATE
先生: UPDATE文は、既存のデータを変更するときに使う。
-- product_idが101の商品の価格を110000に更新
UPDATE products
SET price = 110000
WHERE product_id = 101;
データの削除:DELETE
先生: DELETE文は、テーブルから特定の行を削除するときに使う。
-- product_idが101の商品を削除
DELETE FROM products
WHERE product_id = 101;
ボット君: 先生!UPDATEもDELETEもWHERE句を付けないと、どうなるんですか?
先生: 良い質問だね!もしWHERE句を付けないと、テーブルの全ての行が更新されたり、削除されたりする。これは非常に危険な操作だ。絶対に気をつけてほしい。
2. 大量のデータを集計する~集約関数とGROUP BY~
先生: SELECT文は、データの集計にも使われる。集計には「集約関数(Aggregate Functions)」を使う。

先生: これらの関数をGROUP BY句と組み合わせることで、特定のグループごとの集計ができる。
-- productsテーブル
+------------+-------------+-------+
| category_id| product_name| price |
+------------+-------------+-------+
| 1 | ノートPC | 120000|
| 1 | キーボード | 8000 |
| 2 | スマホ | 90000 |
| 2 | タブレット | 60000 |
+------------+-------------+-------+
-- category_idごとの商品数を数える
SELECT category_id, COUNT(*)
FROM products
GROUP BY category_id;

3. データを並べ替えて見やすくする~ORDER BY~
先生: 取得したデータを特定の列で並べ替えたいときは、ORDER BY句を使う。
-- 価格が安い順に並べ替える
SELECT product_name, price
FROM products
ORDER BY price ASC; -- ASCは昇順(省略可)
-- 価格が高い順に並べ替える
SELECT product_name, price
FROM products
ORDER BY price DESC; -- DESCは降順
ボット君: 先生、ORDER BYで複数の列を指定したらどうなりますか?
先生: その場合、最初の列で並べ替え、同じ値の場合は2番目の列で並べ替え…という順番で処理される。
-- category_idで昇順に並べ、同じcategory_idの中ではpriceで降順に並べ替える
SELECT *
FROM products
ORDER BY category_id ASC, price DESC;
まとめと次回の予告
先生: 今日のまとめだ。
DMLの基本操作: INSERT, SELECT, UPDATE, DELETEのCRUD操作をマスターしよう。
WHERE句の重要性: UPDATEやDELETEでは、WHERE句を付けないと全てが対象になるので要注意。
集約関数とGROUP BY: 大量のデータをカテゴリーごとに集計するのに便利。
ORDER BY: 取得したデータを好きな順序で並べ替えられる。
これらの基本操作を組み合わせることで、データベースから欲しいデータを自由自在に引き出せるようになる。
先生: 次回は、データベースの検索速度を劇的に向上させるための仕組み、「インデックス」について学んでいこう。
次回:第7回: データベースをもっと速く!~インデックスと性能改善の基本~
#データベース #SQL #DML #CRUD #集約関数 #プログラミング学習
いいなと思ったら応援しよう!
もしこの記事が少しでも役に立ったり、楽しんでいただけたりしたら、チップをいただけるととても嬉しいです!
いただいたチップは、今後のより良いコンテンツ制作のための書籍代📚とnote購入🗒️、他の方へのチップ代💰に使わせていただきます。
いつも応援ありがとうございます!