20代プログラマー女が資格取得してみるブログ

ORACLE MASTERの資格取得に向けて勉強内容を記録します。

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章所感】

 普段使っている機能ばかりなので、基本的には知識の再確認という感じでした。

置換変数の「&」と「&&」の違いは知らなかったので、ここで勉強できて良かったです。

 

 

 

 

 

 

ORACLE MASTER Bronze 11g SQL基礎I 第2章の勉強記録

さて、第2章はSELECT句。 

上から順番にみていきます。

 

 【SELECT句の機能】

主な3つの機能の説明になります。

  • 投影→列のデータのみ選択し、抽出すること。
  • 選択→行のデータのみ選択し、抽出すること。
  • 結合→複数の表からデータを1つに結合し、抽出すること。

 

SQLに入る前の考え方の話です。

 

【基本的なSQL文(列の選択)】

構文の書き方、キーワード、句、文の違いについての説明。

  • 全項目取得したい場合はSELECT句で「*」を指定する。
  • DISTINCTは同じ内容のデータが複数ある場合、1行のみ表示する。

 

その他ルールとして、

  • 大文字と小文字は区別されない。
  • SQLは改行して書ける。
  • キーワードの省略不可

が挙げられていました。

 

【SELECT文の使い方】

1.算術演算子

  • SELECT句で指定する項目は、算術演算子を利用して計算できる。
  • 「*」「/」は「+」「-」より優先して計算される。
  • 式は左から右へ順番に実行される。

 

普通の計算式のルールにのっとっていますよ、ということです。

 

2.NULL値

NULL値を含む式の計算結果はなにがあってもNULLだよ、というお話。

「NULL+1」も「(3+NULL)/4」も、結果はNULL。

 

3.列別名

列名の直後に指定することができる。ASキーワードは省略可能と書かれていましたが、基本的には付けておいたほうが無難でしょうね。

読みやすいですし。

 

また、列別名を囲う二重引用符は、列ヘッダーをネーミング規則に沿わない形で表示させたい場合につけるもの、とありましたが、これ、わかってなかったです。

今後は用途によって使い分けようと思いました。

 

4.連結演算子

文字列と文字列を連結する「||」について。

ここでポイントなのは、文字列とNULLを結合したらどうなるのか、ということ。

答えは、文字列だけが残ります。

 (「NULL||'あ'」→「'あ'」)

 

5.リテラル文字列

何も考えずに使ってましたが、定数なんですね。

ポイントは、文字リテラル、日付リテラルは一重引用符で囲む必要があるけれど、数字リテラルは囲まないでいいということです。

 

6.代替引用演算子

リテラル内に「'」を入れるときどうすればいいの?というお話。

「''」で表現するのは知ってましたが、代替引用符演算子といって、開始デリミタと終了デリミタを一重引用符で囲ったあと、先頭にqをつける方法は初めて知りました。

(例、Q'<テスト>')

 こんなの、使ってる人いるのかな…。

 

7.DISTINCTキーワードについて

指定した列の重複したデータが削除される。

 

8.UNIQUEキーワードについて 

DISTINCTキーワードと同じ使い方、同じ意味で、重複行を削除する。

 

 【DESCRIBEコマンド】

表やらビューの定義を表示できる。

短縮形の「DESC」も利用可能、とあるけれど、 むしろ短縮形しか知らなかった。 

 

【演習問題】

3問中3問正解。

 

【第2章所感】

たかがSELECT文でも、理解できていないところが結構あり、恥ずかしい思いをしました。

 

 

Bronze Oracle Database 11g SQL基礎I編(試験番号:1Z0-051) (DVD付) (オラクルマスター教科書)

Bronze Oracle Database 11g SQL基礎I編(試験番号:1Z0-051) (DVD付) (オラクルマスター教科書)

 

 

 

 

 

 

ORACLE MASTER Bronze 11g SQL基礎I 第1章の勉強記録

資格取得してみるぞ、ということで、とりあえずこれから始めることにしました。

 

f:id:q_yutanpo:20170517231934j:image

 

調べたらもうアップグレードしてるんですね。

私がこの本を買ったのは結構前でタンスの肥やしになってたのを引っ張り上げてきたのですが、まだBronzeを取得するのに有効みたいなので、そのまま利用しようと思います。

 

まず第1章について。

 【リレーショナルデータベースとは】

データベースには、

  • 階層モデル
  • ネットワークモデル
  • リレーショナルデータベース

 の3つの種類があり、リレーショナルデータベースは二次元の表の集合で、オラクルでもこれが採用されていること、使いやすく柔軟なデータ構造を持っていることが書かれています。

 

そもそも「階層モデル」「ネットワークモデル」ってどこで使ってるんでしょう?

「リレーショナルデータベース」しか知らないなあと思いながら読みました。

 

【リレーショナルデータベースの用語】

表、行、主キー、列、フィールド、外部キー、親キーの説明。普通にORACLEを利用していたら理解できる範囲だと思います。

 

SQLとは】

SQLの分類として4種類を挙げていましたが、深く考えたことがありませんでした。

  • データ操作(DML)→表に対して更新や削除を行う。
  • データ定義(DDL)→表を作成、変更するなどデータベースの構造を定義する。
  • データ制御(DCL)→アクセス権の付与、削除する。
  • トランザクショントランザクションとして更新を制御する。

 

今のところ頭の片隅にいれておきます。

 

【演習問題】

全2問。とりあえず正解しました。

 

【第1章所感】

ある程度知ってる内容で、すっと読み終わりました。

ただ、SQLの4つの分類は、言葉を覚えられてなくて出題されたらまずいな、という不安が残りました。

 

こんな感じでゆるく進めていきます。

 

 

徹底攻略ORACLE MASTER Bronze 11gSQL 基礎I問題集[1Z0-051J]対応 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略ORACLE MASTER Bronze 11gSQL 基礎I問題集[1Z0-051J]対応 (ITプロ/ITエンジニアのための徹底攻略)