전체보기: 525개의 글
LAG, LEAD (다른 행의 값을 참조)- LAG (컬럼명[,offset][,default]) : 현재 ROW 기준으로 이전 행을 참조- LEAD (컬럼명[,offset][,default]) : 현재 ROW 기준으로 다음 행을 참조아래 예제는 이전 row(S_1), 다음 row(S_2), 다음 두 번째 row(S_3)의 급여를 조회하는 예제이다. 다음 두 번째 row(S_3) 값이 NULL인 경우 0을 출력한다.SELECT deptno, empno, sal , LAG (sal) OVER(ORDER BY deptno, empno) s_1 , LEAD(sal) OVER(ORDER BY deptno, empno) s_2 , LEAD(sal, 2, 0) OVER(ORDER BY deptno, empno) s_..
윈도우 함수란- 분석함수 중에서 윈도우절(WINDOWNING 절)을 사용하는 함수를 윈도우 함수라고 한다.- 윈도우절을 사용하면 PARTITION BY 절에 명시된 그룹을 좀 더 세부적으로 그룹핑 할 수 있다.- 윈도우절은 분석함수중에서 일부(AVG, COUNT, SUM, MAX, MIN)만 사용 할 수 있다.WINDOWNING 절 Syntax윈도우 함수 OVER ( PARTITION BY 절 ORDER BY 절 [ASC|DESC] ROWS | RANGE BETWEEN UNBOUNDED PRECEDING | n PRECEDING | CURRENT ROW AND UNBOUNDED FOLLOWING | n FOLLOWING | CURRENT ROW - ROWS : 물리적인 ROW 단위로 행 집합을 지정한다...
UM, MIN, MAX, AVG, COUNT등의 집계 함수도 분석함수로 사용할 수 있다.SUM (누적합계)아래는 사원의 전체급여 합계(all_sum), 부서별 급여 합계(dept_sum), 부서별로 누적 합계(nujuk_sum)를 조회하는 예이다.SELECT empno, ename, deptno, SUM(sal) OVER () all_sum, SUM(sal) OVER (PARTITION BY deptno) dept_sum, SUM(sal) OVER (PARTITION BY deptno ORDER BY empno) nujuk_sum FROM emp; EMPNO ENAME DEPTNO ALL_SUM DEPT_SUM NUJUK_SUM ------ ------- ---------- ---------- -----..
순위함수- RANK 함수는 순위를 부여하는 함수로 동일순위 처리가 가능하다. (중복 순위 다음 순서 건너뜀 - 1,2,2,4)- DENSE_RANK 함수는 RANK 함수와 같은 역할을 하지만 동일 등수가 순위에 영향이 없다.(중복순위 다음 순위 연속 - 1,2,2,3)- ROW_NUMBER 함수는 특정 순위로 일련번호를 제공하는 함수로 동일순위 처리가 불가능하다. (중복순위 없이 유일값 - 1,2,3,4)- 순위 함수 사용시 ORDER BY절은 필수로 입력해야 한다.순위함수 - RANK아래는 급여가 높은 순서대로 순위를 구하는 예제이다.SELECT deptno, empno, sal , RANK() OVER(ORDER BY sal DESC) rk FROM emp; DEPTNO EMPNO SAL RK----..
분석함수란?- 테이블에 있는 데이터를 특정 용도로 분석하여 결과를 반환하는 함수- 복잡한 계산을 단순하게 처리해주는 함수- 쿼리 결과Set을 대상으로 계산을 수행하는 함수- SELECT 절에서 수행됨FROM, WHERE, GROUP BY 절에서 사용 불가ORDER BY 구문에서는 사용 가능- 오라클 8.1.6 부터 분석함수 지원집계함수 vs 분석함수집계함수집계함수는 여러행 또는 테이블 전체 행으로부터 그룹별로 집계하여 결과를 반환한다.SELECT deptno , SUM(sal) s_sal FROM emp GROUP BY deptno; [그림] 집계함수 실행결과분석함수분석 함수는 집계 결과를 각 행마다 보여준다.SELECT deptno , empno , sal , SUM(sal) OVER(PARTITION..
시노님은 오라클 객체(테이블, 뷰, 시퀀스, 프로시저)에 대한 대체이름(Alias)를 말하며, 실질적으로 그 자체가 객체가 아니라 객체에 대한 직접적인 참조 이다. 시노님을 사용하는 이유① 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.② 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.③ 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.④ 또한 객체를 참조하는 사용자의 오브젝트를 감..
시퀀스란?- 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.- 보통 PRIMARY KEY 값을 생성하기 위해 사용 한다.- 메모리에 Cache되었을 때 시퀀스값의 액세스 효율이 증가 한다.- 시퀀스는 테이블과는 독립적으로 저장되고 생성된다. 시퀀스 생성-- 시퀀스 생성 SyntaxCREATE SEQUENCE sequence_name [START WITH n] [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE | NOCACHE] - START WITH : 시퀀스의 시작 값을 지정한다. n을 1..
뷰란?- 뷰는 하나의 가상 테이블이라 생각 하면 된다.- 뷰는 실제 데이터가 저장 되는 것은 아니지만 뷰를 통해 데이터를 관리 할수 있다.- 뷰는 복잡한 Query를 통해 얻을 수 있는 결과를 간단한 Query로 얻을 수 있게 한다.- 한 개의 뷰로 여러 테이블에 대한 데이터를 검색 할 수 있다.- 특정 평가 기준에 따른 사용자 별로 다른 데이터를 액세스할 수 있도록 한다.뷰의 제한 조건.- 테이블에 NOT NULL로 만든 컬럼들이 뷰에 다 포함이 되 있어야 한다.- ROWID, ROWNUM, NEXTVAL, CURRVAL등과 같은 가상컬럼에 대한 참조를 포함하고 있는 뷰에는 어떤 데이터도 INSERT 할 수 없다- WITH READ ONLY 옵션을 설정한 뷰도 데이터를 갱신 할 수 없다.- WITH C..
인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조이다.- 자동 인덱스 : 프라이머리 키 또는 UINQUE 제한 규칙에 의해 자동적으로 생성되는 인덱스.- 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스인덱스를 생성하는 것이 좋은 컬럼① WHERE절이나 join조건 안에서 자주 사용되는 컬럼② null 값이 많이 포함되어 있는 컬럼③ WHERE절이나 join조건에서 자주 사용되는 두 개이상의 컬럼들다음과 같은 경우에는 인덱스 생성이 불필요 하다.① 테이블이 작을 때② 테이블이 자주 갱신될 때오라클 인덱스는 B-tree(binary search tree)에 대한 원리를 기반으로 하고 ..
데이터 사전의 괄호 명칭(dict, obj, tabs, cols..등)은 데이터사전의 시노님이다. 시노님을 이용하여 조회 할 수도 있다.데이터 사전 뷰DICTIONARY (DICT)- 권한이 있는 데이터사전에 대한 데이터사전명과 설명 정보를 제공한다.-- USER_INDEX로 시작하는 데이터사전을 조회하는 예이다. SELECT * FROM DICT WHERE TABLE_NAME LIKE 'USER_INDEX%'; DICT_COLUMNS- 데이터사전의 컬럼에대한 정보를 조회 할 수 있다.-- USER_INDEXES 데이터사전의 컬럼 정보를 조회하는 예이다 SELECT * FROM DICT_COLUMNS WHERE TABLE_NAME ='USER_INDEXES'; 자주 사용하는 데이터 사전USER_OBJEC..