テーブルからレコードを取得する
今回は、テーブルに挿入されたレコードを取得するSQLを解説します。
レコードの取得にはSELECT文を使います。
前回の記事で使ったmembersテーブルからレコードを取得してみましょう。
SELECT id, name, age, address, registed_at FROM members;SELECT文の書き方は次のとおりです。
SELECT 列名1, [列名2]... FROM テーブル名;このクエリで、指定したテーブルの全レコードが取得できます。
また、列に関しては、指定した列のみ取得します。

すべての列を取り出したいときは、列名に*を指定することもできます。
SELECT * FROM members;取り出したいレコードを絞り込むにはSELECT文にWHERE句を用います。
例えば、idが1のレコードを取得したい場合は次のようなクエリになります。
SELECT * FROM members WHERE id = 1;WHERE句の後ろには条件式を書きます。
この例では、「列idの値が1である」という条件式になっています。「列名 = 1」という等価比較ですね。
プログラミング言語では「id = 1」と書くとid変数に1を代入するという意味になりますが、SQLの場合は代入ではなく等価比較です。
不等価比較もできます。次の2つのクエリはどちらも不等価比較です。
-- idが1以外のレコード
SELECT * FROM members WHERE id != 1;
SELECT * FROM members WHERE id <> 1;いろいろな条件でレコードを絞り込んでみましょう。
-- 20歳以上
SELECT * FROM members WHERE age >= 20;
-- 20歳以上かつ60歳未満
SELECT * FROM members WHERE age >= 20 AND age < 60;
-- 20歳未満または60歳以上
SELECT * FROM members WHERE age < 20 OR age >= 60;取り出したレコードの並び順を指定することもできます。
レコードの並び順を指定するにはORDER BY句を用います。
-- 登録日時で昇順
SELECT * FROM members ORDER BY registed_at ASC;
-- 登録日時で降順
SELECT * FROM members ORDER BY registed_at DESC;ORDER BY句は、「ORDER BY 列名 並び順」のように書きます。並び順はASCが昇順、DESCが降順です。
次のように、複数の並び順指定をすることもできます。
SELECT * FROM members ORDER BY age ASC, registed_at DESC;この場合、まず年齢の昇順で並び替えて、さらに同一年齢の中では登録日時の降順で並び替えます。
このように、SELECT文を使って指定した行、列のデータを取り出すことができます。
