テーブルからレコードを取得する

今回は、テーブルに挿入されたレコードを取得するSQLを解説します。

レコードの取得にはSELECT文を使います。
前回の記事で使ったmembersテーブルからレコードを取得してみましょう。

SELECT id, name, age, address, registed_at FROM members;

SELECT文の書き方は次のとおりです。

SELECT 列名1, [列名2]... FROM テーブル名;

このクエリで、指定したテーブルの全レコードが取得できます。
また、列に関しては、指定した列のみ取得します。

phpMyAdmin

すべての列を取り出したいときは、列名に*を指定することもできます。

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文を使って指定した行、列のデータを取り出すことができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です