はじめに
株式会社インプルの奈良です。
前回は、SELECT文の基本的な用途である選択、射影、結合、合併について解説しました。
今回はさらに詳細な条件でデータをフィルタリングする方法を学びます。
解説で使用するテーブル構成(Peopleテーブル・Ordersテーブル)
Peopleテーブル:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
5 | Dave | 18 |
Ordersテーブル:
id | customer_id | product |
---|---|---|
1 | 2 | Apples |
2 | 2 | Bananas |
3 | 3 | Grapes |
4 | 5 | Oranges |
5 | 1 | Apples |
全ての行及び列の検索(*)
全ての列を検索するには、列名の代わりにアスタリスク(*)を使用します。
SELECT *
FROM People;
実行結果:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
5 | Dave | 18 |
特定の列の検索
特定の列だけを検索するには、列名を指定します。複数列を検索する場合は、列名をカンマで区切ります。
SELECT name, age
FROM People;
実行結果:
name | age |
---|---|
John | 20 |
Alice | 25 |
Bob | 30 |
Carol | 22 |
Dave | 18 |
比較演算子の指定
比較演算子(=, !=, <, >, <=, >=)を使用して特定の条件を満たす行を選択できます。
SELECT *
FROM People
WHERE age > 20;
実行結果:
id | name | age |
---|---|---|
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
論理演算子の指定
論理演算子(AND, OR, NOT)を使用して、複数の条件を組み合わせます。
SELECT *
FROM People
WHERE age > 20 AND name != 'John';
実行結果:
id | name | age |
---|---|---|
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
BETWEENの使用
BETWEEN演算子を使用して、指定した範囲内にある値を選択します。
SELECT *
FROM People
WHERE age BETWEEN 20 AND 30;
実行結果:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
3 | Bob | 30 |
4 | Carol | 22 |
INの使用
IN演算子を使用して、特定のセット内にある値(複数の値との比較=一致するかどうか)を選択します。
SELECT *
FROM People
WHERE name IN ('John', 'Alice'); // nameカラムが、JohnとAliceのものを抽出
実行結果:
id | name | age |
---|---|---|
1 | John | 20 |
2 | Alice | 25 |
LIKEの使用
LIKE演算子を使用して、特定のパターンに一致する値を選択します。ワイルドカード文字として ‘%’ と ‘_’ を使用できます。
% ・・・0文字以上の任意の文字列 例)’%impl%’・・・文字’impl’が含まれている文字列
_ ・・・任意の1文字 例)’____'(_4つ)・・・4文字を意味する
SELECT *
FROM People
WHERE name LIKE 'A%';
実行結果:
id | name | age |
---|---|---|
2 | Alice | 25 |
前方一致なら、’A%’、後方一致なら、’%A’、部分一致なら、’%A%’のようになります。抽出したい条件によって上手く使い分けましょう!
NULLの使用
NULL値は特殊な値で、値が存在しないことを示します。NULL値を検索または除外するにはIS NULLまたはIS NOT NULLを使用します。
SELECT *
FROM People
WHERE age IS NOT NULL;
今回の実行結果はNULLがないので全ての行が表示されます。しかし実際にNULLが存在する場合は、その行は除外されます。(※IS NOT NULLでNULLが存在する行を除外という意味)
さいごに
今回は、詳細な条件でデータをフィルタリングする方法について解説しました。
次回は、スカラー関数、集約関数、グループ化(GROUP BY、HAVING)、行の並び替え(ORDER BY)についての記事をまとめたいと思います。