データを取得するのは、データベースの操作において最もよく使う基本的な操作のひとつです。
そこで今回は、SELECT文を使ったデータ取得の基本について説明します。
データを取得する「SELECT」の基本形
MySQLでテーブルに保存されたデータを取得するには、SELECT文を使います。基本となるのは、以下のような書式です。
1 |
SELECT カラム1, カラム2 ... FROM [データベース.]テーブル; |
USEで使用するデータベースを既に指定している場合は、データベースは省略できます。
取得するカラムを指定する
取得するカラムは、SELECTの直後に、カンマ区切りで複数指定できます。また、カラム名の代わりにアスタリスク「*」を使うことで全カラムを取得できます。
全カラムを取得する
1 |
SELECT * FROM テーブル; |
カラム名に名前をつける
また、カラム名にはASを使って任意の名前(エイリアス)をつけることができます。
1 |
SELECT カラム1 AS エイリアス1, カラム2 AS エイリアス2 FROM テーブル; |
ASを使わずに「カラム名 エイリアス名」とスペース区切りにすることでも、エイリアスは設定できます。
1 |
SELECT カラム1 エイリアス1, カラム2 エイリアス2 FROM テーブル; |
取得条件を設定する「WHERE」句
テーブルから指定した条件に合致するデータのみを取得するには、WHERE句を使います。
WHERE句では、複数条件がある場合は「AND」または「OR」でつなげます。
条件1かつ条件2に合致するデータを取得
1 |
SELECT * FROM テーブル WHERE 条件1 AND 条件2; |
条件1または条件2に合致するデータを取得
1 |
SELECT * FROM テーブル WHERE 条件1 OR 条件2; |
取得結果をグループ化する「GROUP BY」
取得したデータをカラムによってグループ化するには、「GROUP BY」を使います。
1 |
SELECT * FROM テーブル GROUP BY カラム; |
例えば、カテゴリ別のID、Title, Text, Categoryというカラムがあるarticlesテーブルがあるとします。この時、カテゴリ別の記事数を取得するクエリは以下のようになります。
1 |
SELECT Category, count(*) as num FROM articles GROUP BY Category; |
カラム数をカウントするcount()関数を使います。
取得結果の並び順を変更する「ORDER BY」
ORDER BYによって、取得したデータを任意のカラムのデータによって昇順・降順にソートすることができます。
1 |
SELECT * FROM テーブル ORDER BY カラム [DESC|ASC]; |
ASCを指定すると昇順、DESCを指定すると降順でソートされます。デフォルトでは、昇順のASCなのでORDER BYではDESCを使うことが多いです。
取得するデータ件数を指定する「LIMIT」
LIMITでは取得するデータの件数を指定できます。
1 |
SELECT * FROM テーブル LIMIT 整数; |