SQLite - SELECT クエリ
こんにちは、未来のデータベース魔术師たち!今日は、SQLiteの魔法の世界に飛び込み、強力なSELECTクエリを探求します。コードを書いたことがない人も心配しないでください。この冒険を案内するあなたの親切なガイドとなります。このレッスンの終わりには、プロのようにデータベースをクエリできるようになります!
基礎を理解する
本題に入る前に、SELECTクエリが何をするのかを理解しましょう。情報の宝箱(データベース)があって、特定のアイテムを見つけたいとします。SELECTクエリはあなたの宝蔵の地図のようなもので、探し物を見つけて取り出す手助けをしてくれます。
最初のSELECTクエリ
簡単な例から始めましょう。students
というテーブルがあり、id
、name
、age
というカラムがあります。このテーブルからすべての情報を取得するには以下のようにします:
SELECT * FROM students;
このクエリは「宝箱を開けて、中のすべての宝贝を見せてくれ」と言っているようなものです。
特定のカラムを選択する
では、studentsテーブルの名前だけを見たい場合どうしますか?もっと具体的に指定できます:
SELECT name FROM students;
このクエリは「宝箱の中から名前のタグだけを見せてくれ」と言っているようなものです。
WHEREを使用して条件を追加する
もっと選択肢を絞りたい場合があります。例えば、18歳の学生をすべて見つけたい場合:
SELECT * FROM students WHERE age = 18;
このクエリは条件を追加しています。これは「宝箱の中から18歳のアイテムだけを見つけてくれ」と言っているようなものです。
高度なSELECT技術
結果を特定の順序で並べる
特定の順序で結果を見たい場合はどうしますか?問題ありません!例えば、学生を年齢の順に並べる:
SELECT * FROM students ORDER BY age ASC;
ASCは昇順を意味します。降順に並べたい場合はDESC(降順)を使用します。
結果を制限する
時々、結果の一部だけを見たい場合があります。例えば、最も年齢が高い5人の学生を見る:
SELECT * FROM students ORDER BY age DESC LIMIT 5;
このクエリは並べ替えと制限を組み合わせています。これは「宝箱の中から最も古い5つの宝贝を見せてくれ」と言っているようなものです。
出力カラムの幅を設定する
ターミナルやコマンドラインインターフェースでSQLiteを使用していると、時々出力が少し乱雑に見えることがあります。心配しないでください!カラムの幅を設定して整頓することができます。
以下のように設定します:
.width 10 20 5
SELECT id, name, age FROM students;
これは最初のカラムの幅を10文字、二番目のカラムの幅を20文字、三番目のカラムの幅を5文字に設定します。これは宝箱を整頓してすべてがきれいに収まるようにするようなものです。
スキーマ情報
時々、宝箱(テーブル)の中に何が入っているか忘れてしまうことがあります。SQLiteには便利なコマンドがあります:
.schema students
これはstudentsテーブルの構造、すべてのカラムとそのデータ型を表示します。宝箱の地図を持っているようなものです。
すべてを組み合わせる
いくつかの概念を組み合わせたもっと複雑なクエリを見てみましょう:
SELECT name, age
FROM students
WHERE age > 18
ORDER BY name ASC
LIMIT 10;
このクエリは「18歳以上の学生の名前と年齢をアルファベット順に並べて、最初の10人だけを見せてくれ」と言っています。
一般的なSQLite SELECTメソッド
以下は一般的なSQLite SELECTメソッドのリファレンス表です:
メソッド | 説明 | 例 |
---|---|---|
SELECT | 1つまたは複数のテーブルからデータを取得 | SELECT * FROM table_name; |
WHERE | 条件に基づいてレコードをフィルタリング | SELECT * FROM table_name WHERE condition; |
ORDER BY | 結果セットを並べ替える | SELECT * FROM table_name ORDER BY column_name; |
LIMIT | 返す最大の行数を指定 | SELECT * FROM table_name LIMIT number; |
DISTINCT | はずんで(異なる)値だけを返す | SELECT DISTINCT column_name FROM table_name; |
GROUP BY | 同じ値を持つ行をグループ化 | SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; |
HAVING | グループに対する検索条件を指定 | SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > value; |
JOIN | 2つ以上のテーブルの行を結合 | SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name; |
練習が成功の鍵です!これらのクエリを試してみましょう。クエリを毎回実行するたびに、データの航海術が向上します。
私が教えてきた年月の中で、SQLiteを学ぶ最良の方法は実践であると発見しました。それで、少しの宿題を为你たちにします:お気に入りの本や映画に関する小さなデータベースを作成し、それに関する興味深い情報を探るクエリを書いてみてください。発見するかもしれない未知のことを知るでしょう!
未来のデータ探検家たち、快適なクエリを楽しんでください!記憶に残るデータベース管理者は、あなたが今いる場所から始まります。練習を続け、好奇心を持ち続け、すぐにデータの主宰者になるでしょう!
Credits: Image by storyset