条件に合うデータを抽出する③
💡前回の記事では、論理演算子を使用して、複数の条件に当てはまるデータの抽出を学びました。今回は前回の応用を学んでいきましょう。
IN
ORを使用して二つ以上の条件中で一つの条件だけ一致するデータを検索できました。
SELECT *
FROM Customers
WHERE Country = 'Germany'
OR Country = 'France';
上記と同様の場合Countryが重複されて条件が多ければ多いほど文章が長くなります。
SELECT *
FROM Customers
WHERE Country
IN ('Germany', 'France');
このようにINを使用して一つにまとめることができます。
INは結果に含めたい値のリストを指定できるSQLの論理演算子です。データのタイプ関わらずリストの値はコンマ(,)で区切ります。
SELECT *
FROM TableName
WHERE ColumnName
IN (Value1, Value2, ...);
Example
SELECT *
FROM Customers
WHERE Country
IN ('Germany', 'France', 'Korea');
SELECT *
FROM Customers
WHERE Country = 'Germany'
OR Country = 'France'
OR Country = 'Korea';
同様にORを使用して書き換えることもできます。
BETWEEN
ANDを使用して二つ以上の条件を全て一致するデータを検索できました。
SELECT *
FROM Customers
WHERE CustomerID >= 3
AND CustomerID <= 5;
上記の場合CustomerIDが重複されて条件が多ければ多いほど文章が長くなれます。なので、下記ようにANDを使用して構文を減らせます。
SELECT *
FROM Customers
WHERE CustomerID
BETWEEN 3
AND 5;
BETWEENはSQLで特定の範囲内にあるデータだけ選択できる論理演算子としてAND演算子と対をなして始まる値と終わりの値を含めます。
SELECT *
FROM TableName
WHERE ColumnName
BETWEEN ConditionA
AND ConditionB;
SELECT *
FROM TableName
WHERE ColumnName >= ConditionA
AND ColumnName <= Conditoin B;
同様にANDを使用して書き換えることもできます。
Example
数字データを検索する場合です。
SELECT *
FROM Products
WHERE CustomerID
BETWEEN 10
AND 20;
文字列データを検索する場合です。
SELECT *
FROM Products
WHERE CustomerID
BETWEEN 'A'
AND 'B';
日付のデータを検索する場合です。
SELECT *
FROM Orders
WHERE CustomerOrder
BETWEEN '2022-02-01'
AND '2022-02-28';
IS NULL & IS NOT NULL
今までは、各データの値が全て存在すると仮定したが、実際は空いている(NULL又はNaN)が場合があります。
テーブル内に入力されてないデータはNULLで保存され、IS NULLでNULL値を検索できます。NULLを検索する場合は=演算子ではなくてIS NULLを使用しなければなりません。逆にNULLではないデータを検索する場合はIS NOT NULLを使用すれば良いです。
SELECT *
FROM Customers
WHERE CustomerID IS NULL
NULLは特別な値なので=を使用して検索できません。
SELECT *
FROM Customers
WHERE CustomerID = NULL
Example
例えば、下記ようなProductテーブルが存在する場合です。
SELECT *
FROM Product
WHERE ProductName IS NULL;
IS NULLを実行してNULLの場合を検索すると下記の結果が検索されます。
SELECT *
FROM Product
WHERE ProductName IS NOT NULL;
💯ここまでの学習お疲れ様でした!データ抽出の基本は網羅できたと思います。次回はデータの順番整列やクレンジングの側面でTipsを記事にしたいと思います。