2013/08/20

08-03.データー操作語(DML)【SELECT文】

■SELECT
 -データーベースに保存されているデーターの検索に使用する。

■SELECT文法
SELECT [DISTINCT] {*, column [alias],...}
FROM table_name
[WHERE condition]
[ORDER BY {column, expression} [ASC | DESC]];


-DISTINCT:重複している行を削除するオプション
-*:テーブルの全てのcolumnを出力
-alias:該当columnについて別名前を付与時に使用
-table_name:対象のテーブル名
-WHERE:条件を加えて行を検索
-ORDER BY:検索結果の整列オプション



■SQL文、作成方法
 -SQL文は大、小文字を区別しない。
 -SLQ文は1行または複数行に入力できる。
 -一般的にキーワードは大文字で入力する、
  他の全ての単語(テーブル名、列名…)は小文字で入力(お勧め)
 -SQL文の最後には”;”を記載しコマンドの終わりを表す


--empnoとenameを「社番」と「名前」のコラム別名(alias)で出力する
--alias使用時にはasキーワードは省略可能

SQL> SELECT empno 社番, ename 名前
  2  FROM emp
  3  WHERE deptno = 10;

      社番 名前
---------- ----------
      7782 CLARK
      7839 KING
      7934 MILLER

SQL>


■WHERE句に使用できるSELECT演算子


■IN、NOT IN演算子
 -IN演算子

--社番が7900, 7934の社員の社番と名前を出力
SQL> SELECT empno, ename
  2  FROM emp
  3  WHERE empno IN (7900, 7934);

     EMPNO ENAME
---------- ----------
      7900 JAMES
      7934 MILLER

SQL>


 -NOT IN演算子

--社番が7900, 7934ではない社員の社番と名前を出力
SQL> SELECT empno, ename
  2  FROM emp
  3  WHERE empno NOT IN (7900, 7934);

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7902 FORD

12行が選択されました。

SQL>


■BETWEEN演算子

--ANDを利用しで2つの条件を結合した検索結果を表示する

--給与が3000~5000の社員を表示
SQL> SELECT empno, ename
  2  FROM emp
  3  WHERE sal BETWEEN 3000 AND 5000;

     EMPNO ENAME
---------- ----------
      7788 SCOTT
      7839 KING
      7902 FORD

SQL>


■LIKE演算子
 -STRING値に対するワイルドカード検索の為、LIKE演算子を使用
 -%:複数の文字列を表すワイルドカード
 -_:1文字を表すワイルドカード
 -ESCAPE:ワイルドカード文字を一般文字のように使用したい場合
  ex)WHERE name LIKE '%\_y%' ESPAPE '\'
 -LIKE演算子は大、小文字を区別する
 -UPPER()ファンクション使用で大小文字の区分無しで出力できる


■LIKE演算子例


--'K'文字が入っている社員情報確認
--UPPER()ファンクションは'k'を大文字の'K'に変換しで認識させる
SQL> SELECT empno,ename
  2  FROM emp
  3  WHERE UPPER(ename) LIKE '%K%';

     EMPNO ENAME
---------- ----------
      7698 BLAKE
      7782 CLARK
      7839 KING


--'_'を利用したLIKE検索
SQL> SELECT empno,ename
  2  FROM emp
  3  WHERE UPPER(ename) LIKE '_I%';

     EMPNO ENAME
---------- ----------
      7839 KING
      7934 MILLER

SQL>


■ORDER BY
 -ORDER BYはデーターの整列の為に使用(ASC[昇順、デフォルト]、DESC[降順])

--名前をASCで整列
SQL> SELECT empno, ename
  2  FROM emp
  3  WHERE deptno = 30
  4  ORDER BY ename ASC;

     EMPNO ENAME
---------- ----------
      7499 ALLEN
      7698 BLAKE
      7900 JAMES
      7654 MARTIN
      7844 TURNER
      7521 WARD

6行が選択されました。

--2番目コラムをデフォルト(ASC)順で整列
SQL> SELECT empno, ename
  2  FROM emp
  3  WHERE deptno = 30
  4  ORDER BY 2;

     EMPNO ENAME
---------- ----------
      7499 ALLEN
      7698 BLAKE
      7900 JAMES
      7654 MARTIN
      7844 TURNER
      7521 WARD

6行が選択されました。

SQL>

--上記2つは同じ結果になる

0 件のコメント:

コメントを投稿

QLOOKアクセス解析