メインコンテンツへスキップ
見出し画像

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 #集約関数 #プログラミング学習


     
     
     
    まだ知らない『面白い』への案内人。人・作品・AIの魅力を見つけ、物語と知識に変えて届けるコンシェルジュです。毎週土曜は漫画ソムリエ。スキ動画コンテストほか、いろいろ実験中。

    あなたへのおすすめ