はじめに
この実験 (lab) では、SQLite データベースでデータをクエリ (query) し、フィルタ (filter) する方法を学びます。この実践的な実験 (hands-on lab) は初心者向けに設計されており、必須の SQL テクニックを紹介します。WHERE 句を使用してデータをフィルタリングする方法、LIKE でパターンをマッチングする方法、ORDER BY で結果をソートする方法、LIMIT で結果の数を制限する方法を学びます。この実験 (lab) を終える頃には、データベースから特定のデータを効率的に取得できるようになります。
SQLite への接続とデータの表示
この最初のステップでは、employees.db という名前の SQLite データベースに接続し、staff テーブル内のデータを表示します。これにより、操作するデータを理解することができます。
LabEx VM 環境でターミナルを開きます。デフォルトのディレクトリは
/home/labex/projectです。sqlite3コマンドラインツールを使用して、employees.dbデータベースに接続します。sqlite3 employees.dbこのコマンドは SQLite シェルを開き、
sqlite>プロンプトが表示されます。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テーブルの各従業員のid、name、およびdepartmentを示しています。SQLite シェルを終了するには、次のように入力します。
.quit重要: 「Continue」ボタンをクリックする前に、必ず
.quitを実行してください。そうしないと、sqlite の履歴が記録されないため、ステップを検証できません。
WHERE 句を使用したデータのフィルタリング
WHERE 句を使用すると、特定の条件に基づいてデータをフィルタリングできます。これを使用して、条件を満たす行のみを取得できます。
employees.dbデータベースに接続します。sqlite3 employees.dbHR部門の従業員のみを取得するには、次の SQL コマンドを使用します。SELECT * FROM staff WHERE department = 'HR';このコマンドは、
staffテーブルからすべての列を選択しますが、department列がHRに等しい行のみを含めます。出力は次のようになります。1|Alice|HR 3|Charlie|HR次に、
idが 3 より大きい従業員を検索してみましょう。SELECT * FROM staff WHERE id > 3;このコマンドは、
staffテーブルからすべての列を選択しますが、id列が 3 より大きい行のみを含めます。出力は次のようになります。4|David|IT 5|Eve|Marketing 6|Frank|ITSQLite シェルを終了します。
.quit重要: 「Continue」ボタンをクリックする前に、必ず
.quitを実行してください。そうしないと、sqlite の履歴が記録されないため、ステップを検証できません。
LIKE 演算子を使用したパターンマッチング
LIKE 演算子は、パターンマッチングに使用されます。正確な値ではなく、特定のパターンに一致するデータを見つけたい場合に役立ちます。% (0 個以上の文字) や _ (単一の文字) などのワイルドカードを使用します。
employees.dbデータベースに接続します。sqlite3 employees.db名前が
Aで始まる従業員を検索するには、次のコマンドを使用します。SELECT * FROM staff WHERE name LIKE 'A%';このコマンドは、
staffテーブルからすべての列を選択しますが、name列がAで始まる行のみを含めます。%ワイルドカードは、0 個以上の文字に一致します。出力は次のようになります。1|Alice|HR名前に文字
iが含まれる従業員を検索するには、次を使用します。SELECT * FROM staff WHERE name LIKE '%i%';このコマンドは、
staffテーブルからすべての列を選択しますが、name列に文字iが含まれる行のみを含めます。出力は次のようになります。1|Alice|HR 3|Charlie|HR 4|David|ITSQLite シェルを終了します。
.quit
ORDER BY 句を使用したデータのソート
ORDER BY 句を使用すると、クエリの結果をソートできます。昇順 (デフォルト) または降順でソートできます。
employees.dbデータベースに接続します。sqlite3 employees.dbデータを
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|ITnameで降順にソートするには、次を使用します。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|HRSQLite シェルを終了します。
.quit
LIMIT 句を使用した結果の制限
LIMIT 句は、クエリによって返される行数を制限します。これは、データの一部のみが必要な場合に役立ちます。
employees.dbデータベースに接続します。sqlite3 employees.dbstaffテーブルから最初の 3 行のみを取得するには、次を使用します。SELECT * FROM staff LIMIT 3;このコマンドは、
staffテーブルからすべての列を選択し、結果を最初の 3 行に制限します。出力は次のようになります。1|Alice|HR 2|Bob|IT 3|Charlie|HRLIMITをORDER BYと組み合わせて、nameで降順にソートされた最初の 2 人の従業員を取得します。SELECT * FROM staff ORDER BY name DESC LIMIT 2;このコマンドは、
staffテーブルからすべての列を選択し、結果をname列で降順にソートし、結果を最初の 2 行に制限します。出力は次のようになります。6|Frank|IT 5|Eve|MarketingSQLite シェルを終了します。
.quit
まとめ
この実験(Lab)では、SQLite データベースでデータをクエリ(query)し、フィルタ(filter)する方法を学びました。データベースに接続し、WHERE 句を使用してデータをフィルタリングし、LIKE 演算子でパターンを照合し、ORDER BY で結果をソートし、LIMIT を使用して返される行数を制限しました。これらのテクニックは、データを効果的に取得および整理するための基本的なスキルを提供します。


