【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法

こんにちは。

前回のレッスンでは、SELECT文について説明をしました。
指定するカラムを指定したり、すべてのカラムを指定する方法について説明をしました。
では、特定の条件でデータを抽出する場合はどのようにしたらいいでしょうか?
その時に使うのが今回のレッスンで説明をするWhereです。
プログラミング言語のPythonのライブラリPandas入門講座をみていただいている方は、Pandas入門講座レッスン7で紹介したqueryメソッドと同じ働きだと考えてもらってよいです。
Pandasのqueryメソッドをやったことある方は、SQLのWhereがすぐに頭に入ってくると思いますし、反対にSQLのWhereを理解できればPandasのqueryメソッドもすぐにわかると思います。
SQLのレッスンでは、Pandasの対応についても紹介していきます。
データ加工が得意のPythonのPandasを学習したことのない方はぜひ、そちらも学んでみてください。


それでは、レッスンスタートです。

WHEREとは

WHEREは、SELECT文にWHEREを付けることで、テーブルの中の特定の条件の行を取得できます。
列指定はSELECTで、行指定はWHEREですると覚えておけば良いでしょう。

WHEREの使い方

それでは、実際にSELECT文にWHEREを追加し、行単位で抽出してみましょう。
まず最初に、WHEREを追加したSELECT文の構文をみてみましょう。

SELECT カラム名 
FROM テーブル名 
WHERE 条件式;


WHEREは、FROMの後に付けます。
条件式にはイコールや大なり、小なり、否定などの使った式が入ります。
具体例をみてみましょう。

SELECT * 
FROM test_table 
WHERE id = 2


前回使用したテーブルから、idが2のデータのみ取得します。
Whereと書いて、id = 2という条件式を記述することで、idが2のデータだけを抽出することができます。
SELECTの後のアスタリスクはテーブルのすべての列を取得するという意味でしたね。
なので、このSQLは日本語に直すと「test_tableテーブルからidが2のデータをすべての列取得する」という意味になります。

SELECT * 
FROM test_table 
WHERE id <= 2

さらに、条件式に大なりや小なりを使うことで、〇〇以上、〇〇以下のデータの抽出もできるようになります。
このSQLを実行すると、以下の通りidが2以下の行が抽出されます。

SELECT * 
FROM test_table 
WHERE id >= 2


2以上の場合はこれ。

SELECT * 
FROM test_table 
WHERE id > 2

超えるはこれ、

SELECT * 
FROM test_table 
WHERE id < 2


未満はこれでしたよね。

SELECT *
FROM test_table 
WHERE id != 2


また、例えば「idが2以外のデータ」のような否定を使いたい場合は、エクスクラメーション、イコールという書き方になります。¥
このSQLを実行すると、以下の通りidが2以外の行が抽出されます。
実行します。

SELECT * 
FROM test_table 
WHERE 商品名 = 'ニット'


ここまでidを使ってWHEREの説明をしてきましたが、次はnameを使って条件式を組み立ててみましょう。
idは数値でしたがnameは文字列なので、条件式には文字列を入れる必要があります。
SQLでは、文字列はシングルクォートで囲む必要があります。
では試しに商品名でニットを指定してデータを抽出してみます。
次のSQLを実行します。

SELECT * 
FROM test_table 
WHERE 商品名 != 'ニット'


このSQLを実行すると、以下の通りnameがAkiyamaの行が抽出されます。

nameが文字列なので大なり、小なりは使わないですが、否定に関しては数値と同じように使用できます。

以上が、基本的なWHEREの使い方です。