+ 00 00 0000

Have any Questions?

05_Simple Coding – Oracle – Function 기초_2 – 기본 요약

05_Simple Coding – Oracle – Function 기초_2 – 기본 요약

📃 요약

전세계 기업시장에서 굉장히 활용 많이 하는 관계형 DB 로 오라클이 있음.
상용 가격은 굉장히 비싸고, 유지보수 비용도 굉장히 높은것으로 알려져 있음.
마이크로서비스가 활성화 되면서 예전과 달리 비싼 비용의 오라클보다 무료 DB 로 전환하는 사례도 나타나고 있음
주로 서비스업체 중심으로 Mysql / Maria DB 가 많이 활용되고 SI 프로젝트는 아직도 전통의 강자 오라클이 많이 사용되고 있음

요소 기술 :

– Basic : SQL

📃 기술 구현

스펙 :

- SQL Developer
- Oracle SQL

📃 내장 Function 기초

- 자바에서와 같이 여러가지 계산, 문자열 조작 등 편리한 기능을 제공
- SQL 문 안에서 사용

3. 날짜 함수

1) 날짜함수 :

- SYSDATE : 시스템에 저장된 현재 날짜를 RETURN 하는 함수(*****)
- DB 의 자료형 : 문자열(VARCHAR2 형, CHAR 형), 숫자(NUMBER 형), 날짜(DATE 형)
- 단, 오라클 기준
SELECT SYSDATE FROM DUAL;

2) MONTHS_BETWEEN(현재날짜, 과거날짜) :

- 두 날짜 사이의 개월수를 RETURN 하는 함수
- 날짜(시간) 연산 : 실수가 나옴(ROUND, TRUNC 고려)
예 : 
SELECT ENAME, SYSDATE, HIREDATE
      , TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) AS 개월수
FROM EMPLOYEE;

3) ADD_MONTHS(날짜컬럼, 숫자) :

- 두 날짜 사이의 개월수를 RETURN 하는 함수
- 날짜(시간) 연산 : 실수가 나옴(ROUND, TRUNC 고려)
-- 예제) 입사일에서 6개월이 지난 날짜 구하기
SELECT ENAME, HIREDATE,
      ADD_MONTHS(HIREDATE, 6) AS 개월수더하기
FROM EMPLOYEE;

4) NEXT_DAY(날짜컬럼, ‘요일’) :

- 날짜컬럼에서 최초로 도래하는 요일의 날짜를 RETURN 함수
-- 예제) 오늘을 기준으로 최초로 도래하는 토요일의 날짜 구하기
SELECT SYSDATE
      ,NEXT_DAY(SYSDATE, '토요일')
FROM DUAL;

5) LAST_DAY(날짜컬럼) :

- 날짜컬럼의 그 달(월)의 마지막 날의 날짜를 구해주는 함수
-- 예제) 입사한 날의 그 달의 마지막 날 구하기
SELECT ENAME, HIREDATE
      ,LAST_DAY(HIREDATE)
FROM EMPLOYEE;

4. 자료형 변환 함수

1) TO_CHAR :

- 날짜 -> 문자열로 바꾸는 함수
사용법 :
        TO_CHAR(컬럼명, '날짜포맷')
        날짜포맷 : YYYY(년도(4자리)), YY(2자리) [YEAR]
                MM(월(2자리))               [MONTH]
                DD(일(2자리))               [DAY]
                DAY(요일)                   [요일]
                HH(1~12까지의시간)           [HOUR]
                HH24(1~24까지의시간)         [HOUR]
                MI(분(2자리)                [MINUTES]
                SS(초(2자리))               [SECOND]

예 : 
SELECT ENAME, HIREDATE
       ,TO_CHAR(HIREDATE, 'YY-MM') AS 단축날짜
       ,TO_CHAR(HIREDATE, 'YYYY-MM-DD HH24:MI:SS') AS 날짜
FROM EMPLOYEE;

2) TO_CHAR :

- 숫자 -> 문자로 변환
사용법) 
        TO_CHAR(숫자컬럼, '숫자포맷')
        숫자포맷 : L - 각 나라별 통화 기호를 자동으로 붙여줌(W, $ 등)
                9 - 3자리를 잡고 자리수가 모자라도 따로 0을 채워주지 않음
                0 - 3자리를 잡고 자리수가 모자라면 0을 채움
                , - 각 통화의 중간에 쉼표(,)를 자동으로 추가해줌

-- 예제 2) 급여를 출력하면서 통화기호를 (W, $ 등) 포함해서 출력하세요
SELECT ENAME, SALARY
      ,TO_CHAR(SALARY, 'L999,999')
      ,TO_CHAR(SALARY, 'L000,000')
FROM EMPLOYEE;

3) TO_DATE(문자[숫자], 날짜포맷) :

- 문자[숫자] -> 날짜형으로 바꾸어 주는 함수
-- HIREDATE 컬럼 : 날짜형
SELECT ENAME, HIREDATE
FROM EMPLOYEE
WHERE HIREDATE = TO_DATE('19810220', 'YYYYMMDD');

4) TO_NUMBER(문자, 숫자포맷) :

- 문자 -> 숫자로 변환하는 함수
-- 예제 4) 숫자 형태의 문자(통화) 빼기
SELECT TO_NUMBER('100,000','999,999') - TO_NUMBER('50,000','999,999') 
FROM DUAL;

5. 일반 함수

1) NVL :

- NULL -> 숫자[문자]로 변경하는 함수
-- 상여금 컬럼 : COMMISSION (NULL 포함됨)
-- NULL 은 산술연산이 안됨 
SELECT ENAME, SALARY, COMMISSION
      ,NVL(COMMISSION, 0)
      ,SALARY*12+NVL(COMMISSION, 0)
FROM EMPLOYEE
ORDER BY JOB;

2) DECODE 함수 :

- SQL 에서 조건문을 표시하는 함수
사용법 : 
    DECODE(DNO, 조건1, 결과1
                , 조건2, 결과2
                ...
                ,기본결과)
    설명) DNO 컬럼에 대해 조건1이 참이면 결과1이 출력되고
                        조건2가 참이면 결과2가 출력되고
                        모두 거짓이면 기본결과가 출력됨

예 :
SELECT ENAME, DNO
      ,DECODE(DNO, 10, '회계부'
                 , 20, '연구소'
                 , 30, '판매부'
                 , 40, '운영부'
                 ,'디폴트') AS 부서명
FROM EMPLOYEE
ORDER BY DNO;

3) CASE WHEN 함수 :

- SQL 에서 조건문을 표시하는 함수
- DECODE 업그레이드 함수 , 기능은 동일
사용법 :
       CASE WHEN 조건식1 THEN '결과1'
            WHEN 조건식2 THEN '결과2'
            ...
            ELSE '기본결과'
       END

예 : 
SELECT ENAME, DNO
      ,CASE WHEN DNO=10 THEN '회계부'
           WHEN DNO=20 THEN '연구소'
           WHEN DNO=30 THEN '판매부'
           WHEN DNO=40 THEN '운영부'
           ELSE '디폴트'
       END AS 부서명
FROM EMPLOYEE
ORDER BY DNO;

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다