ダミーテーブルとは
ダミーテーブルとは、テーブルを作らずとも、最初から存在する1列しかない特別な表のことです。表を使用せずに値を返す演算(SYSDATEなど)など、表の参照を必要とするが表の内容は重要でないSQLを発行するときに使用します。
OracleのDUAL表
OracleのダミーテーブルはDUAL表と言われています。
DUAL表はOracle Databaseによって自動的に作成される表で、SYSユーザーのスキーマにあります。すべてのユーザーがDUALという名前でアクセスすることができます。DUAL表はVARCHAR2(1)のDUMMY列を持ち、X値を持つ行があります。
DUAL表の使い方
日付を取得するSQLを作る場合、SYSDATE関数を使用します。この時に使用する、FROM句のテーブル名に意味はないので、DUAL表を使用します。
1 2 3 4 5 |
#日付をDUAL表から取得する SELECT SYSDATE FROM DUAL; #結果 19-12-16 |
また、計算等のテーブルを使用しないSQLにもDUAL表を使用します。
1 2 3 4 5 |
#計算結果をDUAL表から取得する SELECT 1+1 FROM DUAL; #結果 2 |
DB2のSYSIBM.SYSDUMMY1表
DB2のダミーテーブルはSYSIBM.SYSDUMMY1表と言われています。
SYSIBM.SYSDUMMY1表はカタログ表(表スペース、表、列、索引、特権などを記述したもの)の一つです。
SYSIBM.SYSDUMMY1表はCHAR(1)のIBMREQD列を持ち、 Y値を持つ行があります。
1 2 3 4 5 6 7 |
SELECT * FROM SYSIBM.SYSDUMMY1; IBMREQD ------- Y 1 レコードが選択されました。 |
SYSIBM.SYSDUMMY1表の使い方
日時を取得するSQLを作る場合、SYSDATE関数を使用します。この時に使用する、FROM句のテーブル名に意味はないので、SYSIBM.SYSDUMMY1表を使用します。
1 2 3 4 5 |
#日時をSYSIBM.SYSDUMMY1表から取得する SELECT SYSDATE FROM SYSIBM.SYSDUMMY1; #結果 2019-12-16-12.30.00 |
また、VALUESを使用して以下のようにも書けます。
1 2 3 4 5 |
#日時をVALUESを使用して取得する VALUES SYSDATE; #結果 2019-12-16-12.30.00 |
他のDBMSの場合
他のDBMS(PostgreSQL,SQLite,Microsoft SQL Serverなど)にはダミーテーブルが存在しません。また、FROM句が省略できますので以下のように記述できます。
1 2 |
#例 SQL Serverで日付を取得する SELECT GETDATE(); |
まとめ
ダミーテーブルとは、表の参照を必要とするが表の内容は重要でないSQLを発行するときに使用するテーブルです。ぜひ使用してみてください。
- OracleのDUAL表
- DB2のSYSIBM.SYSDUMMY1表