ywork2020.com

Title

条件に一致したレコードを抽出する

目次 (INDEX)

WHERE とは

ここで説明する WHERE とは次の語句からなる SQL です。
where
読み: ウェアー
意味: どれ?、どこ?、どんな?

目次に戻る

WHERE の概要

WHERE句は、データベースにSELECT文でデータ照会の問い合わせをする時に、照会条件を指定するために使います。 データベースが条件付きの問い合わせに対してどの様にデータを返してくるかを実機サンプルとサンプルコードで確認してみて下さい。

目次に戻る

サンプルデータベースとテーブルの構造

データ抽出用のサンプルテーブルが必要でしたので事前に作成しています。
ここではテーブル作成までのクエリを簡易的に書いておきます。

目次に戻る

データベースの作成

サンプルデータベースを以下のクエリで作成しました。

CREATE DATABASE 任意のデータベース名;

目次に戻る

データベースの選択

サンプルデータベースを選択して利用できるようにします。

USE 任意のデータベース名;

目次に戻る

サンプルテーブルの作成

サンプルテーブルを以下のクエリで作成しました。

CREATE TABLE japan(
	県番号 int(11),
	都道府県 varchar(10),
	県庁所在地 varchar(10),
	地方 varchar(10)
);

目次に戻る

作成済みのサンプルテーブルの説明

現在、データベースには上記のクエリを使ってjapanテーブルを作成しており、そのテーブルに47都道府県のデータを登録した状態になっています。

カラム1
(県番号)
カラム2
(都道府県)
カラム3
(県庁所在地)
カラム4
(地方)
データデータデータデータ
データデータデータデータ

目次に戻る

クエリの説明と実機サンプルを使った検証

ここからは実際に稼働しているデータベースに接続してクエリを実行していきます。 下記に配置された各ボタンをクリックすると、ボタンに書かれているサンプルクエリを実行して結果を表示します。

SELECT文の基本的な使い方

構文:
SELECT * FROM テーブル名;

実行:

説明:
データ抽出の基本構文です。
指定したテーブルのデータを全件、全フィールドで抽出します。 この単純なクエリはデータ量が少ない場合や開発段階では利用することが多いと思いますが、実際の運用では使いません。

SELECT * で全てのカラムが選択されます。
FROM 任意テーブル名 でデータの抽出対象テーブルを指定します。

目次に戻る

SELECT文にWHERE句を利用して条件一致レコードを抽出する方法

構文:
SELECT * FROM テーブル名 WHERE 条件フィールド='条件';

実行:

説明:
任意のフィールドで条件に該当したレコードだけを抽出します。
抽出条件をしていするにはWHERE句を使います。
[WHERE 地方='関東']で地方フィールドが'関東'のレコードのみの抽出となります。

目次に戻る

2つの条件を提示して、両方の条件を満たしているレコードだけを抽出する方法

構文:
SELECT * FROM テーブル名 WHERE 条件フィールド='条件' AND 条件フィールド='条件';

実行:

説明:
2つの条件を提示して、両方の条件を満たしているレコードだけを抽出します。
多重条件を指定するにはAND句を使用します。
[WHERE 地方='関東' AND 県番号>=10]の部分で2つの条件を提示しています。

目次に戻る

2つの条件を提示して、どちらかの条件を満たしているレコードを抽出する方法

構文:
SELECT * FROM テーブル名 WHERE 条件フィールド='条件' OR 条件フィールド='条件';

実行:

説明:
2つの条件を提示して、どちらかの条件を満たしているレコードを抽出します。
複数の条件を指定するにはOR句を使用します。
[WHERE 県番号>=40 OR 地方='中部']の部分で2つの条件を提示しています。

目次に戻る

WHERE 1=1 について

このページの実行サンプルのコードに「WHERE 1=1」というコードが含まれていることについては他のページで説明をしています。
実際のSQLには必要のないものですが、あえて、このページのコードには「WHERE 1=1」を付けてみました。
気になる方は、下記のページを参照して下さい。
WHERE 1=1 について

目次に戻る

SQL の仕様上の注意点

※ SQL の予約句はアルファベットの大文字と小文字を区別しませんが、 任意で作成したデータベースやテーブル、カラムの名前などは区別されるので注意が必要です。

目次に戻る