ORACLE MASTER Bronze 11g SQL基礎I 第3章の勉強記録
第3章はwhere句、order by句、置換変数の説明になります。第2章で、いかに私が理解できずにselect文を使用していたかわかってしまったので若干心が折れ気味ですが、頑張ります。
【行の選択(WHERE句)】
WHERE句と条件式の書き方のお話。
ポイントは、NULLを文字リテラルで検索すると評価結果も「NULL」になり、抽出の対象にならないこと。
【WHERE句の使い方】
使い方というよりもルールのお話。
- WHERE句には列別名を利用できない。
- 文字データと日付データは一重引用符で囲む必要がある。
- 検索する際の文字データは、大文字と小文字で区別される。
- 日付データの書式はあわせる必要がある。
(デフォルトはDD-MON-RR)
【WHERE句で使用する比較演算子】
1.「=」「>」「<」「<=」「>=」「< >」の使い方
「< >」は、左辺と右辺が等しくない場合に指定するもので、「!=」「^=」でも問題ありません。
2.BETWEEN比較演算子
- 「BETWEEN A AND B」で「A以上、かつB以下」のデータを抽出
- 「NOT BETWEEN A AND B」で、「Aより小さい、もしくは、Bより大きい」データを抽出
3.IN比較演算子
- 「IN(値1,値2)」で、セットされている値に該当するデータを抽出
- 「NOT IN(値1,値2)」で、セットされている値に該当しないデータを抽出
4.LIKE比較演算子
ワイルドカード文字を利用して、パターン文字列に合致するデータを抽出する。
- 「%」→0個以上の文字
- 「_」→1個以上に文字
5.ESCAPE識別子
ワイルドカード文字を単なる文字列として使用したい場合、ESCAPE文字を利用する。
例.WHERE TEST LIKE '%Q¥_R%' ESCAPE '¥'
これで、「Q_R」を含む文字列を検索することができます。
6.IS NULL演算子
NULLを検索する際は「IS NULL」「IS NOT NULL」しか利用できません。
ポイントはNULLをイコール「=」で検索してはいけないということ。
【論理演算子】
条件式の中で利用する「AND」「OR」「NOT」の使い方についてのお話。
ここでのポイントも、やはりNULLについてで、NOT INにセットされている値の中にNULLが含まれている場合、評価は必ず NULLになる。
【演算子の優先順位】
デフォルトの優先順位についての説明です。
ANDはORより優先されますが、カッコを使うことで反転できます。
【行のソート(ORDER BY句)】
ORDER BY句の説明。主なルールは下記のとおり。
- 必ずSELECT文の最後にいれること。
- ソート順は、ASC(昇順)、DESC(降順)に指定できる。デフォルトはASC
- 列名の代わりに列別名、位置番号も指定可能。
- SELECT句に含まれていない列値でもソート可能。
- NULLは無限大として扱われるが、「NULLS LAST」「NULLS FIRST」を指定すると、昇順でも最初、降順でも最後に戻すことができる。
【置換変数】
1.「&」「&&」変数の使い方について。
- 「&」変数は、SQLが実行された時点で値が破棄される。(同じセッション内で再度SQLを実行すると、値の入力を再度求められる。)
- 「&&」変数は、セッションが終了するまで値を保持するので、再度SQLを実行しても、保持している同じ値に置換されて実行される。
- 「DEFINE」「UNDEFINE」コマンドで、事前に置換変数に値を設定、解放しておくことができる。
- 「VERIFY」コマンドで、置換変数を値で置き換えた前後のSQLを表示するかどうか設定できる。
【演習問題】
全3問中に2問正解。
ORDER BY句の指定方法の問題で間違えてしまった。
DESC、ASCは項目単位でつけるものだから、ある項目で一旦昇順にした後、べつの項目で降順にソートできるということを、理解する必要がありました。
【第3章所感】
普段使っている機能ばかりなので、基本的には知識の再確認という感じでした。
置換変数の「&」と「&&」の違いは知らなかったので、ここで勉強できて良かったです。