■例題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.