본문 바로가기

Java Programming/DB(Oracle, My-Sql)

오라클(Oracle) 트리거(Trigger)란 /* [ 트리거 ] : 개발자가 호출해서 사용하는 것이 아니라, 특정 이벤트와 연동해서 그 이벤트, 조건이 발생시 자동적으로 수행하는 동작을 의미한다. (데이터베이스가 미리 정해 놓은 조건들을 만족하거나, 특정 이벤트가 발생하면 자동적으로 수행되는 동작(PL/SQL 블럭)으로 오라클에서 자동적으로 실행되는 PL/SQL 블럭을 의미) - [ 트리거의 유형 ] // 여기선 dml트리거에 대해서만 알아봄 - insert, update, delete의 결과로 실행되는 "" - ** 트리거는 commit, rollback을 수행할 수 없고, commit,rollback을 수행하는 함수도 사용할 수 없다. - [ 트리거 구문 형식 ] create (or replace) trigger 트리거이름 timming[bef.. 더보기
오라클 sysdate 샘플 쿼리 select sysdate, (sysdate-1/24/60) "1분 전", (sysdate-1/24/30) "2분 전", (sysdate-1/24/12) "5분 전", (sysdate-1/24/6) "10분 전", (sysdate-1/144) "10분 전", (sysdate-30/1440) "30분 전", (sysdate-1/24) "1시간 전", trunc(sysdate-1) "1일 전", trunc(sysdate-7) "7일 전", trunc(sysdate-30) "30일 전", trunc(sysdate+1)-6/24 "6AM 전", trunc(sysdate+1)-2/24 "2AM 전", from dual; 출처 : http://oracle.tistory.com/216 더보기
DB 튜닝 - INDEX 제대로 사용하기 DB에서 INDEX 제대로 사용하기 작성자 : 김문규 최초 작성일 : 2009.5.18 데브피아에서 기가 막히게 좋은 전문가 글을 찾았습니다. 간단하게 정리해 봅니다. 인덱스를 사용하기를 기대하지만 그렇지 않은 기본적이고 대표적인 예입니다. 1. 인덱스 컬럼을 변형하여 비교할 때 BAD WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19980518'; GOOD WHERE HIREDATE = TO_DATE('19980518') BAD WHERE SALARY + 1000 > 100000; GOOD WHERE SALARY > 100000 - 1000; 비교하는 인덱스 컬럼의 형이나 값을 변경하면 발생합니다. 이 경우에는 비교값을 변경해 주어야 인덱스를 사용하게 됩니다. 2. 비교 대상의 .. 더보기
[Oracle]Toad for Oracle_데이터 수정 ex)실무 샘플_오라클 Todo 수정 SELECT * FROM FI_PLAN_RQST_PROC WHERE PLAN_RQST_NO = 30000022 AND PLAN_RQST_SEQ = 2 SELECT ROWID, A.* FROM FI_PLAN_RQST_PROC A WHERE PLAN_RQST_NO = 3000022 AND PLAN_RQST_SEQ = 2; 수정할 컬럼 클릭 컬럼 내용 수정 후 Post edit 확인 내용 수정후 Commit 하면 끝.업데이트로 해도 되지만 ROWID를 이용해서 데이터를 수정할 수 있다. 더보기
[Oracle] sql hint 모음 펌 : http://such.egloos.com/1472596 + ALL_ROWS- /*+ ALL_ROWS */- 통계 데이터의 유무에 상관없이 Cost-Based 방식의 최적화를 한다. Best Throughput(처리량)이 목적. + FIRST_ROWS- /*+ FIRST_ROWS */- Cost-Based Optimization, Best Response Time 목적 + CHOOSE- /*+ CHOOSE */- Table, Cluster, Index 등이 Optimization을 위한 통계 데이터를 가지고 있으며 Cost-Based 방식으로 Optimization을 하고 통계 데이터가 없으면 Rule-Based 방식으로 한다. + RULE- /*+ RULE */- 한 SQL문 block에 대해 r.. 더보기
[Oracle]서브쿼리 조인해서 UPDATE 실무 예제1) //1. 게시판 테이블과 게시물조회자 테이블을 게시판 번호로 조인해서 서브쿼리 사용 //2. 게시판 테이블 조회수가 게시물조회자 테이블의 조회자 카운트와 일치시키는 업데이트 UPDATE FI_BORD A SET A.VIEW_CNT = (SELECT COUNT(1) CNT FROM FI_BORD_VIEW B WHERE A.PSTG_NO = B.PSTG_NO GROUP BY PSTG_NO) WHERE A.VIEW_CNT > 0 더보기
쿼리문(서브쿼리..) --나이대별 출력(0은 소수점을 없애기, 1은 소수점 첫번째까지 나오기), TRUNC->반올림 SELECT "SID", "NAME", TRUNC(AGE/10,0)*10 AGE FROM STUDENT --20대 회원만 출력 SELECT * FROM STUDENT WHERE TRUNC(AGE/10,0)*10 = 20; --회원중에 20대, 40대, 60대 회원만 출력(IN 비교 연산자) SELECT * FROM STUDENT WHERE TRUNC(AGE/10,0)*10 IN(20, 40, 60) --회원중에 20대, 40대, 60대 회원만 출력(OR 비교 연산자) SELECT * FROM STUDENT WHERE TRUNC(AGE/10,0)*10 = 20 OR TRUNC(AGE/10,0)*10 = 40 OR.. 더보기
쿼리문(제약조건..) --학생 테이블 생성 CREATE TABLE STUDENT( "UID" varchar2(50), "PWD" varchar2(50), PHONE varchar2(50), NAME varchar2(15) ); --인서트 INSERT INTO STUDENT("UID", "PWD", PHONE, "NAME") VALUES('HONG', '1234', '010-5555-5555', '홍길동'); COMMIT; --속성 추가할때 ALTER TABLE STUDENT ADD "PWD" VARCHAR2(50); COMMIT; --자료형 수정할때 ALTER TABLE STUDENT modify("PWD" VARCHAR2(30)); --테이블 확인할때 SELECT * FROM USER_TABLES WHERE TABLE_NA.. 더보기