데이터베이스/끄적끄적 4

[Oracle] Sequence 증가이상

증상: sequence 생성 이후 seq_name.nextval로 생성되는 숫자가 1, 2, 3 으로 순차적으로 증가하는 것이 아니라 10, 20씩 늘어나는 경우가 있다. 이유: sequence에 cache 옵션이 선택되었기 때문이다. cache 옵션을 사용하면 속도를 증가시키기 위해 sequence 번호를 한 번에 여러 개씩 메모리에 올려놓고 작업을 한다. 이것을 사용하면 매번 sequence 번호를 생성하는 것보다 빠르기 때문이다. 이러한 경우에 DB를 중지시키거나 전원이 off 되는 경우에 메모리에 있던 번호가 삭제되기 때문에 이러한 증상이 발생된다. 즉 cache 옵션이 20개씩 시퀀스 번호를 생성하도록 설정되어 있다면 한번에 1부터 20까지 시퀀스 번호를 생성한다. 이 상태에서 DB를 중지하고 ..

[Oracle] 오라클 데이터 타입

* 오라클컬럼의 데이터 타입형 데이터 유형 데이터형 설명 문자형 CHAR(n) 고정 길이 문자. 최대 2000byte (디폴트 값 1byte) 문자형 VARCHAR2(n) 가변 길이 문자. 최대 4000byte (디폴트 값 1byte) 오라클에서 한글은 한글자에 3byte , 영어or특수문자는 1byte 차지한다 숫자형 NUMBER[ (p, [s])] p (1~38 디폴트값은 38)와 s (-84~127 디폴트값은 0) 십진수 기준 날짜형 DATE BC 4712년 1월 1일 부터 9999년 12월 31일까지 년,월,일,시,분,초까지 입력가능 1 2 select vsize('가나다') as byteSize from dual Colored by Color Scripter cs CHAR 와 , VARCHAR2..

[Oracle] 오라클 Date 타입 조회

프로젝트를 진행하는중 날짜가 저장된 컬럼에서 현재 시간을 조회해서 오늘 날짜의 데이터만 뽑아오는걸 하는도중 알게된점. 오라클에서 date 타입의 데이터를 where 절에서 비교할때, select * from table where = '21/03/03' 이런식으로 비교하면 뽑혀올줄알았는데 안되더라.. SELECT SYSDATE FROM DUAL; 그래서 위와 같이 선언하면 임시 테이블 DUAL로 현재 시간이 조회가 된다. (근데 여기선 Date 타입으로 뽑혀 오기떄문에.) 오라클에서(중첩쿼리를 사용해서)where 절에서 현재 날짜를 비교하려면 date형타입을 string으로 변환해야한다. 나같은경우는 아래와 같이 처리했다. Date형 타입의 데이터를 String 식으로 변환해서 조건문에서 사용했다 sele..

[Oracle] PK와 FK의 제약조건

테이블 생성시, 제약조건을 걸어 줄수 있는데, 난 게시판을 만들던도중, 댓글 기능을 구현했는데, 게시글이 삭제되도, 댓글이 DB에 남아있는 현상이 있어 FK 제약조건걸어줄때 ON DELETE CASCADE를 걸어서 ,게시글이 삭제될때 댓글이 삭제되게 해줌 12ALTER TABLE tbl_reply ADD CONSTRAINTS fk_reply foreign KEY (bno) REFERENCES tbl_board(bno) ON DELETE CASCADE; --게시물 삭제시 , 댓글같이삭제 Colored by Color Scriptercs