OracleDB - SELECT


📘 SELECT(DMLまたはDQL):照会


🖊 データ(SELECT)を検索すると、条件を満たす行が検索されます.
このとき,クエリ行の集合を「RESULTSET」と呼ぶ.
🖊 RESULT SETは、0行以上を含むことができる.
なぜ0個賞なのか条件を満たす行がない可能性があるからです.

📜 SELECTの使い方


一般クエリー


[SELECT*FROMテーブル名]
EMPLOYEテーブルで全従業員の情報を表示する
"*":ALL、すべて、すべて
SELECT * FROM EMPLOYEE;
[SELECT列名列名…FROMテーブル名]
EMPLOYEテーブルですべての従業員の電話番号、名前、名前を確認します.
SELECT EMP_ID, EMP_NAME, PHONE FROM EMPLOYEE;

列値を求める算術演算


列の値:表のセル(==セル)に作成された値(DATA)
SELECT文でカラム名に算術演算を作成すると、
クエリの結果は、算術演算をカラム値に反映します.
EMPLOYEフォームでは、すべての従業員が4回、名前、給料、+1000000を取得します.
SELECT EMP_ID, EMP_NAME, SALARY, SALARY + 1000000 FROM EMPLOYEE;

本日の日付照会


SELECT SYSDATE FROM DUAL;
SYSDATE:システム上の現在の日付
(年、月、日、時、分、秒単位.
ディベロフの日付表記方法は年/月/日に指定されています.
Dummy Table(DUAL):ダミーテーブル(テンポラリテーブル、簡易クエリーテーブル)
DBは、日付データ(+,-)を計算できます
SELECT SYSDATE, SYSDATE + 1 FROM DUAL;
EMPLOYEフォームでお名前、入社日、本日の勤務日を検索します
SELECT EMP_NAME, HIRE_DATE, (SYSDATE - HIRE_DATE) / 365 FROM EMPLOYEE;

列の別名の指定


SELECTクエリー結果セットRESULT SETのカラム名を指定
1)列名AS別名:スペースX、特殊文字X、文字O
2)列名別名:1)番号の中でASのみを省略する
3)列名AS「別名」:スペースO、特殊文字O、文字O
4)列名「別名」:3番でASのみ省略
EMPLOYE表で4回、氏名、給与(ウォン)、勤務日数をすべて表示
SELECT EMP_ID AS 사번, 
       EMP_NAME 이름,
       SALARY AS "급여(원)", 
       SYSDATE - HIRE_DATE "근무 일수"
FROM EMPLOYEE;

ステレオ


テキスト:値自体
≪データベース内のテキスト|Text in Database|oem_src≫:指定した値を既存のテーブルに存在する値として使用します.
-->エンティティシンボル"(一重引用符)
SELECT EMP_NAME, SALARY, '원' AS 단위 FROM EMPLOYEE;

✏ DISTINCT


DISTINCT:クエリー時にカラムの重複値を1回のみ表示する
(注意事項)
1)DISTICTはSELECT文に1回しか書き込めません.
2)DISTINCTはSELECTゲートの一番前に書くべきです.
--EMPLOYEテーブルに格納されている従業員が属する部門コードのタイプを検索します.
 SELECT DISTINCT DEPT_CODE FROM EMPLOYEE;

✏ WHERE


WHERE節
-->テーブル内の条件値を満たす行のみをクエリーする場合に使用します.
比較演算子:>、<、>=、<=、=(->等号に等しい)、!=、<>(異なる)
EMPLOYEテーブルでは、
4番、名前、給料、部門コードの表示
<解釈順>
3) SELECT EMP_ID, EMP_NAME, SALARY, DEPT_CODE
1) FROM EMPLOYEE
2) WHERE SALARY > 3000000;
EMPLOYEテーブルで、部門コードが「D 9」の従業員の番号、氏名、部門コード、電話番号を検索します.
SELECT EMP_ID, EMP_NAME, DEPT_CODE, PHONE 
FROM EMPLOYEE 
WHERE DEPT_CODE = 'D9';

「論理演算子」(AND、OR)


EMPLOYEフォームでは、報酬が200万以上、部門コードが「D 6」の従業員の名前、報酬、部門コードを表示します.
SELECT EMP_NAME, SALARY, DEPT_CODE 
FROM EMPLOYEE
WHERE SALARY >= 2000000
AND DEPT_CODE = 'D6';
EMPLOYEフォームでは、報酬が300万人以上、500万人未満の従業員の4回、名前、報酬を表示します.
SELECT EMP_ID, EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY >= 3000000 AND SALARY <= 5000000;
EMPLOYEテーブルで、部門コードが「D 6」または「D 9」の従業員の番号、名前、および部門コードを表示します.
SELECT EMP_ID, EMP_NAME, DEPT_CODE FROM EMPLOYEE
WHERE DEPT_CODE = 'D6' OR DEPT_CODE = 'D9';

✏ BETWEEN A AND B


列名BETWEEN A AND B:列名がAまたはBより大きい場合
EMPLOYEフォームでは、報酬が300万人以上、500万人未満の従業員の4回、名前、報酬を表示します.
SELECT EMP_ID, EMP_NAME, SALARY FROM EMPLOYEE
WHERE SALARY BETWEEN 3000000 AND 50000000;
列名NOT BETWEEN A AND B:列値がAまたはB以下
SELECT EMP_ID, EMP_NAME, SALARY FROM EMPLOYEE
WHERE SALARY NOT BETWEEN 3000000 AND 50000000;
BETWEENを使用した日付の比較
EMPLOYEワークベンチで90/01/01~99/12/31(90年入社者)従業員の4回、入社日を確認
SELECT EMP_ID, EMP_NAME, HIRE_DATE FROM EMPLOYEE
WHERE HIRE_DATE BETWEEN '1990/01/01' AND '1999/12/31';
「1990/01/01」日付を文字列で作成します.
DBは自ら判断して日付タイプ(DATE)に変換する