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

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

今回はORACLE MASTER Silver SQLの試験トピック「データの制限とソート – SQL文で返される行の制限 -」に関連する問題をご紹介いたします。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

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

今回はSELECT文でデータを取得する際にWHERE句を使用してデータを制限する方法を学習していきます。

まずは問題を確認していきましょう。

(解説)

それでは問題の解説をしていきます。今回の問題の着目点はWHERE句に指定してあるLIKE演算子になります。データの絞り込みを行う際、指定する条件にワイルドカードを使用できる点が特徴ですね。ワイルドカードとは「%」や「_」の記号のことでそれぞれの意味合いは以下になります。

検索する値が正確に分からない場合でもLIKE演算子のワイルドカードを使用することで文字パターンに一致する行を選択することができるというわけです。ワイルドカードは単体で使用することはもちろん可能ですが、組み合わせて使用することも可能です。例えば「名前の2番目の文字が o である従業員の絞り込み」というような条件があった場合は以下のように指定すれば条件を満たします。

さて、今回の問題文の絞り込み条件の1つとして「LAST_NAMEが少なくとも3文字以上で、大文字のKで始まる」とありますので、まずはLIKE演算子を使った絞り込みが正しく指定されているか(last_name LIKE ‘K% ‘)を確認していきます。

選択肢1はLIKE演算子の使い方が間違っていますね。LIKE = ‘K%’ と指定していますがイコールが不要です。

選択肢2はLIKE演算子の使い方は間違っていませんが LIKE ‘K_’ としていますので先頭が大文字のKで名前が2文字の人のみを絞り込んでしまいます。条件に合ってないので誤りです。

選択肢3と選択肢4はLIKE演算子を使用していないためワイルドカード扱いがされず、文字リテラルとしての’K%’ や ‘K_’ に一致するものを検索してしまいます。誤りです。

残った選択肢5と選択肢6はLIKE演算子の使い方や指定については問題ありません。あとは残りの絞り込み指定にある「or」と「and」の部分に着目しますが、問題文に記載があったもう1つの条件は「かつ、SALARYが10000以下」となっているのでそれを満たすのは「and」条件になります。選択肢5は誤りです。

正解は6になります。

LIKE演算子の使い方について、ステップアップするためにもう1つ構文を確認しておきましょう。

LIKE演算子はワイルドカードを使用した条件値を検索することができると説明してきましたが、もしワイルドカード文字そのものを検索したい場合はどのように指定すればよいでしょうか。

以下の例をご覧ください。

「W_」から始まる名前の方を検索するSQL文になりますが、アンダースコアをそのまま使用してしまうとワイルドカードの任意の1文字として扱われてしまいます。このような場合にはESCAPE識別子でエスケープとして使用する文字(今回は¥)を指定し、その指定したエスケープ文字の後にアンダースコアを入力することで「これは文字リテラルとして解釈しろ」とOracle DBに認識させることができます。ESCAPE識別子の使い方についても合わせて覚えておきましょう。

今回の問題に関するSQL文が実行できるように定義のサンプルを乗せておきます。

— table 作成 —
drop table emp_info;
create table emp_info(
        employee_id     number(6)       primary key,
        first_name        varchar2(20),
        last_name         varchar2(25)    not null,
        salary                number(20)
);

— sample データ —
insert into emp_info values(100, ‘Steven’, ‘King’, 12000);
insert into emp_info values(101, ‘Neena’, ‘Kochhar’, 10000);
insert into emp_info values(120, ‘Matthew’, ‘Weiss’, 8000);
insert into emp_info values(126, ‘Irene’, ‘Mikkilineni’, 6000);
insert into emp_info values(127, ‘James’, ‘Landry’, 5000);
insert into emp_info values(130, ‘Janette’, ‘King’, 9000);
insert into emp_info values(135, ‘Winston’, ‘W_Taylor’, 7000);
commit;

LIKE演算子は非常に使い勝手のよい演算子でORACLE MASTER Silver SQLの試験対策のみならず様々な場面で使用することが出てくるかと思います。SQL文が実行できるサンプル定義も載せておきましたので何度も実行してみて構文を頭に叩き込んでおきましょう。

それでは今回の講義はこれまでとします。お疲れ様でした!

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

ORACLE MASTER Silver SQL 2019 のご紹介

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

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

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

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

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