MySQLでデータを取得する「SELECT」の基本

データを取得するのは、データベースの操作において最もよく使う基本的な操作のひとつです。

そこで今回は、SELECT文を使ったデータ取得の基本について説明します。

データを取得する「SELECT」の基本形

MySQLでテーブルに保存されたデータを取得するには、SELECT文を使います。基本となるのは、以下のような書式です。

SELECT カラム1, カラム2 ... FROM [データベース.]テーブル;

USEで使用するデータベースを既に指定している場合は、データベースは省略できます。

取得するカラムを指定する

取得するカラムは、SELECTの直後に、カンマ区切りで複数指定できます。また、カラム名の代わりにアスタリスク「*」を使うことで全カラムを取得できます。

全カラムを取得する

SELECT * FROM テーブル;

カラム名に名前をつける

また、カラム名にはASを使って任意の名前(エイリアス)をつけることができます。

SELECT カラム1 AS エイリアス1, カラム2 AS エイリアス2 FROM テーブル;

ASを使わずに「カラム名 エイリアス名」とスペース区切りにすることでも、エイリアスは設定できます。

SELECT カラム1 エイリアス1, カラム2 エイリアス2 FROM テーブル;

取得条件を設定する「WHERE」句

テーブルから指定した条件に合致するデータのみを取得するには、WHERE句を使います。

WHERE句では、複数条件がある場合は「AND」または「OR」でつなげます。

条件1かつ条件2に合致するデータを取得

SELECT * FROM テーブル WHERE 条件1 AND 条件2;

条件1または条件2に合致するデータを取得

SELECT * FROM テーブル WHERE 条件1 OR 条件2;

取得結果をグループ化する「GROUP BY」

取得したデータをカラムによってグループ化するには、「GROUP BY」を使います。

SELECT * FROM テーブル GROUP BY カラム;

例えば、カテゴリ別のID、Title, Text, Categoryというカラムがあるarticlesテーブルがあるとします。この時、カテゴリ別の記事数を取得するクエリは以下のようになります。

SELECT Category, count(*) as num FROM articles GROUP BY Category;

カラム数をカウントするcount()関数を使います。

取得結果の並び順を変更する「ORDER BY」

ORDER BYによって、取得したデータを任意のカラムのデータによって昇順・降順にソートすることができます。

SELECT * FROM テーブル ORDER BY カラム [DESC|ASC];

ASCを指定すると昇順、DESCを指定すると降順でソートされます。デフォルトでは、昇順のASCなのでORDER BYではDESCを使うことが多いです。

取得するデータ件数を指定する「LIMIT」

LIMITでは取得するデータの件数を指定できます。

SELECT * FROM テーブル LIMIT 整数;

イベント

2017/12/05(火)
Design Thinking Square