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