■例題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です。
■まとめ
次の内容をチェックしましょう。
今回の範囲も第1回「リレーショナルデータベースの基本とSQL*PLUS」と同じく、正確に覚えておけば、点数が取れる内容です。確実に点が取れるようにしておきましょう。
次回は、データの制限およびソートについて、間違いやすい点にポイントを絞って説明します。
Copyright © ITmedia, Inc. All Rights Reserved.