본문 바로가기

Database

(3)
[ oracle ] 대량의 데이터 UPDATE 하기 * 리스트 데이터를 UPDATE 해야할 때 사용 하는 쿼리이다. 1. (선 작업) 수정이 필요한 TABLE의 키 값과 수정해야할 값을 TEMP 테이블에 INSERT 한다. ( 엑셀로 IMPORT)2. 아래 쿼리처럼 SET 구문에서 한 건만 나올수 있도록 JOIN을 사용해야한다. (난 이부분에 JOIN을 사용하지 않아서 쿼리 오류가 발생했었음.)UPDATE SCOTT.PEOPLE ASET = ( SELECT COL_DAT_VAL3 FROM SCOTT.TEMP B WHERE SYS_RGTR_ID='250206002_9633' AND A.ID = B.COL_DAT_VAL1 AND A.NM = B.COL_DAT_..
[ oracle ] where 절에서 (+)와 값을 비교 하는 경우 회사에서는 오라클문법을 사용한다. 그러다 보니 (+)를 자주 만나게 된다. 오늘은 이해가 안되는 구문을 만나서 기록으로 남기려 한다. 아래의 구문을 보자.SELECT* FROMCUSTOMER C, ORDER O WHEREC.IDX_CUST = O.IDX_CUST(+) ANDC.ACTIVE = 'Y' AND O.STATUS(+) = 'P' 추측해보기로는 1. LEFT OUTER JOIN이고 2. ORDER 테이블에 STATUS = 'P' 인 데이터만 조회하고 싶어 하는것 같다. 그런데 왜 (+)를 붙였을까.. 모호하다. 아래 구문과 다른 점이 무엇인지 알아보자.SELECT* FROMCUSTOMER C, ORDER O WHEREC.IDX_CUST = O.IDX_CUST(+) ANDC.ACTIVE = 'Y' ..
[ oracle ] 순위 함수 - ROW_NUMBER(), RANK(), DENSE_RANK() 정렬한 이후 ROWNUM 으로 일련번호를 만들고 싶다.그러나 ORDER BY를 사용하게되면 ROWNUM은 WHERE절에서 생성이 된다.따라서 여기저기 얽히게 된다.따라서, 정렬한 이후 순위를 매기고 싶을 때 아래 세가지 방법을 사용할 수 있다.  1. ROW_NUMBER() - 동일한 값이라도 고유한 순위를 부여한다.   2. RANK() - 동일한 값에 대해서는 동일한 순서를 부여함. 동일한 순위 하나의 건수로 취급하지 않음.   3. DENSE_RANK()- DENSE_RANK 함수는 동일한 순위를 하나의 건수로 취급함   * ROW_NUMBER(), RANK(), DENSE_RANK() 사용시 그룹별로 순위를 매길 수 있다.OVER절 뒤 PARTION BY 사용