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