SQL - 복습 2

강용구·2021년 4월 28일

복습 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 : 숫자형 데이터를 문자형으로 변환하거나, 날짜형 데이터를 문자형으로 변화할 때 사용

profile
Lifetime Value Creator

0개의 댓글