So-net無料ブログ作成

SQL の基礎 その5 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。SQL の基礎 その4 の続き。

RR日付書式

  表示する年00~49 現在の年号50~99
現在の年XX00~XX49 現在の世紀 前の世紀
現在の年XX50~XX99 次の世紀 現在の世紀

※現在2010年 '09' -> 2009年、現在1998年 '09' -> 2009年

ANY と ALL

  • > ANY
    いずれかより大きい = 最小より大きい

  • > ALL
    全てより大きい =最大より大きい

NEXTVAL と CURRVAL

  • 使用可能
    • SELECT文のSELECT句の内、副問い合わせ以外の SELECT句
    • UPDATE文のSET句
    • INSERT文のVALUES句
    • INSERT文で使用する副問い合わせ内のSELECT句
  • 使用不可能 
    • SELECT分や、DELETE文、UPDATE文の副問い合わせ内のSELECT句
    • GROUP BY句やHAVING句、ORDER BY句を使用するSELECT文
    • DISTINCTを使用するSELECT句
    • CREATE TABLE文やALTER TABLE文内のDEFAULT式
    • ビューのSELECT句

デカルト積

  • 明示する場合は CROSS JOIN

SQL の基礎 その4 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。SQL の基礎 その3 の続き。

日付関数

  • ADD_MONTHS(日付,n)
    日付に nヶ月を加算する。

  • MONTHS_BETWEEN(日付1,日付2)
    日付1から日付2を減算した月数を戻す。日数部分は小数点。日付1が日付2よりも古いときは負になる。

  • LAST_DAY(日付)
    月末の日付を返す。

  • NEXT_DAY(日付,'文字列')
    指定した日付より後の指定曜日の日時を返す。
    例: NEXT_DAY(DATE '2010-01-01', '月曜日')  '月曜日' の部分は環境依存。'月曜' も可。

日付書式要素

要素  説明 結果 補足
YYYY 2005  
MM 2桁数値による月 04  
MONTH 月の名前 APRIL 日本語環境の場合「4月」
MON 月の名称 APR 日本語環境の場合「4月」
DDD 年における日数 091 年のはじめから数えた日数
DD 月における日数 01 月のはじめから数えた日数(=日付)
D 週における日数 6 週のはじめから数えた日数(日曜が1で土曜が7)
DAY 曜日の名前 FRIDAY 日本語環境の場合「金曜日」
DY 3文字の曜日の略称 FRI 日本語環境の場合「金」

※結果欄は「2005-04-01 金曜日」をそれぞれの書式で表示した結果
※出典 ORACLE MASTER Bronze SQL基礎Ⅰ模擬問題集,株式会社CSK 教育サービス事業部,株式会社アスキー,2005

日付書式要素:時刻書式

要素  説明 結果 補足
AM または PM 正午標識 PM 日本語環境の場合「午後」
HH または HH12 時間、12時間書式 07  
HH24 時間、24時間書式 19  
MI 30  
SS 20  

※結果欄は「午後7時30分20秒」をそれぞれの書式で表示した結果
※出典 ORACLE MASTER Bronze SQL基礎Ⅰ模擬問題集,株式会社CSK 教育サービス事業部,株式会社アスキー,2005
  • 「分」が「MI」であることに注意。

