取得するデータの条件を設定(WHERE句)

SELECT 文でデータを取得する時に条件を指定しなければテーブルに含まれる全てのデータを取得しますが、 WHERE 句を使うことで条件に一致したデータだけを取得することができます。ここでは SQLite で WHERE 句を使って取得するデータの条件を設定する方法について解説します。

(Last modified: )

WHERE句を使った条件の設定

WHERE 句を利用することで取得するデータの条件を設定することができます。書式は次の通りです。

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

WHERE 句の後にどのようなデータを取得するのか条件式を記述します。どのような記述方法が可能なのかは後で見ていきますので、まずは簡単な例で試てみます。

----

それでは実際に試してみます。次のようなテーブルを作成しました。

create table user(name text, old integer, address text);

WHERE句を使った条件の設定(1)

INSERT 文を使ってテーブルにデータをいくつか格納しておきます。

insert into user values('Suzuki', 24, 'Osaka');
insert into user values('Honda', 18, 'Tokyo');
insert into user values('Yamada', 32, 'Osaka');
insert into user values('Endou', 35, 'Tokyo');
insert into user values('Kudou', 19, 'Nagoya');
insert into user values('Yoshida', 27, 'Osaka');
insert into user values('Hosoe', 26, 'Tokyo');

WHERE句を使った条件の設定(2)

取得するデータの条件を指定しないでデータを取得した場合は次のようにテーブルに含まれるすべてのデータを取得します。

select * from user;

WHERE句を使った条件の設定(3)

それでは条件式の簡単な例として特定のカラムに格納されている値が指定した値と一致するデータを取得してみます。次の例では address カラムの値が 'Tokyo' のデータを取得しています。

select * from user where address = 'Tokyo';

WHERE句を使った条件の設定(4)

同じように今度は address カラムの値が 'Osaka' のデータを取得しています。

select * from user where address = 'Osaka';

WHERE句を使った条件の設定(5)

今回は条件式として特定のカラムの値を指定して一致したデータを取得するというものでした。他にも比較演算子を使った条件式や論理演算子を使った条件式などを記述することができますのでこのあとでみていきます。

比較演算子を使った条件式

WHERE 句の中では次のような比較演算子が利用できます。

a = b   aとbは等しい
a <> b  aとbは等しくない
a > b   aはbより大きい
a >= b  aはb以上
a < b   aはbより小さい
a <= b  aはb以下

等しいと等しくないについては次の記述も利用できます。

a == b  aとbは等しい
a != b  aとbは等しくない

それでは比較演算子を使ったサンプルとして old カラムの値が 20 以上のデータを取得してみます。

select * from user where old >= 20;

比較演算子を使った条件式(1)

今度は address カラムの値が 'Osaka' ではないデータを取得してみます。

select * from user where address <> 'Osaka';

比較演算子を使った条件式(2)

どちらも条件式に記述した条件に一致したデータだけを取得することができました。

論理演算子を使った条件式

より複雑な条件式を記述するために論理演算子として AND 、 OR 、 NOT を利用することもできます。

where 条件式1 and 条件式2
where 条件式1 or 条件式2
where not 条件式

AND を使用すると条件式1と条件式2のどちらもみたす場合のデータを取得します。 OR を使用すると条件式1と条件式2の少なくとも1つの条件式を満たすデータを取得します。 NOT は否定です。条件式と一致するもの以外を取得します。

それでは論理演算子を使ったサンプルとして old カラムの値が 20 より大きく、且つ address カラムの値が 'Tokyo' のデータを取得します。

select * from user where old > 20 and address = 'Tokyo';

論理演算子を使った条件式(1)

条件に一致するデータだけが取得されました。

-- --

WHERE 句を使って取得するデータの条件を設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。