データのクエリとフィルタリング

SQLiteSQLiteBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに (Introduction)

この実験 (lab) では、SQLite データベースでデータをクエリ (query) し、フィルタ (filter) する方法を学びます。この実践的な実験 (hands-on lab) は初心者向けに設計されており、必須の SQL テクニックを紹介します。WHERE 句を使用してデータをフィルタリングする方法、LIKE でパターンをマッチングする方法、ORDER BY で結果をソートする方法、LIMIT で結果の数を制限する方法を学びます。この実験 (lab) を終える頃には、データベースから特定のデータを効率的に取得できるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sqlite(("SQLite")) -.-> sqlite/SQLiteGroup(["SQLite"]) sqlite/SQLiteGroup -.-> sqlite/get_all("Select All Rows") sqlite/SQLiteGroup -.-> sqlite/query_where("Filter With WHERE") sqlite/SQLiteGroup -.-> sqlite/sort_data("Sort With ORDER BY") subgraph Lab Skills sqlite/get_all -.-> lab-552338{{"データのクエリとフィルタリング"}} sqlite/query_where -.-> lab-552338{{"データのクエリとフィルタリング"}} sqlite/sort_data -.-> lab-552338{{"データのクエリとフィルタリング"}} end

SQLite への接続とデータの表示 (Connect to SQLite and View the Data)

この最初のステップでは、employees.db という名前の SQLite データベースに接続し、staff テーブル内のデータを表示します。これにより、操作するデータを理解することができます。

  1. LabEx VM 環境でターミナルを開きます。デフォルトのディレクトリは /home/labex/project です。

  2. sqlite3 コマンドラインツールを使用して、employees.db データベースに接続します。

    sqlite3 employees.db

    このコマンドは SQLite シェルを開き、sqlite> プロンプトが表示されます。

  3. staff テーブルのデータを表示します。次の SQL コマンドを実行します。

    SELECT * FROM staff;

    このコマンドは、staff テーブルからすべての列 (*) を選択し、結果を表示します。次の出力が表示されるはずです。

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
    4|David|IT
    5|Eve|Marketing
    6|Frank|IT

    この出力は、staff テーブルの各従業員の idname、および department を示しています。

  4. SQLite シェルを終了するには、次のように入力します。

    .quit

    重要: 「Continue」ボタンをクリックする前に、必ず .quit を実行してください。そうしないと、sqlite の履歴が記録されないため、ステップを検証できません。

WHERE 句を使用したデータのフィルタ (Filter Data with the WHERE Clause)

WHERE 句を使用すると、特定の条件に基づいてデータをフィルタリングできます。これを使用して、条件を満たす行のみを取得できます。

  1. employees.db データベースに接続します。

    sqlite3 employees.db
  2. HR 部門の従業員のみを取得するには、次の SQL コマンドを使用します。

    SELECT * FROM staff WHERE department = 'HR';

    このコマンドは、staff テーブルからすべての列を選択しますが、department 列が HR に等しい行のみを含めます。出力は次のようになります。

    1|Alice|HR
    3|Charlie|HR
  3. 次に、id が 3 より大きい従業員を検索してみましょう。

    SELECT * FROM staff WHERE id > 3;

    このコマンドは、staff テーブルからすべての列を選択しますが、id 列が 3 より大きい行のみを含めます。出力は次のようになります。

    4|David|IT
    5|Eve|Marketing
    6|Frank|IT
  4. SQLite シェルを終了します。

    .quit

    重要: 「Continue」ボタンをクリックする前に、必ず .quit を実行してください。そうしないと、sqlite の履歴が記録されないため、ステップを検証できません。

LIKE 演算子を使用したパターンマッチング (Pattern Matching with the LIKE Operator)

LIKE 演算子は、パターンマッチングに使用されます。正確な値ではなく、特定のパターンに一致するデータを見つけたい場合に役立ちます。% (0 個以上の文字) や _ (単一の文字) などのワイルドカードを使用します。

  1. employees.db データベースに接続します。

    sqlite3 employees.db
  2. 名前が A で始まる従業員を検索するには、次のコマンドを使用します。

    SELECT * FROM staff WHERE name LIKE 'A%';

    このコマンドは、staff テーブルからすべての列を選択しますが、name 列が A で始まる行のみを含めます。% ワイルドカードは、0 個以上の文字に一致します。出力は次のようになります。

    1|Alice|HR
  3. 名前に文字 i が含まれる従業員を検索するには、次を使用します。

    SELECT * FROM staff WHERE name LIKE '%i%';

    このコマンドは、staff テーブルからすべての列を選択しますが、name 列に文字 i が含まれる行のみを含めます。出力は次のようになります。

    1|Alice|HR
    3|Charlie|HR
    4|David|IT
  4. SQLite シェルを終了します。

    .quit

ORDER BY 句を使用したデータのソート (Sort Data with the ORDER BY Clause)

ORDER BY 句を使用すると、クエリの結果をソートできます。昇順 (デフォルト) または降順でソートできます。

  1. employees.db データベースに接続します。

    sqlite3 employees.db
  2. データを name でアルファベット順に昇順でソートするには、次を使用します。

    SELECT * FROM staff ORDER BY name;

    このコマンドは、staff テーブルからすべての列を選択し、結果を name 列で昇順 (A から Z) にソートします。出力は次のようになります。

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
    4|David|IT
    5|Eve|Marketing
    6|Frank|IT
  3. name で降順にソートするには、次を使用します。

    SELECT * FROM staff ORDER BY name DESC;

    このコマンドは、staff テーブルからすべての列を選択し、結果を name 列で降順 (Z から A) にソートします。出力は次のようになります。

    6|Frank|IT
    5|Eve|Marketing
    4|David|IT
    3|Charlie|HR
    2|Bob|IT
    1|Alice|HR
  4. SQLite シェルを終了します。

    .quit

LIMIT 句を使用した結果の制限 (Limit Results with the LIMIT Clause)

LIMIT 句は、クエリによって返される行数を制限します。これは、データの一部のみが必要な場合に役立ちます。

  1. employees.db データベースに接続します。

    sqlite3 employees.db
  2. staff テーブルから最初の 3 行のみを取得するには、次を使用します。

    SELECT * FROM staff LIMIT 3;

    このコマンドは、staff テーブルからすべての列を選択し、結果を最初の 3 行に制限します。出力は次のようになります。

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
  3. LIMITORDER BY と組み合わせて、name で降順にソートされた最初の 2 人の従業員を取得します。

    SELECT * FROM staff ORDER BY name DESC LIMIT 2;

    このコマンドは、staff テーブルからすべての列を選択し、結果を name 列で降順にソートし、結果を最初の 2 行に制限します。出力は次のようになります。

    6|Frank|IT
    5|Eve|Marketing
  4. SQLite シェルを終了します。

    .quit

まとめ (Summary)

この実験(Lab)では、SQLite データベースでデータをクエリ(query)し、フィルタ(filter)する方法を学びました。データベースに接続し、WHERE 句を使用してデータをフィルタリングし、LIKE 演算子でパターンを照合し、ORDER BY で結果をソートし、LIMIT を使用して返される行数を制限しました。これらのテクニックは、データを効果的に取得および整理するための基本的なスキルを提供します。