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

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


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

    あなたへのおすすめ