Oracle Database

公式ドキュメント

SQL

ゴミ箱を空にする

PURGE RECYCLEBIN;

テーブルの一覧を参照する

SELECT * FROM CAT;

テーブルのレイアウト参照

DESC T_HOGE;

日付の計算

 SELECT
   SYSDATE,
   ADD_MONTHS(SYSDATE,(5*12)),    -- 年を足す(5年後)
   ADD_MONTHS(SYSDATE,5),         -- 月を足す(5月後)
   SYSDATE + 5,                   -- 日を足す(5日後)←これが基準みたい
   SYSDATE + 5 * (1/24),          -- 時間を足す(5時間後)
   SYSDATE + 5 * (1/(24*60)),     -- 分を足す(5分後)
   SYSDATE + 5 * (1/(24*60*60))   -- 秒を足す(5秒後)
 FROM DUAL

日付の書式

SELECT
    sysdate,
    TO_CHAR(sysdate,'YYYY/MM/DD(DY) AM HH12:MI:SS'),
    TO_CHAR(sysdate,'YY/MM/DD(DAY) HH24:MI:SS'),
    TO_CHAR(sysdate,'YYYY/MONTH/DD(DAY) HH24:MI:SS')
FROM DUAL

SELECT FOR UPDATE

SELECT FOR UPDATEを行うときは
テーブル全体のレコードが対象にならないようにする。
→ユニークのレコードが対象になるように
そうしないとREDOログが膨大なサイズになって大変なことになる。

SELECT * FROM T_HOGE FOR UPDATE --これではダメ
SELECT * FROM T_HOGE WHERE COL_PIYO = 'pipi'; FOR UPDATE --これならOK

view一覧を取得する

select
    view_name
    ,text
from user_views
order by 1
;

user_views、all_viewsのテーブルレイアウトはこちら

トランザクションの終了タイミング

  1. COMMITが明示的に発行されたとき(確定して終了)
  2. ROLLBACKが明示的に発行されたとき(取り消して終了)
  3. DDL文が発行されたとき(確定して終了)
  4. Oracleデータベースから接続を正常終了したとき(確定して終了)
  5. ユーザープロセスが異常終了したとき(取り消して終了)

PL/SQL

基本

  1. DECLARE、EXCEPTION、BEGIN~END(必須)から構成される
  2. 戻り値のあるファンクション、戻り値のないプロシージャを作成できる
  3. JavaプロシージャをPL/SQLから呼び出せる

ループ

LOOP
処理;
[EXIT WHEN 条件;]
END LOOP;

※「EXIT WHEN 条件;」がなければ無限ループ。

WHILE 条件 LOOP
処理;
[EXIT WHEN 条件;]
END LOOP;

※条件が真であればループ。

FOR i IN 1..10 LOOP
処理;
[EXIT WHEN 条件;]
END LOOP;

※1から10までを増算しながらループ。
※iはカウンタ

FOR i IN REVERSE 1..10 LOOP
処理;
[EXIT WHEN 条件;]
END LOOP;

※10から1までを減算しながらループ。
※iはカウンタ

※「EXIT WHEN 条件;」は、条件がなければ
「EXIT;」とも書ける