見出し画像

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