SMALL
날짜 함수
SYSDATE 날짜 연산
SELECT SYSDATE
FROM DUAL;
현재 날짜,시간을 가져올 수 있는 함수
형변환 함수
TO_CHAR 포맷
SELECT ENAME, SAL, TO_CHAR(SAL,'L999,999')
FROM EMP;
NVL 형일치
SELECT EMPNO, ENAME, NVL(MGR,'CEO')
FROM EMP;
MGR이 NULL값인 ( 상사가 없는 ) 경우 CEO라는 문자를 표시하기 위해 NVL을 사용했지만 오류 메시지가 나옴
SELECT EMPNO, ENAME, NVL(to_char(mgr),'CEO')
FROM EMP;
TO_CHAR을 이용해 MGR칼럼을 CHAR형태로 변환하니 정상적으로 실행됨
-> NVL을 사용할 땐 칼럼과 표시할 문자의 형이 일치해야함
DECODE
프로그램 언어에서 가장 많이 사용되는 switch case 문과 같은 기능을 가짐
DECODE(표현식, 조건1, 결과1,
조건2, 결과2,
조건3, 결과3
기본결과 n
)
예제)
select empno, ename, job, sal,
decode(job, 'ANALYST', sal*1.05,
'SALESMAN', sal*1.1,
'MANAGER', sal*1.15,
'CLERK', sal*1.2,
sal*1.0)
as "upsal"
from emp;
CASE 함수
- 여러가지 경우에 대해 하나를 선택하는 함수
- DECODE 함수와 차이점이 있다면 DECODE 함수는 조건 일치(= 비교 연산)하는 경우에만 적용
CASE 함수는 다양한 비교 연산자를 이용해 조건을 제시할 수 있으므로 범위를 지정할 수도 있음
- if else if else 와 유사한 구조
CASE 표현식 WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
WHEN 조건3 THEN 결과3
ELSE 결과 N
END
예제)
SELECT ENAME, SAL,
case when sal between 3000 and 5001 then '최상'
when sal between 2000 and 3001 then '상'
when sal between 1000 and 2001 then '중'
else '하'
end 등급
from emp
order by 2 desc;
그룹 함수
with 구문
with a as (
select trunc(to_date('20200101','YYYYMMDD')-hiredate) as 근무일수,
case when 142000 <= trunc(to_date('20200101','YYYYMMDD')-hiredate) then '장기'
when trunc(to_date('20200101','YYYYMMDD')-hiredate) between 13800 and 14200 then '중기'
else '단기'
end 구분
from emp
)
select 구분, count(구분) from a
group by 구분;
조인
Non-Equi Join
예시)
select a.ename, a.sal, b.grade
from emp a ,salgrade b
where a.SAL between b.LOSAL and b.HISAL;
SELF JOIN
--4번
select a.ename, a.job
from emp a, emp b
where a.mgr = b.empno and b.ename = 'KING';
--5번
select a.ename, b.ename
from emp a, emp b
where a.deptno = b.deptno and a.ename = 'SCOTT' and b.ename <> 'SCOTT';
OUTER JOIN
select a.ename, a.deptno, b.dname
from emp a, dept b
where a.deptno(+) = b.deptno;
ANSI JOIN
'Database & Bigdata > Oracle' 카테고리의 다른 글
[1/29] 강의정리 (JDBC, DBConnection, Java, Oracle, Mybatis) (0) | 2021.01.29 |
---|---|
[Oracle] 1/28 강의 정리 (서브쿼리, 딕셔너리, merge, 트랜잭션) (0) | 2021.01.28 |
[Oracle] 1/26 강의 정리 (TAB, IS NULL, ROUND, 오라클 함수) (0) | 2021.01.26 |
[Oracle] Mac에서 Docker로 Oracle 사용 시 Scott 계정 생성하기 (3) | 2021.01.26 |
댓글