オラクルのSQLの勉強メモまとめ
いま、この問題集を解いてオラクルマスターのブロンズのSQLの勉強をしてるのですが、そのメモのまとめです。
徹底攻略 ORACLE MASTER Bronze 12c SQL基礎問題集[1Z0-061]対応
- 作者: 佐藤明夫,株式会社ソキウス・ジャパン
- 出版社/メーカー: インプレス
- 発売日: 2014/09/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
自分がよく忘れる部分の箇条書きです。
- SQLはStructured Query Languageの略
- PL/SQLは、SQLに条件分岐とか変数とかの機能を追加した、オラクル社独自のプログラミング言語
- 一重引用符で囲むもの:文字リテラル、日付リテラル、日付書式、数値書式
- 二重引用符で囲むもの:ネーミング規則に従わない名前、日付書式中の文字リテラル
- NULLを含む計算式の結果はNULLになる
- NULLと文字列を連結すると文字列になる
- 比較演算子を使うとき、NULL値は検索対象外
- ORDER BY句では、NULL値は無限大とみなされる
- WHERE句では、文字リテラルの大文字と小文字は区別される
- SELECT文の中で列別名を使用できるのはORDER BY句のみ
- 表別名を指定した時は、列名修飾に表別名を使わないとエラーになる
- SUBSTRは文字を抽出する関数、INSTRは指定文字列の位置を戻す関数
- デフォルトの日付書式はDD-MON-RR
- NEXT_DAYは曜日の次の日付を戻す関数
- ROUNDやTRUNCの第二引数は、デフォルトが0で整数、1だと小数点第一位まで戻す、と覚える
- 数値書式要素に¥(円の記号)はないので、ローカルの通過記号を表示するLを使う
- WHERE句では、グループ関数を使うことはできない(WHERE句では、グループに分ける前に戻す行を制限している)。グループ化の後に戻す行を制限するには、HAVINGを使う。
- WHERE句の中でグループ関数(SUMとかAVGとか)を使うとエラーになるので、副問合せを使う
- TO_DATE関数の、年月などの省略時のデフォルトは、当年/当月/1日/午前0時0分0秒
- 自然結合とUSING句による結合では、結合に使われた表名や表別名で修飾するとエラーになる
- 副問合せは、SELECT文の中ではWHERE句、HAVING句、FROM句の中で使用できる
- NATURAL JOIN句とUSING句は、一度にどちらかしか使えない
- 集合演算子を使用する時、SELECT文では、「選択する列の数」「対応する列のデータ型の種類」が一致しなければならない
- UNION ALLは行をそのままくっつける
- UNIONは行をくっつけて重複を消してソートする
- INTERSECTは両方の問い合わせに共通の行を選んで、重複を消してソートする
- MINUSは最初の問合せから、2番目の問合せにもあった行を引いて(消して)、重複を消してソートする
- DML文は、データ操作言語のことで、SELECT、INSERT、UPDATE、DELETEなどがある
- INSERT文⬇︎
- 列名は省略可能(INSERT INTO 表 VALUES〜)、すべての列に対して値を指定する。
- 表の後に列名をリストするとき、一部列を省略するとデフォルト値が入る(デフォルト値は変更してなければnull)。
- UPDATE文とDELETE文⬇︎
- 同時に複数行を操作(更新/削除)できる
- where句を省略すると表内のすべての行を操作(更新/削除)する
- SELECT〜FOR UPDATE文を使うと、行レベルで排他ロックできる
- スキーマ名のデフォルトは自分のユーザー名
- varchar2(n)の n は最大長を表し、nを超えるデータはエラーになる
- number(p,s)の p は精度(全桁数)で、 s は位取り(小数点以下の桁数)
- 制約には5種類ある。列レベル構文でのみ定義できるのがNOT NULL制約であり、列レベルと表レベルのどちらでも定義できるのがUNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK制約である
- 外部結合演算子(+)は、全ての行が取り出されない方の後ろに書く。
where emp.deptno(+)=dept.deptnoなら、dept表は全行表示する。