본문 바로가기

개발23

[Oracle] 오라클 데이터 복구 (TIMESTAMP) 데이터를 실수로 수정 혹은 삭제하고 습관적으로 commit 을 해버리고 아차차... 할 경우가 있지요.. 오라클은 다행히 복구할 수 있는 기능이 있습니다. 바로 타임스탬프(TIMESTAMP)입니다. 오라클 9i Release 2부터 Flashback 기능을 통해 사용할 수 있습니다. 일종의 타이머가 있는 휴지통이라고 생각하면 됩니다. DB 설정에 따라 Flashback의 사이즈만큼만 과거 데이터를 보관하고 있으니, 변경이 자주 발생하는 테이블은 복구 가능한 시점이 짧을 수 있습니다. [사용법] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -- 10초전 데이터 조회 SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INT.. 2021. 12. 1.
[Oracle] 오라클 Null 처리 NVL, NVL2 사용방법 쿼리 수행 시 해당 컬럼이 빈값 (null) 일 경우 처리하는 함수인 NVL, NVL2를 사용합니다. NVL(컬럼명, 지정값) 컬럼이 NULL 인경우 지정값을 출력 NVL2(컬럼명, 지정값1, 지정값2) 컬럼에 값이 있을 경우 지정값1을 출력, NULL 인 경우 지정값2 출력 [NVL] Q. 접속 이력이 없을 경우 접속 시간을 '0000-00-00'로 표현 해보시오. SELECT NVL(LAST_CONN_DATE, '0000-00-00') AS '접속시간' FROM EMP [NVL2] Q. 접속 이력이 없을 경우 'N' 있을 경우 'Y' 로 표현 해보시오. SELECT NVL2(LAST_CONN_DATE, 'Y', 'N') AS '접속유무' FROM EMP 2020. 4. 2.
[Oracle] 오라클 KEEP 사용방법 KEEP 단어에서 풍기는 의미처럼 정렬을 통해 나온 값을 KEEP(유지) 해놓고 해당 ROW의 다른 컬럼을 출력하고 싶을 때 사용하는 함수입니다. KEEP 은 주로 단독으로 사용하기 보다는 FIRST, LAST 와 함께 사용합니다. 즉 FIRST, LAST의 기준에 따라 MAX, MIN의 의미를 부여할 수 있습니다. 예를 들면, "쇼핑몰 상품 중 가장 비싼 상품의 가격은? " 이렇게 할 경우 단순히 GROUP BY, MAX()를 사용하면 결과가 나옵니다. "쇼핑몰 상품 중 가장 비싼 상품의 이름은?" 이런 경우 가격 MAX를 한다음 서브쿼리나 다른 방법으로 이름을 가져와야 합니다. 이럴 경우 KEEP 문법을 통해 한번에 찾아올 수 있습니다. 사용예 SELECT MIN(NAME) KEEP ( DENSE_R.. 2020. 4. 1.
[Oracle] 오라클 소수점 올림/내림/반올림/버림 사용방법 간단히 오라클 소수점 처리하는 방법을 알아봅시다. ​ 올림함수 CEIL(n) : 무조건 소수점을 올려 정수가 됩니다. SELECT CEIL(4.2) FROM DUAL --결과 : 5 ​ 내림함수 FLOOR(n) : 무조건 소수점을 내려 정수가 됩니다. SELECT FLOOR(4.9) FROM DUAL --결과 : 3 ​ 반올림함수 ROUND(n,반올림 자릿수) SELECT ROUND(3.1357) FROM DUAL --결과 : 3 SELECT ROUND(3.1357,0) FROM DUAL --결과 : 3 SELECT ROUND(3.1357,1) FROM DUAL --결과 : 3.1 SELECT ROUND(3.1357,2) FROM DUAL --결과 : 3.14 SELECT ROUND(3.1357,3) F.. 2020. 4. 1.
[Oracle] 오라클 시노님(Synonym) 사용방법(생성/조회/삭제) 시노님(Synonym) 이란? 데이터베이스의 객체는 생성 유저 기준으로 권한을 가집니다. 다른 유저가 해당 객체를 사용 및 참조하기 위해서는 다양한 방법이 있지만, 주로 시노님을 사용합니다. 시노님(Synonym) 생성 [문법] CREATE OR REPLACE [PUBLIC / PRIVATE] SYNONYM [시노님명] FOR [객체명] [예제] CREATE OR REPLACE SYNONYM EMP FOR DBTEST1.EMP; 시노님(Synonym) 조회 --해당 유저 SELECT * FROM USER_SYNONYMS --전체 조회 SELECT * FROM ALL_SYNONYMS ​ 시노님(Synonym) 삭제 시노님 삭제는 PRIVATE 시노님은 DROP SYNONYM, DROP ANY SYNONYM.. 2020. 3. 31.
[Oracle] 오라클 OVER() 함수 사용방법 (OVER() PARTITION BY ~ ) OVER 함수는 GROUP BY, ORDER BY를 이용하는 서브쿼리를 편리하게 대체하는 함수입니다. GROUP BY 대체이기 때문에 ROW_NUMBER(), COUNT(), MAX(), MIN(), SUM(), AVG(), RANK() 등의 분석 함수와 함께 사용됩니다. 그리고 OVER() 사용 시 GROUP BY와 비슷하지만 레코드의 수는 변함이 없습니다. [사용방법] ROW_NUMBER() OVER( PARTITION BY 컬럼명 ORDER BY 컬럼명 ) ※ PARTITION BY, ORDER BY 는 분석함수에 따라 한가지만 적을 수도 있고, 둘다 사용할 수 있습니다. ​ [사용예제] Q.부서코드 별 그룹핑하여 부서코드 빠른 순서 기준으로 순번을 주고 싶을 때 A. SELECT ROW_NUMBE.. 2020. 3. 31.
[Oracle] 오라클 LPAD, RPAD 함수 사용방법 (0, 공백 채우기) 오늘은 주로 공백, 0 등을 채울 때 사용하는 LPAD, RPAD 에 대해 알아봅시다. 주로 숫자형 데이터를 문자형으로 변환하고 그 문자길이를 똑같이 맞추기 위해 사용합니다. 함수명에서 알 수 있듯이 LPAD는 왼쪽, RPAD는 오른쪽부터 총길이 만큼 지정한 문자를 채웁니다. 예제를 보는게 가장 이해하기 쉽습니다. [사용법 ] LPAD('값', '총 문자길이' '채울문자') RPAD('값', '총 문자길이' '채울문자') [LPAD 예제] ※ EMPNO를 8자리로 맞추되 짧을 경우 앞에 '0'을 붙인다. (EMPNO의 값은 '123' 이다.) SELECT LPAD(EMPNO, 8, 0) FROM EMPLOYEE ==> 결과 : 00000123 [RPAD 예제] ※ EMPNO를 8자리로 맞추되 짧을 경우 .. 2020. 3. 31.
[Oracle] 오라클 조건절/CASE구문/DECODE구문 오늘은 오라클 쿼리에서 사용할 수 있는 조건절인 CASE 구문과 DECODE 구문의 사용방법을 알아보겠습니다. 쿼리 내에 조건절을 사용할 수 있는 대표적인 방법으로는 CASE 구문과 DECODE 구문이 있는데요, 지극히 개인적인 제 판단으로는 CASE구문이 좀 더 가독성이 좋더라구요. 그래서 간단한 조건절의 경우 DECODE를 사용하고 조금 복잡한 조건식이 들어갈 경우 CASE를 사용합니다. [CASE 구문] CASE WHEN [조건식1] THEN [결과1] WHEN [조건식2] THEN [결과2] ... ELSE [ELSE 결과] END [DECODE 구문] DECODE([비교컬럼], [조건1], [결과1], [조건2], [결과2], … , [ELSE 결과] ) ​ ​ 예제를 통해 좀 더 자세히 알아보.. 2020. 3. 31.
[Oracle] 오라클 날짜 포맷/날짜 연산/ 날짜 계산 ​ [날짜 포맷] SELECT SYSDATE AS BASIC , TO_CHAR(SYSDATE, 'YYYY.MM.DD') -- 년월일 , TO_CHAR(SYSDATE, 'YYYY.MM.DD HH:MI:SS') -- 년월일 시분초 (12시) , TO_CHAR(SYSDATE, 'YYYY.MM.DD HH24:MI:SS') -- 년월일 시분초 (24시) , TO_CHAR(SYSDATE, 'YYYY.MM.DD PM HH:MI:SS ') -- 년월일 오전오후 시분초 , TO_CHAR(SYSDATE, 'YYYY.MM.DD DY HH:MI:SS') -- 년월일 요일 시분초 (금) , TO_CHAR(SYSDATE, 'YYYY.MM.DD DAY HH:MI:SS') -- 년월일 요일 시분초 (금요일) FROM DUAL; [날.. 2020. 3. 31.