📃 요약
전세계 기업시장에서 굉장히 활용 많이 하는 관계형 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;