数値書式要素

  • 0 は先頭の数値が0のとき0を戻す。 TO_CHAR(1234,'0999') -> 01234
  • 9 は空白を戻す。 TO_CHAR(0.5,'99.99' -> _ _ .50

SQL の基礎 その3 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。 SQL の基礎 その2 の続き。

順序

  • 順序を作成した後、開始番号(START WITH) は変更できない。変更する場合は順序を削除し再作成する。

ビュー

  • ビューの元になる表を削除してもビューは削除されないが、使用できない。
  • ビューを通して実表を操作するには制限がある。
  行の削除
(DELETE)
行の変更
(UPDATE)
行の挿入
(INSERT)
グループ関数
GROUP BY句
DISTINCTキーワード
疑似列ROWNUMキーワード
式によって定義された列  
ビューで選択されていない実表のNOT NULL列    

※出典 ORACLE MASTER Bronze SQL基礎Ⅰ日本オラクル公式テキスト 改訂版,日本オラクル株式会社オラクルユニバーシティ,株式会社アスキー,2005

CASE

  • CASE 列 WHEN 条件1 THEN 戻り値1
          WHEN 条件2 THEN 戻り値2
          ...
          ELSE デフォルト値
    END

DECODE

  • DECODE (列,
          条件1,戻り値1,
          条件2,戻り値2,
          ...,
          デフォルト値)

NULL

  • NULL + 100 -> NULL
  • NULL は昇順ソート(ASC)では最後、降順ソート(DESC)では最初になる。

SQL の基礎 その2 [exam]

SQL の基礎 その1 の続き。

日付・時刻データ型

  • DATE

  • TIMESTAMP
    小数秒を格納可能

  • TIMESTAMP WITH TIME ZONE
    UTC との時差

  • TIMESTAMP WITH LOCAL TIME ZONE
    データベースのタイムゾーンに変換して日時を格納。格納されたデータを表示するときはユーザセッションのタイムゾーンに従って変換されて表示

  • INTERVAL YEAR TO MONTH
    年月の期間。INTERVAL '123-5' YEAR(3) TO MONTH のように記述する。この場合、123年と5ヶ月間。YEAR(n) は年の桁数。既定は 2。

  • INTERVAL DAY TO SECOND
    日時分秒の期間。INTERVAL '3 1:2:3' DAY TO SECOND のように記述する。この場合、3日と1時間2分3秒間。DAY と SECOND の部分は DAY,HOUR,MINUTE,SECOND のいずれかを指定。TO の左側に指定したい期間の中で一番大きいものを、TO の右側に小さいものを記述。INTERVAL '3 1:2' DAY TO MINUTE なら 3日と1時間2分間となる。

制約

  • NOT NULL は列制約構文でしか定義できない。

関数

  • 日付関数はあるが時刻関数とは呼ばない。
  • TRUNC は TRUNC(列名,[n]) として使う。n: 小数第何位まで表示するか。省略した場合は整数まで表示。
    25.374 -> 2:-1、5:0、3:1、7:2、4:3 。 TRUNC(25.374,-1) = 30

計算

  • 日付に時間を加算するときは 日付+数値/24

集合演算子

  • UNION
    • NULL は重複チェック時に無視される。
    • 既定ではSELECTの第一列で昇順にソートされる。
  • UNION ALL
    • 重複行は削除されない。
    • ソートされない。
    • DISTINCT は利用できない。

SQL の基礎 その1 [exam]

SQL のメモ。ORACLE MASTER Bronze SQL 基礎Ⅰ向け。

自然結合

  • NATURAL JOIN 句を使用する。
  • 同名の列を全て使用した等価結合であり、結合に使用される列の型は同じでなければならない。

using句

  • 結合する列名が表間で同じ場合は USING 句を利用して結合する列名を定義できる。
  • USING 句と NATURAL JOIN 句は同時に使用できない。
  • USING 句に指定した列は表名による修飾が出来ない。

集計関数とNULL

  • COUNT(*) -> NULL もカウントする。
  • COUNT(*) 以外は NULL を無視する。

グループ関数と単一列の選択

  • グループ関数(MAX とか COUNT とか)と単一列を SELECT するときは、単一列を全て GROUP BY 句に指定しなければならない。 
  • GROUP BY に列別名を指定できない。

HAVING句とGROUP BY句の順序

  • HAVING 句と GROUP BY 句はどちらを先に記述しても良い。

私が SQL を書くときは、USING 句や自然結合は使わないし(A.COLUMN1 = B.COLUMN1 とちゃんと書く)、NULL はあらかじめ除外して集計するし、HAVING 句や GROUP BY 句の順序を余り気にしてなかったので...問題を解いてみると案外間違えるわけです。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。