【初心者向け】SELECT文の基本

オラクルデータベースの基本

SELECT文の基本

SELECT文の基本的な構文要素

データベースは、多くの情報(データ)を効率的に管理し、必要な時に簡単に取り出せるようにするシステムです。
データベースの中で最も重要な操作の一つが「SELECT文」です。
これは、データベースから特定の情報を「選択」して取得するためのSQL(Structured Query Language)コマンドです。
本記事では、オラクルデータベースを使ったSELECT文の基本的な使い方を詳しく説明します。

本記事で紹介する表の作成方法(サンプルスキーマのインストール)と、SELECT文で出力した情報を見やすく整形する方法については以下の記事をご覧ください。

SELECT文は、データベースのテーブルから必要なデータを取得するためのSQLコマンドです。
データベース内にはテーブルと呼ばれるデータの集まりがあり、これには行(レコード)と列(カラム)が含まれます。テーブルの中から特定の列や行を取り出したい時にSELECT文を使用します。
まず、表をselectするときの基本的なコマンドは以下です。

select <列名>,<列名>,… from <表名> ;

SQL> select empno,ename,job from emp;

 EMPNO ENAME         JOB
ーーーーー ーーーーーーーーーーー ーーーーーーーーーーー
  7369  SMITH        CLERK
  7499  ALLEN        SALESMAN
  7521  WARD        SALESMAN
  7566  JONES        MANAGER
  7654  MARTIN       SALESMAN
  7698  BLAKE        MANAGER
  7782  CLARK        MANAGER
  7839  KING        PRESIDENT
  7844  TURNER       SALESMAN
  7900  JAMES        CLERK
  7902  FORD        ANALYST

 EMPNO ENAME         JOB
ーーーーー ーーーーーーーーーーー ーーーーーーーーーーー
  7934   MILLER        CLERK

12行が選択されました。

SQL>


また、列名を “*” とすることで、表に構成されているすべての列を出力することができます。

select * from <表名> ;

SQL> select * from salgrade;

  GRADE  LOSAL  HISAL
ーーーーーー ーーーーー ーーーーーー
     1    700     1200
     2    1201     1400
     3    1401     2000
     4    2001     3000
     5    3001     9999

SQL>


WHERE句でデータを絞り込む

テーブル内のすべてのデータが必要なわけではなく、特定の条件を満たすデータだけを取得したい場合、WHERE句を使用します。WHERE句では、取得するデータに対する条件を指定します。

select <列名>,<列名>,… from <表名>
where <条件> ;

インストールしたSCOTTサンプルスキーマの以下EMP表を使用していきます。

SQL> select empno,ename,job from emp;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7369 SMITH        CLERK
  7499 ALLEN        SALESMAN
  7521 WARD        SALESMAN
  7566 JONES        MANAGER
  7654 MARTIN       SALESMAN
  7698 BLAKE        MANAGER
  7782 CLARK        MANAGER
  7839 KING         PRESIDENT
  7844 TURNER       SALESMAN
  7900 JAMES        CLERK
  7902 FORD         ANALYST
  7934 MILLER       CLERK

12行が選択されました。

SQL>


where句を使用して、EMPNOが”7698″の行の情報を絞り込んで出力します。
この場合は、 “where empno=7698” のように指定します。

SQL> select empno,ename,job from emp
2 where empno=7698;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7698 BLAKE       MANAGER

SQL>


また、 where ename=’JONES’ のように文字列を指定して絞り込むことも可能です。
文字列を指定する場合は、 「’(シングルコーテーション)」で囲みます。

SQL> select empno,ename,job from emp
2 where ename=’JONES’;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7566 JONES        MANAGER

SQL>

SQL文は大文字、小文字に関わらず実行可能ですが、 where 句に文字列を指定する場合は大文字、小文字が識別されます。
以下のように表に大文字が格納されている場合は、文字列も大文字にしないと意図した結果を得ることができないため注意が必要です。

SQL> select empno,ename,job from emp
2 where ename=‘JONES’;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7566 JONES        MANAGER

SQL> select empno,ename,job from emp
2 where ename=‘jones’;

レコードが選択されませんでした。 ※小文字で指定した場合は結果が得られない

SQL>



「=」以外の比較演算子を使用することも可能です。
以下が良く使用される比較演算子です。

・= : 等しい
・!= : 等しくない
・> : より大きい
・< : より小さい
・>= : 以上
・<= : 以下

上記の比較演算子を使用して、empnoが7900より大きい行に絞るということも可能です。
この場合は、 where empno>7900 のように指定します。

SQL> select empno,ename,job from emp
2 where empno>7900;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7902 FORD         ANALYST
  7934 MILLER       CLERK

SQL>


AND や OR を使用して複数の条件を使ってデータを絞り込むこともできます。

・AND : すべての条件が満たされる場合のみデータを取得
・OR : いずれかの条件が満たされる場合にデータを取得

例えば JOB が SALESMAN で、 empno が 7600 より小さい行に絞るという場合は、 where job=’SALESMAN’ and empno<7600 のように指定します。

SQL> select empno,ename,job from emp
2 where job=’SALESMAN’ and empno<7600;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7499 ALLEN        SALESMAN
  7521 WARD        SALESMAN

SQL>


[参考]
SQL言語リファレンス – where_clause

order by でデータを並べ替える

取得したデータを特定の順序で並べ替えたい場合、ORDER BY句を使用します。
デフォルトでは昇順(小さい順)で並べ替えますが、降順(大きい順)に並べ替えることも可能です。

・ASC : 昇順(小さい順)※デフォルト
・DESC : 降順(大きい順)

並べ替えを行う場合は以下のような構文を使用します。

order by <列名> [ asc | desc ]

例えばempnoを降順で並べ替える場合は、 order by empno desc のように指定します。

SQL> select empno,ename,job from emp
2 where empno > 7800
3 order by empno desc;

EMPNO  ENAME       JOB
ーーーー ーーーーーーーーーー ーーーーーーーーーーー
  7934 MILLER       CLERK
  7902 FORD         ANALYST
  7900 JAMES        CLERK
  7844 TURNER       SALESMAN
  7839 KING         PRESIDENT

SQL>

※empnoが降順(大きい順)で並べ替えられている。


[参考]
SQL言語リファレンス – order_by_clause

まとめ

SELECT文は、データベースから情報を取得するための最も基本的なSQLコマンドです。しかし、その柔軟性と応用範囲の広さから、非常に強力なツールでもあります。この記事では、SELECT文の基本的な使い方から、WHERE句、ORDER BY句を説明しました。オラクルデータベースを操作する際は、これらを駆使して、効率的にデータを取り出しましょう。

コメント

タイトルとURLをコピーしました