PREPARATION
受験対策

Silverの例題解説
「S3.1 SQL コマンド(データ型)」

今回は、Silverの「S3 開発/SQL - S3.1 SQL コマンド(データ型)」からの出題です。

例題

3.78

PostgreSQLのデータ型の説明として適切なものを1つ選びなさい。

  1. INTEGERは10桁までの整数を扱うことができるので、NUMERIC(10)と宣言しても同じである。
  2. REALは6桁精度の小数を扱うことができるので、NUMERIC(10, 6)と宣言しても同じである。
  3. DOUBLE PRECISIONは15桁精度の小数を扱うことができるので、NUMERIC(10, 15)と宣言しても同じである。
  4. INTEGERの演算はNUMERICより高速なので、値が必ず整数になるなら、NUMERICではなくINTEGERを使うべきである。
  5. REAL型の0.1とNUMERIC型の0.1について同値比較(a=bという形式の比較)をしたとき、その結果がtrueになるとは期待できない。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2017年9月4日

解答と解説

PostgreSQLのINTEGER型は32ビットの整数で、範囲は-2147483648から+2147483647までです。一方NUMERIC(10)は最大10桁ですが、範囲は-9999999999から+9999999999までなので、INTEGER型よりも幅が広いですね。INTEGERはCPUのネイティブの演算で計算できるので高速なのに対し、NUMERICは10進演算を行うため低速です。そのため、値の範囲が必ずINTEGERの範囲に収まるのであればINTEGER型とする方が望ましいことが多いですが、非常に大きな整数になるかもしれない場合など、INTEGER型の範囲に収まらないときはNUMERIC型にする必要があります。

REALは単精度の浮動小数点数で、精度は約6桁、DOUBLE PRECISIONは倍精度の浮動小数点数で精度は15桁ですが、内部的には2進数で表現されているため、10進数であるNUMERIC型とは異なります。特に、10進演算をしたときにREALやDOUBLE PRECISIONでは誤差を生じることに気をつける必要があります。例えば、小数の0.1は2進数で正確に表現することができないため、REAL型の0.1とNUMERIC型の0.1を比較したとき、これらは等しくなりません。数値計算を高速に実行する場合はREAL/DOUBLE PRECISIONを使うのが良いでしょうが、金額の計算をする場合はNUMERICを使うのが望ましいことが多いです。

選択肢AからDまで、いずれも前半部分に書いてあることは正しいのですが、後半部分は誤りです。

従って、正解はEです。

今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。

※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策について

受験の学習をサポートする情報や対策に役立つ情報をご紹介

サンプル問題/例題解説

例題 のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関のご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

LPI-Japan
Platinum Sponsors