-データーベースに保存されているデーターの検索に使用する。
■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 件のコメント:
コメントを投稿