Oracle Database(以下Oracle DB)は世界でもトップクラスのシェアを誇るDBです。
今回は、そのOracle DBでのSELECT文についてご紹介します。
SQL文の知識は他のDBでも使えることが多いです。
しっかりと身につけていきましょう!
SQL文は プログラミング言語と比べて変化がゆっくりやねん!
一度身につけると長い間役立つから、できるようになっていこな!
記事の信頼性:未経験からIT企業の受託企業へ転職に成功。現役プログラマーの「しう」がOracle DBについて書いています。
👇SQL文の勉強をするなら、この本がおすすめ!
SELECT文
SELECT文についての基本を見てきましょう!
Oracle DBではSELECT文について知っておくべきことがあります。
また、他のSQL(MySQLなど)でもSELECT文は似ている場合が多いです。
一度身につけると、他のDBの学習時にも役に立ちます!
- SELECT文の構文
- 特定の列を表示
- すべての列の表示
- 重複する行を1行だけ表示
の順番にご紹介します。
SELECT文の構文
SELECT文の構文は次のようになります!
SELECT <列名1> (、<列名2>、・・・) FROM <表名>
SELECT文の基本となる形です。
暗記してしまうくらいでちょうどいいです。
今回は、次のようなテーブルで具体例を見ていきます。
特定の列を表示
先ほどの構文を使って、特定の列名を表示してみましょう!
例:SELECT member_name FROM teamPractice;
SELECT文の表示結果は次のようになります。
すべての列の表示
Oracle DBですべての列を表示したい場合は、列名の部分を*(アスタリスク)にすることで表示できます!
例:SELECT * FROM teamPractice;
SELECT文の表示結果は次のようになります。
重複する行を1行だけ表示
Oracle DBで列を表示するときに同じ名前のものは重複をさせずに表示することもできます!
SELECTの直後にDISTINCTを利用することで重複を除いて表示することができます。
例:SELECT DISTINCT member_name FROM teamPractice;
SELECT文の表示結果は次のようになります。
すべての列を表示した場合と比べると「member_name = ‘佐藤’」に当てはまる行が一つ減ってるね。
SELECT文での条件検索【Oracle DB】
ここからは、Oracle DBの条件検索についてご紹介します!
SELECT文では、WHERE を使うことである条件を満たす行だけを取り出すことができます。
公式:SELECT <列名> FROM <表名> WHERE <条件式>
- 等価条件(=)
- 非等価条件(!=)
- 比較条件
- IN条件(複数から検索)
- BETWEEN条件
- LIKE条件(あいまい検索)
- NULL条件
の順にご紹介します。
いっぱいあって覚えるのが難しそうだね。
最初から全部覚える必要はないで!
使っていくうちに覚えるけど、LIKEとIN条件の使い方は抑えておくと便利やで!
等価条件(=)
Oracle DBで列値と指定した値が等しい行が表示されます。
実際に使うときは次のような方法になります。
例:SELECT * FROM teamPractice WHERE score = 75;
今回はscoreが75に当てはまる行が表示されます。
ちなみに、文字列に対してもWHEREは使えます。
注意点としては、文字列の場合はシングルクォーテーション(「’」)で囲むようにしましょう
例:SELECT * FROM teamPractice WHERE member_name = ‘山本’;
Oracle DBのWHERE句では、アルファベットの大文字と小文字は区別される点にも気を付けましょう。
非等価条件(!=)
Oracle DBで列値と指定した値が等しくない行が表示されます。
例:SELECT * FROM teamPractice WHERE score != 80;
SELECT文の表示結果は次のようになります。
「!=」以外にも「^=」、「<>」という書き方もあります。
実務では、「!=」を使うことが多いで。
比較条件
Oracle DBで比較条件は列値と指定した値の大小関係を比較するための条件です。
当てはまる行が表示されます。
比較条件には次のようなものがあります。
- >
- >=
- <
- <=
例:SELECT * FROM teamPractice WHERE score > 70;
SELECT文の表示結果は次のようになります。
IN条件(複数から検索)
Oracle DBでIN条件は「リストアップした複数の値のいずれかに等しい」行が表示されます。
IN条件は次のように利用します。
例:SELECT * FROM teamPractice WHERE score IN (60, 80);
SELECT文の表示結果は次のようになります。
この場合、scoreが60もしくは80のどちらかに当てはまる行を表示します。
IN条件は副問い合わせ(サブクエリ)と一緒に使うと便利です。
必ず押さえておきましょう!
BETWEEN条件
Oracle DBでBETWEEN条件は「列値が上限値と下限値の範囲に含まれる」行が表示されます。
BETWEEN条件は次のように利用します。
例:SELECT * FROM teamPractice WHERE score BETWEEN 60 AND 80;
SELECT文の表示結果は次のようになります。
また、BETWEENを使わずに、AND条件で同じ検索もできます。
例2: SELECT * FROM teamPractice WHERE 60 <= score AND score <= 80;
注意:同じ表現にはなりますが、例2より例1の方が負荷が少なくて済みます。
できるだけ例1の方法でBETWEEN条件は利用しましょう!
LIKE条件(あいまい検索)
Oracle DBでLIKE条件は列値が指定したパターン文字列にマッチした行を表示します。
LIKE条件では次の2つの特殊文字を使用できます。
特殊文字 | |
---|---|
% (パーセント) | 任意の文字列(空文字を含む) |
_ (アンダースコア) | 任意の1文字 |
具体的には次のようにLIKE条件を利用します。
前方一致のあいまい検索
例:SELECT member_name,role FROM teamPractice WHERE role LIKE 'c%';
SELECT文の表示結果は次のようになります。
後方一致のあいまい検索
例:SELECT member_name,role FROM teamPractice WHERE role LIKE '%r';
文字列の2文字目に「i」があるメンバー
例:SELECT member_name,role FROM teamPractice WHERE role LIKE '_i%';
NULL条件
Oracle DBでNULLである条件を検索する場合は、NULL専用の検索条件を利用します。
NULL条件は次のように利用します。
例:SELECT * FROM teamPractice WHERE role IS NULL;
SELECT文の表示結果は次のようになります。
一方、NULLでないデータを検索する場合はNOT NULL条件を利用します。
例:SELECT * FROM teamPractice WHERE role IS NOT NULL;
👇Oracle DBのSQL文にもっと詳しくなりたい方はこちら!
まとめ
いかがでしたか?
今回は、Oracle DBのSELECT文について
- SELECT文
- 条件検索【Oracle DB】
の順番でご紹介しました!
SELECT文はOracle DB以外でも利用します。
ぜひ、身に付けてみてくださいね!
☟あわせて読みたい 「しう」のオススメブログ
コメント