복습 1에서는 기초를,
복습 2에서는 초급적인 내용을 되짚어본다.
SELECT UPPER(ename)
, LOWER(ename)
, INITCAP(ename)
FROM emp

UPPER : 대문자로 출력
LOWER : 소문자로 출력
INITCAP : 대+소문자로 출력
SELECT SUBSTR('SMITH', 1, 3)
, INSTR('SMITH', 'M')
FROM DUAL
SUBSTR : 문자에서 특정위치의 문자열을 추출
SUBSTR(문자, 시작위치, 추출할 문자 수)
INSTR : 문자에서 특정 철자의 위치를 출력
SELECT ename
, LENGTH(ename)
FROM emp
LENGTH : 문자열의 길이를 출력.
SELECT ename
, REPLACE(sal, 0, '*')
FROM emp

REPLACE : 특정 철자를 다른 철자로 변경
SELECT ename
, LPAD(sal, 10, '*') as salary1
, RPAD(sal, 10, '*') as salary2
FROM emp

LPAD : 특정 컬럼을 표시하고 싶은 자리수와 빈자리는 '' 안의 문자로 왼쪽에 채우는 수식
RPAD : 동일한 방법, 오른쪽부터 채운다.SELECT ename, sal, lpad('■', round(sal/100) ,'■') as bar_chart FROM emp
LPAD, RPAD를 사용하면 다음과 같이 시각화가 가능하다.
SELECT 'smith'
, LTRIM('smith', 's')
, RTRIM('smith', 'h')
, TRIM('S' FROM 'smiths')
FROM DUAL

LTRIM, RTRIM : 각각 왼쪽, 오른쪽에서 잘라서 출력할 문자를 입력.
TRIM : 양쪽에서 잘라낼 문자
- 잘라낼 문자를 별도로 입력하지 않으면, 공백부분이 자동으로 삭제된다.
SELECT '876.567' as 숫자
, ROUND(876.567, 1)
, ROUND(876.657, -1)
, ROUND(876.657, 0)
, TRUNC(876.657, 1)
FROM DUAL

ROUND : 반올림할 수 있는 함수이다.
TRUNC : 특정 자리의 숫자를 버리고 출력하는 함수이다.
SELECT MOD(10, 3)
, FLOOR(10/3)
FROM DUAL
MOD : 숫자를 나눈 나머지 값을 출력하는 함수이다. 나누어지는 값을 먼저, 나누기 값을 그 다음에 입력한다.
FLOOR : 몫을 출력하는 함수이다.
SELECT ename
, MONTHS_BETWEEN(SYSDATE, hiredate)
FROM emp

SYSDATE : 오늘 날짜를 확인하는 함수
MONTHS_BETWEEN : 날짜와 날짜 사이의 개월 수를 출력하는 함수. 최신날짜를 먼자, 예전날짜를 나중에 입력한다.
SELECT ADD_MONTHS(TO_DATE('2019-01'01', 'RRRR-MM-DD'), 100)
FROM DUAL

ADD_MONTHS : 특정 날짜에서 개월 수를 더한 날짜를 출력
TO_DATE : 입력한 날짜가 이런이런 형식으로 구성되어 있다고 알려주는 것.
SELECT TO_DATE('2019-05-01', 'RRRR-MM-DD') + INTERVAL '10-3' year(3) to month
, TO_DATE('2019-05-01', 'RRRR-MM-DD') + TO_YMINTERVAL('03-05') as 날짜
FROM DUAL

2019년 5월 1일부터 1년 3개월 후의 날짜를 출력하는 쿼리
INTERVAL : 보다 섬세한 날짜 산술 연산을 가능하게 해주는 함수.
TO_INTERVAL : ~년 ~개월 후의 날짜를 출력
SELECT '2019/05/22' as 날짜
, NEXT_DAY('2019/05/22', '월요일') as "돌아올 요일"
FROM DUAL

NEXT_DAY : 특정 날짜 이후에 바로 돌아오는 ~요일의 날짜를 구하는 함수
SELECT '2019/05/22' as 날짜
, LAST_DAY('2019/05/22') as "마지막 날짜"
FROM DUAL

LAST_DAY : 해당 날짜가 포함된 달의 마지막 날짜를 구하는 함수
SELECT LAST_DAY(SYSDATE) - SYSDATE FROM DUAL오늘부터 이번달 말까지 총 며칠 남았는지 보여주는 쿼리.
SELECT ename
, TO_CHAR(hiredate, 'DAY') as 요일
, TO_CHAR(sal, '999,999') as 월급
FROM emp
WHERE ename = 'SCOTT'

TO_CHAR : 숫자형 데이터를 문자형으로 변환하거나, 날짜형 데이터를 문자형으로 변화할 때 사용