레이블이 Oracle Sequence인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Oracle Sequence인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 9일 금요일

[oraclejava community, oracle 강좌,oracle교육,구로디지털오라클]oracle date type

----------
Date Type
----------

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  



1. 날짜를 가르키는 값을 Tanle에 저장. 세기를 포함하여 년,월,일시,분,초,등을 저장한다.

2. BC 4712년1월1일부터 AD 4712년 12월31일까지의 날자형식을 저장할수 있다.

3. 7 Byte의 고정길이 Column임.

4. Oracle의 기본날자 형식은 dd-mon-yy, NLS_DATE_FORMAT Parameter를 이용하여 기본형식을 변경할수 있다. 또는 Alter Session Command를 이용하여 해당 sssion기간동안 날자형식을 변경할수도 있다.

5. 표준 Oracle날자 형식이 아닌 형식의 입력을 위해서는 to_date 함수를 이용한다. to_date(‘november 13, 1992’,’month dd, yyyy’)

6. Oracle에서 시간은 24시간 형식(HH:MI:SS)으로 저장한다. 기본적으로 날자 Column의 시간을 입력하지 않은 경우 12:00:00 AM(자정)으로 저장된다. 만약 시간만 입력되면 해당월의 1일이 입력된다. Date의 time부분을 입력하려면 반드시 TO_DATE함수와 format mask를 이용해야 한다.

7.기본적으로 일자나 연산이 빈번히 경우 DATE 타입으로 가져가는 것이 효과적일 수 있지만 시간이 정상적으로 입력된 경우 일자를 '=' 연산으로 비교할 수가 없다. 예를 들면 아래와 같다.

INSERT INTO EMP (EMPNO,ENAME,HIREDATE,DEPTNO)
        VALUES (7777,'BJKIM',TO_DATE('94/03/15 03:20:30','YY/MM/DD HH:MI:SS');

  와 같이 정상적으로 날짜를 입력한후

  SELECT * FROM EMP WHERE HIREDATE = '15-MAR-94';

  을 수행 하더라도 원하는 결과를 도출할 수 없다. 뿐만 아니라 LIKE, SUBSTR등의 함수를
이용하여 스트링(string) 비교를 하고자 할때 제한적으로 밖에 사용할 수 없다. 즉 디폴트
날짜 형태를 기준으로만 비교 가능하다.

예 ) 81년에 입사한 인원을 찾고자 할때

      a.SELECT * FROM EMP WHERE HIREDATE LIKE '%81';
      혹은
      b.SELECT * FROM EMP WHERE SUBSTR(HIREDATE,8,2) = '81';
 
  와 같이 SQL문을 날짜 타입의 기본 형태인 'DD-MON-YY'을 기준으로 스트링 함수를 사용하여야 한다.

예 ) 만일 HIREDATE에 인덱스가 생성 되어 있을때 아래 2가지 SQL문을 수행하게 되면 a의 경우는 인덱스를 사용하지만 b의 경우에는 인덱스를 사용 못하는 일반적
인 문자 타입과의 차이점을 보인다.

SELECT * FROM EMP
WHERE HIREDATE1 = '01-MAR-81';

SELECT * FROM EMP
WHERE HIREDATE1 BETWEEN '01-JAN-81' AND '31-DEC-81';

의 경우는 내부적으로 비교되는 값에서 투데이트 함수를 이용하여 처리를 하지만
의 경우 컬럼 부분이 TO_CHAR을 이용하여 변동되기 때문에 인덱스를 사용할 수 없
다.이와 같은 사항을 주의하여 쿼리문을 수행하여야 한다. 결론적으로 자주 조건절
에 사용되거나, 데이트 연산 기록(logging), 타임 스탬프로 사용되는 컬럼을 제
외하고는 효과적인 수행을 위해 문자  타입 적용을 고려하는 것이 효과적이다.


오라클 시퀀스란(oracle sequence)


ORACLE SEQUENCE 개념


