こんにちは。
前回のレッスンでは、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の使い方です。