てぃぐれのプログラマwiki

ワクワクに従う

Oracle

ファンクションの使い方 NULL系【ORACLE】

■NVL(A,B) AがnullならBを ■NVL2(A,B,C) Aがnullではない場合、Bを、nullならCを ■COALEACE(A,B,C,D,E) AがnullではないならAを、そうでなければBを、BがnullならCを... ■NULLIF(A,B) A == BならNULLを、そうでなければAを

集計関数 問合せできない?できる? 【ORACLE】

経緯 集計関数の問合せできるできないルールがちょっと混乱することがあるので、解いて行きたい。 1,集計関数でネストしている場合 SELECT MIN(AVG(sal)) FROM emp; employees の salary の 平均avg の 最小値min が欲しい。一見良さそうであるが、group by…

知らなかった副問合せ【ORACLE】

ANY ANYはなかなか使わないけど、selectしたもののうち一つでも条件に合えば返す X > ANY(select Y from Z) → ZのYのうちのひとつを上回ればtrue → X > select MIN(Y) from Z で良さそう 速さはANYの方が速そう ALL select したもののうち全ての条件に合えば…

CTASとUNUSED【ORACLE】

CTAS CTAS create tabls as select selectを使い他のテーブルからデータと構造をコピーしてテーブルを作ることができる。 移される制約はnot nullだけである。 where句を指定することでコピーしたいデータや、件数を0にするような条件句でテーブルだけ作ると…

シーケンスとシノニム【ORACLE】

知らなかったシーケンスの使い方 シーケンスなんてORACLEを使ってる人からすれば、なんてことはない、連番を採番するオブジェクトだ。SQL SERVERのidentityのような動きをする。 しかし、別々のテーブルの主キーに使い、IDを被らせないという方法ができるの…

知らなかった外部制約の仕様【ORACLE】

制約 alter table [table name] disable constraint [constraint name] cascade; → 特定の制約をdisableにする場合、その制約に関連する他の制約も外す on delete cascade →削除された行を参照している子表の行も併せて削除する on delete set null →削除さ…

Viewの仕様【Oralce】

WITH CHECK OPTION ・UPDATEとINSERTの時にVIEWのselect文のwhere句の条件を満たしていない場合、エラーとなる。 ・DELETEはエラーにならない。(DELETE後にデータは残らないからチェックできない) FORCE ・参照するオブジェクトがない場合でもとにかくVIEWを…

リスナーを起動していない場合【ORACLE】

リスナーが起動していない場合 リスナーが起動後 LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 64-bit Windows: Vers…

抽出結果を見やすくする SQL Developer Tips1 【ORACLE】

抽出結果を見やすくする ツール > プリファレンス データベース > ユーティリティ > ワークシート 「市松模様またはしま模様のグリッド」にチェックをする。 すると問合せ結果がシマシマになって、見やすくなる。

内部結合の非等価結合とクロス結合【ORACLE】

非等価結合とは SQLにおいてテーブルをjoinする際の結合条件が等価ではないことである。 on句でbetweenや不等号が使われる。 勘違いしやすいところ これは非等価式 SELECT e.employee_id,h.employee_id, e.first_name, e.last_name, e.hire_date,h.start_dat…

【ORACLE】 無料で勉強用に利用

勉強用に無料で使用したい そんな願望は多い。 ということでORACLEさんが無料で用意してくれている。 Database Software Downloads | Oracle 日本 サーバーはAzureで Dockerに入れて行う方法やvirtualboxを使った方法など、先人たちが紹介してくれている。 …

ゴミ箱に同じ名前の表がある場合のBEFORE DROP句 ORACLE

フラッシュバックドロップとは DROPテーブルしてしまった後に、テーブルを元に戻したい場合に使用する。 ゴミ箱に同じ名前の表がある場合 では、DROPテーブルで同じ名前のテーブルを複数回行った場合、フラッシュバックドロップを行った時、どのテーブルが戻…

オーバーヘッダ ORACLE

経緯 ORACLEマスターの勉強をしているとたまに出てくる単語。そのほかではあまり見かけない。この横文字が突然出てくると、最初は「うへ」ってなった。 うへってならないように、留めておく。 意味 余計なこと・もの。冗長。 使われ方 本番環境の調査のため…

フラッシュバックとUNDO ORACLE

フラッシュバックドロップ DROPしたテーブルを戻す ∟FLASHBACK TABLE <表名> TO BEFORE DROP; 仕様 ・DROPしたテーブルは同じ表領域で論理削除されているので、元に戻す ・索引も元に戻る ・PURGEオプションで DROPしている場合は元に戻すことはできない ・C…

NO ARCHIVELOGとARCHIVELOGを ORACLE

ACHIVELOGモード 直前までのデータをメディアリカバリできる。 why →オープンの状態でREDOログをアーカイブしているから。 how →ARCnプロセスがログスイッチのタイミングでREDOログファイルの新たなグループを上書きする前に、アーカイブログファイルとして…

AWRとADDRをざっくり ORACLE

AWR(Automatic Workload Repository) 自動ワークロードリポジトリ ADDR(分析)のための統計情報とワークロード(処理負荷)情報を自動的に収集してくれる。 仕様 ・デフォルトで60分間隔でAWRスナップショットが実行される ・MMONによって実行される ・SYSAUX表…

ORACLE 結合方法

3つの結合方法 ORACLEには結合方法が3つあるので軽く説明できるようになりたい。 ネスティッドループ結合 索引を使用するときはこれ。 索引を使用しているということはB+Treeのデータ構造となるため、二分探索になるから速い。O(logn)??いや、索引がきちんと…

動的パラメータにSPFILE=BOTHつけて変更したら

ORACLEデータベースで初期化パラメータを変更したい!っていう時、そのパラメータが動的か静的かによって変更の仕方が異なりますよね。 例えば、動的初期化パラメータの場合、単純に下記のようにSQLを叩くと変更が即座に適用されます。 ALTER SYSTEM SET PGA_…

ORACLE 勝手に作られる索引

ORACLEデータベースには勝手とは言わないまでも、自動で作成される索引があるのは知っていましたか?。ちなみに19cのAutomatic indexingの話ではありません。それはテーブル制約である、主キーもしく一意制約を付けると自動的に索引が作成されるのです。実際…