- Sequence는 순차적인 일련번호를 생성한다.(최대 38자리의 Oracle정수)
- Sequence는 다중 사용자환경에서 디스크 입출력 오버헤드나 Transaction Locking없이
고유한 순번을 생성하는데 용이하다.
- Sequence생성시 Sequence이름, 오름차순또는 내린차순여부, 번호간격등을 정의한다.
- Sequence번호는 Table과 독립적으로 생성되며,따라서 동일한 Sequence를 하나또는 여러
개의 Table에 사용할수 있다.
B. Sequence생성
- create sequence emp_sequence
increment by 1
start with 1
nomaxvalue
nocycle
cache 10;

cache Optiom은 일련의 Sequence를 미리 할당하고 메모리에 유지하면서 시퀀스를 빠르게 Access
할수있게 한다. 일련의 Sequence를 Cache하면 Sequence를 건너 뛸수있다.
예를들어 Instance가 비정상적으로 종료되면 캐시되었지만 사용안된 Sequence를 잃어버리게 된다.
즉 Cache를 상요하면 Sequence를 빠르게 Access할수 있으나 비정상적으로 종료돨 경우에는 번호가
건너 뛰게된다.

C. Sequence 변경
Alter sequence emp_sequence
Increment by 10
Maxvalue 10000
Cycle
Cache 20;
D. Sequence에 영향을 주는 변수
Sequence_cache_entries매개변수는 캐시될 시퀀스를 설정하다. 너무 낮으면 시퀀스값을 건너
뛸수도 있다. 예를들면 다섯개의 Cache된 Sequence를 사용하고 캐시가 다찼으며,매개변수 값이
4라면 현재 4개의 시퀀스가 Cache되었다면 캐시에서 최근에 가장적게 사용한 Sequence는 5번째
Sequence로 바뀌면서 이 Sequence의 모든 다른값(캐시된 마지막 Sequence까지)은 손실된다.

E. Sequence삭제
- drop sequence emp_sequence;

2013년 8월 5일 월요일

(오라클시퀀스, ORACLEJAVA,오라클자바교육)Oracle Sequence

오라클 시퀀스는 DB Table의 자동증분 컬럼에 사용하면 유용하다. 아래 내용을 확인하자.



오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 



A. 개념
- Sequence는 순차적인 일련번호를 생성한다.(최대 38자리의 Oracle정수)
- Sequence는 다중 사용자환경에서 디스크 입출력 오버헤드나 Transaction Locking없이
고유한 순번을 생성하는데 용이하다.
- Sequence생성시 Sequence이름, 오름차순또는 내린차순여부, 번호간격등을 정의한다.
- Sequence번호는 Table과 독립적으로 생성되며,따라서 동일한 Sequence를 하나또는 여러
개의 Table에 사용할수 있다.
B. Sequence생성
- create sequence emp_sequence
increment by 1
start with 1
nomaxvalue
nocycle
cache 10;

cache Optiom은 일련의 Sequence를 미리 할당하고 메모리에 유지하면서 시퀀스를 빠르게 Access
할수있게 한다. 일련의 Sequence를 Cache하면 Sequence를 건너 뛸수있다.
예를들어 Instance가 비정상적으로 종료되면 캐시되었지만 사용안된 Sequence를 잃어버리게 된다.
즉 Cache를 상요하면 Sequence를 빠르게 Access할수 있으나 비정상적으로 종료돨 경우에는 번호가
건너 뛰게된다.

C. Sequence 변경
Alter sequence emp_sequence
Increment by 10
Maxvalue 10000
Cycle
Cache 20;
D. Sequence에 영향을 주는 변수
Sequence_cache_entries매개변수는 캐시될 시퀀스를 설정하다. 너무 낮으면 시퀀스값을 건너
뛸수도 있다. 예를들면 다섯개의 Cache된 Sequence를 사용하고 캐시가 다찼으며,매개변수 값이
4라면 현재 4개의 시퀀스가 Cache되었다면 캐시에서 최근에 가장적게 사용한 Sequence는 5번째
Sequence로 바뀌면서 이 Sequence의 모든 다른값(캐시된 마지막 Sequence까지)은 손실된다.

E. Sequence삭제
- drop sequence emp_sequence;