情報処理技術者試験の午前問題対策のホームページです。
趣 旨 

当ホームページのアクセス数No.1の『SQL講座』です。
マイクロソフトのAccessというデータベースソフトを利用して、10回の講義形式で、SQLを学んでいきます。

初級シスアドから目指すSQLというコンセプトのもと、なるべく分かりやすく、かつ、注意すべき点などを随所に盛り込みながら、解説していきます。

SQL講座のTopへ戻る

MENU
第3時限目:関係関数指定

MS-AccessでSQL
基本SELECT文
関係関数指定
集合関数指定
GROUP BY と HAVING
並べ換え
表の結合
挿入・更新・削除
副問合せ
練習問題







この章では, 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 >







第2時限目へ  第4時限目へ


このページのTopへ戻る
インフォメーション



© 2005 情報処理技術者試験対策 All rights reserved.
[PR] 情報セキュリティアドミニストレータ試験対策セキュアド試験午前問題徹底攻略セキュアド勉強会特訓PDCA式で学ぼう情報セキュリティ情報処理技術者試験 午前問題攻略
テクニカルエンジニア(情報セキュリティ)試験対策転職 就職ネイティブ音声日常英会話国語辞典