この章では, WHERE 句についてみていきましょう。
行を選択するための探索条件を定義している3 行目を WHERE 句といいます。
SQLによる問合せ(データ探索)の基本構文は、次のような形式をとります。(復習です。)
--------------------------- --------------------------------------------
SQLステートメント 意味
--------------------------- --------------------------------------------
SELECT 列名リスト xxx列を抜き出して表示しなさい
FROM テーブル名リスト xxxテーブルから探索して
[WHERE 探索条件] 探索条件が真(true)になる行を選択して
[GROUP BY 列名リスト] xxx列の値でグルーピングして
[HAVING 探索条件] 探索条件が真(true)であるグループを選択して
--------------------------- --------------------------------------------
(※)[ ]内はなくてもよい。
条件式の書き方はいろいろありますが、
使用頻度の高い比較演算子には以下のものがあります。
比較演算子 比較述語 意味(XとYは列名か数値か文字定数である)
----------------- -------- -------------------------------------------
= 等号演算子 X = Y XとYが等しい。
> 超演算子 X > Y XがYより大きい
<> 不等号演算子 X <> Y XとYとが等しくない。
>= 以上演算子 X >= Y XがY以上である。
<= 以下演算子 X <= Y XがY以下である。
(注)文字定数は'(single quotation)ではさまなければならない。
■ 比較演算子
/* ch03-1 */
SELECT 氏名, 部署名
FROM 社員
WHERE 部署名 = '営業開発' ;
|
テーブル「社員」から部署名が「営業開発」である行を選択して、その行の氏名と部署名を表示します。
< 実行結果ch03-1 >

/* ch03-2 */
SELECT 氏名, 部署名
FROM 社員
WHERE 部署名 <> '営業開発'
;
|
テーブル「社員」から、部署名が「営業開発」ではない行を選択して、その行の氏名と部署名を表示します。
< 実行結果ch03-2 >
複数の条件
WHERE句以下の条件は、1 個の時もあれば、複数の時もあります。
条件式が複数存在する場合は、AND
演算子、OR 演算子を用います。
■ AND 演算子

条件 1 AND 条件 2

条件 1 が真でかつ条件 2 が真のとき、真の値をとる。
/* ch03-3 */
SELECT 商品名, 在庫, 単価
FROM 商品
WHERE 単価 > 1000
AND 単価 < 3000 ;
|
テーブル「商品」から単価が「1000」より大きく、かつ、「3000」より小さい行を選択して、
その行の商品名、在庫と単価を表示します。
< 実行結果ch03-3 >

■ OR 演算子

条件 1 OR 条件 2

条件 1 が真かまたは条件 2 が真のとき、真の値をとる。
/* ch03-4 */
SELECT 商品名, 発注済
FROM 商品
WHERE 発注済 <= 10
OR
発注済 >= 100 ;
|
テーブル「商品」から発注済が「10」以下か、または、「100」以上の行を選択して、
その行の商品名と発注済を表示します。
< 実行結果ch03-4 >
■ NOT 演算子
演算子と合わせて用いる NOT 演算子というものがあります。
NOT を付加すると”その条件に合致しない”という条件になります。

NOT ( 条件 1 )

条件 1 が真なら偽、条件 1 が偽なら真の値をとる。
/* ch03-5 */
SELECT 氏名, 部署名
FROM 社員
WHERE NOT ( 部署名 = '営業開発' ) ;
|
テーブル「社員」から部署名が「営業開発」ではない行を選択して、
その行の氏名と部署名を表示します。
ch03-2と比較してください。同じ結果が得られます。
< 実行結果ch03-5 >
■ BETWEEN A AND B 演算子

値式 1 BETWEEN 値式 2 AND 値式 3

値式 1 が値式 2 以上でかつ値式 3 以下のとき真の値をとる。
値式 2 と値式 3 の間。
<注意>
BETWEEN 述語の中の ANDは、条件式を結合するときの論理演算子としての AND ではなく、
BETWEEN 述語の一部です。
/* ch03-6 */
SELECT 社員コード, 氏名
FROM 社員
WHERE 社員コード
BETWEEN
100 AND 300 ;
|
テーブル「社員」から、社員コードが、「 100 」(100を含む)と「 300 」(300を含む) の間にある行を選択して、
その行の社員コードと氏名を表示します。
< 実行結果ch03-6 >
■ LIKE 演算子

列名 LIKE '文字パタン'

列がとる値(文字列)が、ある文字パタンに一致しているとき、真の値をとる。
条件を含む。
LIKE演算子を使って、ある文字列を含むという条件で検索することをパタンマッチングといいます。
/* ch03-7 */
SELECT 仕入先名, 担当者名
FROM 仕入先
WHERE 仕入先名 LIKE ' *
株式会社' ;
|
テーブル「仕入先」から仕入先名が「株式会社」で終わる行を選択して、
その行の仕入先名と担当者名を表示します。
<注意>
MS-Access を使用しているので、例では * (アスタリスク)を用いてますが、
Oracleでは %(パーセント)を使用します。
< 実行結果ch03-7 >
■ IN 演算子

値式 IN ( 値式 1 , 値式 2 , …)

値式が、値 1 、値 2 、… のどれかに一致するとき、真の値をとる。
条件のいずれかと一致。
/* ch03-8 */
SELECT 得意先コード, 得意先名, 郵便番号, 都道府県
FROM 得意先
WHERE 郵便番号 IN ( '006' , '985' , '286' ) ;
|
テーブル「得意先」から郵便番号が「006」か「985」か「286」で終わる行を選択して、
その行の得意先コード、得意先名、郵便番号と都道府県を表示します。
< 実行結果ch03-8 >

|