Oracle University 講師が ORACLE MASTER 取得を目指している方に向けて試験トピックを解説するブログ連載講座。「ORACLE MASTER Silver SQL 2019」資格取得に向けた試験トピックについて解説します。

————————————————-

今回はORACLE MASTER Silver SQLの試験トピック「SQL SELECT文を使用したデータの取得 – 列別名の使用 -」に関連する問題をご紹介いたします。ORACLE MASTER Silver SQL(Exam Number: 1Z0-071-JPN)の詳細につきましては以下URLをご参考ください。

Oracle Database SQL Exam Number: 1Z0-071

URL: https://education.oracle.com/ja/oracle-database-sql/pexam_1Z0-071

————————————————-

今回から3回にわたってSELECT文の「列別名」、「DUAL表の使用」、「連結演算子、代替引用符演算子の使用」を取り扱っていきたいと思います。今回は「列別名」を学習していきます。

  • 第8回 列別名 (今回の講義内容)
  • 第9回 DUAL表の使用
  • 第10回 連結演算子、代替引用符演算子の使用

では問題を見ていきましょう。

(解説)

皆さんSELECT文の基本構文は大丈夫でしょうか?念のために基本構文も載せておきましょう。

今回はSELECT句の列名を任意の別の名前として表示することができる列別名に関する問題です。列別名を使用することで列見出しを任意の分かりやすい文字列に変更できるという利点があります。簡単なSQL文で確認しておきます。(SQL文を実行するためのテーブル定義とサンプルデータは最後に記載しておきます。)

列別名を使用する際の構文も確認していきましょう。

上記の構文に合わせて必ず押さえておくべきポイントがあります。列別名自体にスペースがある場合や大文字と小文字を区別したい場合、特殊文字、数字を先頭に入れたい場合や予約語を列別名に入れたい場合には2重引用符を使用する必要があるという点です。

ここまで確認ができれば今回の問題の正しい選択肢を選ぶことが可能なのでそれぞれを見ていきましょう。

選択肢1のSQL文は正しく実行することができます。注目すべき点は列別名のEMP-IDに含まれているハイフン(-) です。これは特殊文字になるため使用する場合は2重引用符で囲む必要があります。

選択肢2はEMP-IDを2重引用符で囲っていないのでエラーになります。

選択肢3は列別名に1重引用符を使用しているため使い方が間違っていますね。エラーになり実行できません。

選択肢4は列別名に「DATE」という予約語を使用しています。CHARやORDERなど、予約語を使用する場合は2重引用符が必要となるため誤りですね。

選択肢5も同じで予約語の「DATE」を使ってるので誤りです。

選択肢6は正しい内容になります。特殊文字、予約語ともに列別名で指定していますが2重引用符を使用しています。

正解は 1、6になります。

今回の講義内で使用した定義のサンプルと、選択肢のSQL文を実際に実行した結果も乗せておきます。皆さんも動作確認を是非してみてくださいね。

— sample テーブル作成 —
drop table employees;
create table employees(
        employee_id        number(6)        primary key,
        first_name           varchar2(20),
        last_name            varchar2(25)    not null,
        hire_date             date                  not null,
        job_id                  varchar2(10)     not null,
        salary                  number(8,2),
        manager_id          number(6),
        department_id      number(4)
);

— sample データ挿入 —
insert into employees values(100, ‘Steven’, ‘King’, ’03-06-17′, ‘AD_PRES’, 27000, NULL, 90);
insert into employees values(101, ‘Neena’, ‘Kochhar’, ’05-09-21′, ‘AD_PRES’, 17000, 100, 90);
insert into employees values(120, ‘Matthew’, ‘Weiss’, ’04-07-18′, ‘ST_MAN’, 8000, 100, 50);
insert into employees values(126, ‘Irene’, ‘Mikkilineni’, ’06-09-28′, ‘ST_CLERK’, 2700, 120, 50);
insert into employees values(127, ‘James’, ‘Landry’, ’07-01-14′, ‘ST_CLERK’, 2400, 120, 50);
insert into employees values(128, ‘Steven’, ‘Markle’, ’08-03-08′, ‘ST_CLERK’, 2200, 120, 50);
insert into employees values(145, ‘John’, ‘Russell’, ’04-10-01′, ‘SA_MAN’, 14000, 100, 80);
insert into employees values(146, ‘Karen’, ‘Partners’, ’05-01-05′, ‘SA_MAN’, 13500, 100, 80);
insert into employees values(154, ‘Nanette’, ‘Cambrault’, ’06-12-09′, ‘SA_REP’, 7500, 145, 80);
insert into employees values(155, ‘Oliver’, ‘Tuvault’, ’07-11-23′, ‘SA_REP’, 7000, 145, 80);
insert into employees values(156, ‘Janette’, ‘King’, ’04-01-30′, ‘SA_REP’, 10000, 146, 80);
insert into employees values(205, ‘Shelley’, ‘Higgins’, ’02-06-07′, ‘AC_MGR’, 12000, 101, 110);
commit;

 

エラーメッセージを出してみると分かりますが、構文エラーの元となっている問題の箇所に「*」が示されていて気が付きやすくなっています。何か問題が発生した場合はエラーメッセージ内容をしっかりと確認するという癖も合わせて身に着けていきましょう。

列別名を使うことで任意の見出しに変更できるので列データがどのような内容であるか分かりやすくすることができます。構文自体もそれほど難しいものではありませんのでORACLE MASTERの試験に出たら「ラッキー」と思って点数が稼げるように学習しておきましょう。次回はOracle Databaseに実装されるDUAL表について確認していきます。

ではまた次回に会いましょう!

————————————————-

ORACLE MASTER Silver SQL 2019 のご紹介

ORACLE MASTER Silver SQL 2019 試験記事トピック一覧

————————————————-

その他の ORACLE MASTER 試験トピック解説講座シリーズ:

【Oracle University講師によるORACLE MASTER Gold DBA 2019 試験トピック解説講座】トピック一覧

————————————————-