DML : Data Manipulation Language(데이터 조작 언어)
테이블에 데이터 검색, 삽입, 수정, 삭제하는 명령어
SELECT, INSERT, UPDATE, DELETE 을 말한다.
SELECT Query 문의 기본형
/*
SELECT
(값, 문자, COLUMN, 함수, SUB, QUERY)
FROM
(TABLE NAME, SUB QUERY)
*/
Scott / Tiger 계정 또는 hr/ hr 계정으로 진행.
현재 계정의 테이블을 모두 선택.
SELECT
*
FROM TAB;
emp 테이블에서 원하는 COLUMN의 값만을 선택
SELECT empno, ename, sal
FROM emp;
SELECT ename, sal, sal + 300 -- column sal 전체에 300을 더하는 연산 가능.
FROM emp;
SELECT ename, sal, sal*12 -- 곱연산도 가능하다.
FROM emp;
SELECT Query 문에서 자주 사용하는 예약어
AS : Alias
추가시 항목명 설정가능하며, 항목명 설정과 동시에 변수명으로도 사용이 가능함.
SUBQUERY에서 값을 빼낼때 유용하게 사용가능하다.
""만으로도 생략가능, ""이 없이도 사용가능(띄워쓰기 불가능)
SELECT empno AS "사원번호", sal"월급", sal*12+comm연봉
FROM emp;
SELECT empno, ename, sal * 12 AS annsal
FROM emp
ORDER BY annsal ASC;
CONCAT, || :
column항목을 더하거나 문자열 추가 가능.
SELECT ename || 'has $' || sal"월급"
FROM emp;
SELECT first_name || ' ' || last_name
FROM employees;
SELECT concat(first_name, last_name)
FROM employees;
DISTINCT :
중복된 값을 제외한 선택, 두가지 이상 선택시, UK 기준으로 중복제외 선택.
SELECT DISTINCT deptno
FROM emp;
SELECT DISTINCT department_id, employee_id
FROM employees
ORDER BY department_id ASC;
ASC, DESC, NULLS FIRST, NULLS LAST : 정렬
SELECT
*
FROM emp
ORDER BY comm NULLS FIRST;
SELECT
*
FROM emp
ORDER BY comm NULLS LAST;
SELECT employee_id, job_id, salary
FROM employees
ORDER BY job_id ASC, salary DESC;
NVL, NVL2 : NULL 처리
NVL(대상이 되는 컬럼, 0) NUMBER
대상이 되는 컬럼 != NULL --> 대상이 되는 컬럼
대상이 되는 컬럼 == NULL --> 0
NVL(대상이 되는 컬럼, '없음') VARCHAR2
대상이 되는 컬럼 != NULL --> 대상이 되는 컬럼
대상이 되는 컬럼 == NULL --> '없음'
NVL2(대상이 되는 컬럼, 1, 0)
대상이 되는 컬럼 != NULL --> 1
대상이 되는 컬럼 == NULL --> 0
SELECT first_name, NVL(commission_pct, 0)
FROM employees;
SELECT first_name, NVL2(commission_pct, '있음', '없음')
FROM employees;
SELECT department_id, SUM(salary), MAX(salary), trunc(AVG(salary))
FROM employees
GROUP BY department_id
ORDER BY department_id ASC;
MONTHS_BETWEEN, ADD_MONTHS:
두날짜의 월간격, 특정 날짜 월에 정수를 더한 다음 해당 날짜
SELECT MONTHS_BETWEEN('2020-05-04','2019-12-13')
FROM dual;
SELECT ADD_MONTHS('2019-12-13', 3)
FROM dual;
날짜관련 추가 예약어 관찰.
-- 날짜 정보에서 특정한 연도, 월, 일, 시, 분, 초
SELECT EXTRACT(year from to_date('191001', 'YYMMDD')) as 연도,
EXTRACT(month from to_date('19/10/01')) as 월,
EXTRACT(day from sysdate) as 일
FROM dual;
-- 시, 분, 초
SELECT EXTRACT(hour FROM CAST(sysdate AS TIMESTAMP)) as 시,
EXTRACT(minute FROM CAST(sysdate AS TIMESTAMP)) as 분,
EXTRACT(second FROM CAST(sysdate AS TIMESTAMP)) as 초
FROM dual;
'Language > SQL' 카테고리의 다른 글
Oracle SQL DDL 02 (Data Definition Language 02) (0) | 2019.12.18 |
---|---|
Oracle SQL DDL 01 (Data Definition Language 01) (0) | 2019.12.18 |
Oracle SQL DML : SELECT 02(WHERE) (0) | 2019.12.17 |
Structured Query Language (SQL 이란?) (0) | 2019.12.12 |
Oracle SQL Basic (SQL 문법 및 기본함수) (0) | 2019.12.11 |