かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

DUAL表について

time 2016/05/10

DUAL表について

ORACLEのDUAL表、何となく使っている方も多いと思います。

本記事では、このDUAL表についての解説と使い道をまとめました。

sponsored link

DUAL表(ダミー表)とは

DUAL表(ダミー表)は、ORACLEのディクショナリ表(データベースに関する情報を提供する読取り専用の表)の一つです。

DUAL表は、DUMMYというカラム名の項目を一つだけ持ちます。このDUMMY項目は、VARCHAR2(1)で定義されており、データは’X’の値で1レコードだけ保持しています。

SYSユーザーにテーブル定義されていますが、全てのユーザーでDUALという名前でアクセスすることができます。(パブリックシノニムを利用)

使い道

システム日付・時間の取得

ユーザーが作成したテーブルのデータを使用しない関数を使用する際に使用します。

例えば、SYSDATEやSYSTIMESTAMPで、システム日付・時間の取得したい場合に使用します。

接続ユーザー名の取得

接続ユーザー名の取得で使用します。

順序(シーケンス)から値の取得

順序(シーケンス)から値の取得で使用します。

動作テスト

標準関数やユーザー定義関数の動作テスト等で使用します。

例えば、文字列を結合するCONCAT関数の動作を確かめたい場合、以下のように使用します。

他にも計算を行うことも出来ます。

実際にはデータファイルへのアクセスはない

Oracle10gより、実際にはDUAL表のデータが格納されているデータファイルへのアクセスは行われないように、最適化されています。
常にメモリに展開されているイメージです。

歴史

もともとは2行のデータがあり、別の票と結合することで直積で1行が2行に増やすために作られたようです。
そのためDUAL(=2つの、2重の)という名前が付いています。

それがいつのまにか、1行のデータになったようです。

まとめ

ORACLEのDUAL表について、そもそもというところから使い道まで細かく見てきました。

何となく使っている方も多いと思いますが、意外と色々な使い道があることが分かるかと思います。
特に簡易的な動作確認を行いたい時に、sqlplusから手軽に行えるので便利ですよ。

sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link