連載
» 2008年04月11日 00時00分 公開

SQLのSELECT文を使用したデータの取得間違いやすいポイントを追え! Bronze SQL基礎I(2)(2/2 ページ)

[ゴールデンフォレスト株式会社,@IT]
前のページへ 1|2       

算術式とNULL値

例題2

次のデータと要件を確認してください。

SQL> select last_name,salary,commission_pct from employees;
LAST_NAME                SALARY COMMISSION_PCT
-------------------- ---------- --------------
Whalen                     4400
Hartstein                 13000
Fay                        6000
Higgins                   12000

次のSQL文のうち、計算結果が戻ってこないものを1つ選択してください。

a.select last_name,salary*12 from employees;

b.select 50+50 from dual;

c.select last_name,salary*commission_pct from employees;

d.select last_name,salary*commission_pct from employees

  where commission_pct is not null;

e.select last_name,salary*commission_pct from employees

  where commission_pct =not null;

例題の範囲をおさらい

・算術式

 SQL文では、算術演算子を使用して、数値および日付データを計算することができます。

演算子 説明
+ 加算
- 減算
* 乗算
/ 除算

 カッコを使用し、算術式の優先順位を変更することも可能です。

・NULL値

 NULLとは使用不可、未割り当て、不明、適用不能などを表す値であり、ゼロや空白のスペースとは異なります。 NULL値が含まれる算術式の結果は、すべてNULLとなります。

正解

c

解説

選択肢a:通常の算術式を使ったSQL文です。計算結果は下記のように戻ります。

SQL> select last_name,salary*12 from employees;
LAST_NAME             SALARY*12
-------------------- ----------
Whalen                    52800
Hartstein                156000
Fay                       72000
Higgins                  144000

選択肢b:DUAL表とはダミー表であり、算術式を使って計算結果を出すことが可能です。計算結果は下記のように戻ります。

SQL> desc dual
名前                                 NULL?    型
------------------------------------ -------- -----------------
DUMMY                                         VARCHAR2(1)
SQL> select 50+50 from dual;
     50+50
----------
       100

選択肢c:commission_pct列にはNULL値が存在します。NULL値を計算するとNULLになるため、値は戻ってきません。

SQL> select last_name,salary*commission_pct from employees;
LAST_NAME            SALARY*COMMISSION_PCT
-------------------- ---------------------
Whalen
Hartstein
Fay
Higgins

選択肢d:WHERE句に「is not null」と設定することで、NULL値を除く値を計算した結果が戻ってきます。

SQL> select last_name,salary*commission_pct from employees
  2  where commission_pct is not null;
LAST_NAME            SALARY*COMMISSION_PCT
-------------------- ---------------------
Zlotkey                               2100
Abel                                  3300
Taylor                                1720
Grant                                 1050

選択肢e:WHERE句に「= not null」を設定することはできず、エラーとなります。

SQL> select last_name,salary*commission_pct from employees
  2  where commission_pct=not null;
where commission_pct=not null
                     *
行2でエラーが発生しました。:
ORA-00936: 式がありません。

 問題文では「計算結果が戻ってこない」SQL文を尋ねています。こちらはもともと正常なSQL文ではないため、正解とはなりません。

 よって、計算結果が戻ってこないSQL文はcです。

まとめ

 次の内容をチェックしましょう。

  • SQL文の基本構文
  • 算術式の記載方法と優先順位
  • NULL値の扱い方

 今回の範囲も第1回「リレーショナルデータベースの基本とSQL*PLUS」と同じく、正確に覚えておけば、点数が取れる内容です。確実に点が取れるようにしておきましょう。

 次回は、データの制限およびソートについて、間違いやすい点にポイントを絞って説明します。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。