2023.10.16
【MySQL】SELECTの使い方まとめ

UnsplashWillian Justen de Vasconcellosが撮影した写真

SELECTの基本

以下のコマンドで全レコードを取得できます。

SELECT [取得するカラム] FROM [テーブル名];
例)SELECT name, mail FROM users;

※取得するカラムに「*」を指定すると、全カラムを取得できます。

WHERE:検索条件の指定

「WHERE」を使うと指定した条件に合ったレコードを抽出できます。

WHEREは以下のように使います。

SELECT [取得するカラム] FROM [テーブル名] WHERE [条件]

指定カラムの値で抽出

「WHERE [カラム名] [比較演算子] [値]」の形で使います。

SELECT [取得するカラム] FROM [テーブル名] WHERE [カラム名] [比較演算子] [値];
例)SELECT * FROM users WHERE created_at >= "2023-10-15";

使用できる比較演算子については以下をご参照ください。

 https://dev.mysql.com/doc/refman/8.0/ja/comparison-operators.html

あいまい検索:LIKE

あいまい検索には「LIKE」と「% もしくは _」を使います。

以下はnameカラムに「company」が入っているレコードを抽出し、取得します。

SELECT [取得するカラム] FROM [テーブル名] WHERE [検索カラム名] LIKE '%[検索文字列]%';
例)SELECT * FROM users WHERE name LIKE '%company%';

※ %:任意の0文字以上の文字列
※ _ :任意の1文字

指定カラムがNULLのレコードを抽出:IS NULL

SELECT [取得するカラム] FROM [テーブル名] WHERE [検索カラム名] IS NULL;
例)SELECT * FROM users WHERE hobby IS NULL;

※「NULL」の代わりに「NOT NULL」とするとNULLでないレコードを取得することもできます。

複数条件で抽出:OR、AND

■OR

SELECT [取得するカラム] FROM [テーブル名] WHERE [条件1] OR [条件2];

■AND

SELECT [取得するカラム] FROM [テーブル名] WHERE [条件1] AND [条件2];

■条件の優先順位の指定

条件に優先順位をつけるには「()」を使います。

SELECT [取得するカラム] FROM [テーブル名] WHERE ([条件1] AND [条件2]) OR [条件3];

検索文字列のエスケープ:ESCAPE

以下は「%」をエスケープする例です。

例)SELECT * FROM users WHERE name LIKE '%company#%' ESCAPE '#';

上の例では「company%」の文字列を検索する例です。

エスケープ記号を指定し、エスケープしたい記号の直前に置きます。

レコードの集計

レコード数のカウントや抽出したレコードの合計を求めるなどで使えるコマンドです。

■レコード数のカウント

SELECT COUNT(*) FROM [対象テーブル];

■平均、合計、最小、最大を求める

以下は平均を求める例です。

SELECT AVG(対象カラム) FROM [対象テーブル]

「平均、合計、最小、最大」求めたい値に応じて以下を使用してください。

平均:AVG
合計:SUM
最小:MIN
最大:MAX

■グループ化する:GROUP BY

指定したカラムの値が同じものでまとめて集計するには「GROUP BY」を使います。

SELECT [表示するカラム] FROM [テーブル名] GROUP BY [グループ化に使うカラム名];

その他:ORDER BY、LIMIT、OFFSET

■取得したレコードをソートする

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

※昇順:ASC
※降順:DESC

■取得するレコード数を指定する

SELECT * FROM [テーブル名] LIMIT [取得するレコード数];
例)SELECT * FROM users LIMIT 3;

■検索開始レコードの位置を指定する

SELECT * FROM [テーブル名] OFFSET [開始レコード位置];
例)SELECT * FROM users OFFSET 4;

SELECTについては以上です。