데이터베이스 46

rollup cube

네이버 어딘가에서 무단으로 훔쳐왔음.. -_-; 네이버 검색 창에서 rollup으로 검색 후 선정. 편집이 좀 조잡하지만... 내용은 만점. 죄송하고 감사합니다. ◈ ROLLUP operator - ROLLUP구문은 GROUP BY절과 같이 사용 되며, GROUP BY절에 의해서 그룹 지어진 집합결과에 대해서 좀 더 상세한 정보를 반환하는 기능을 수행합니다. - SELECT절에 ROLLUP을 사용함으로써 보통의 select된 데이터와 그 데이터의 총계를 구할 수 있습니다. ※ 우선 아주 간단한 예제부터 살펴 보겠습니다. (scott유저의 emp테이블을 가지고 테스트 했습니다.) -- Group By를 사용해서 직업별로 급여 합계를 구하는 예제 입니다. SELECT job, SUM(sal) FROM emp..

데이터베이스 2014.10.17

rownum 과 페이징

이번 호의 Ask Tom 컬럼은 지금까지와는 조금 다른 내용을 담고 있습니다. 필자는 오라클 데이터베이스에서 Top-N 쿼리와 페이지네이션(pagination) 쿼리를 구현하는 방법에 대해 자주 질문을 받곤 합니다. 하나의 컬럼을 통해 이러한 질문에 한꺼번에 대답하기 위한 방편으로, 의 내용을 인용하기로 했습니다. 컬럼의 포맷에 맞게 책의 내용이 다소 수정되었음을 참고하시기 바랍니다.Tom Kyte결과 셋의 제한ROWNUM은 오라클 데이터베이스가 제공하는 마술과도 같은 컬럼입니다. 이 때문에 많은 사용자들이 문제를 겪기도 합니다. 하지만 그 원리와 활용 방법을 이해한다면 매우 유용하게 사용할 수 있습니다. 필자는 주로 두 가지 목적으로 ROWNUM을 사용합니다.Top-N 프로세싱: 이 기능은 다른 일부 ..

데이터베이스 2014.10.17

decode 와 case

DECODE와 CASE 함수는 SQL 문장에서 조건에 해당하는 값을 추출하고자 할 때 주로 사용한다DECODE- DECODE 함수는 조건에 따라 데이터를 다른 값이나 컬럼값으로 추출 할 수 있다.- DECODE(VALUE, IF1, THEN1, IF2, THEN2...) 형태로 사용 할 수 있다.- VALUE 값이 IF1일 경우에 THEN1 값을 반환하고, VALUE 값이 IF2일 경우에는 THEN2 값을 반환한다.- DECODE 함수 안에 DECODE함수를 중첩으로 사용 할 수 있다.아래는 DECODE 함수의 일반적인 예제이다.?12345678910111213-- 부서번호가 10이면 ACCOUNTING, 20이면 RESEARCH, 30이면 SALES-- 나머지는 OPERATIONS를 출력하는 예제SEL..

데이터베이스 2014.10.16

인덱스에 대한 설명

oracle rowid는 바로 찾아가서 주소regDate >= 'dd'MM이런식으로 되어있을때, 오라클은 regDate를 문자로 바꿔서 비교해서 이럴경우는 인덱스가 없어서 처음부터 다 찾는다.그래서 우측에 있는 놈들에게 to_date라는 그러한 함수로 바꿔주면 인덱스를 건드리지 않고 굿또한 이러한 함수는 포맷을 지정해줄수도 있어서 훨씬 낫다.인덱스가 잡혀있지 않으면 풀스캔을 하기때문에 어차피 소용이 인덱스라는건, select 로 가면 빠르고 다만 update delete등을 느려질수 있다. 그리고 하드에 조금더 데이터를 쓴다.조건을 들어가는 컬럼은 성능을 위해서 인덱스를 많이 잡음.. 다만 4%정도 이상을 잔뜩 불러오는 결과라면, 풀스캔이 낫다.장단점이 있단다. 앞에 %가 있으면 무조건 인덱스를 사용하지..

데이터베이스 2014.10.16

oracle 조인

select avg(commission_pct) from employees --sum()은 값이 있는 애들만 모두 더한값 / 전체인원수--count(*) 는 null도 카운트한다. 따라서 위랑 아래랑 결과가 다를수 있다.--count(*)는 조심해야한다!! select sum(commission_pct) / count(*) from employees --최고 연봉을 받는 사람은select max(salary) from employees --최소연봉을 받는사람은select min(salary) from employee --각 부서별로 최고연봉은?select department_id, max(salary)from employeesgroup by department_id --그룹 평균 연봉이 5000이상은 부..

데이터베이스 2014.09.11

oracle 조인

--두 테이블을 함께 출력하는데 from절에서 그냥 아싸리 컴마를 이용해서 지정해주면 그냥 다 나오게 된다. 기본이 non-equaljoin이기 때문이다.--equal조인은 테이블을 비교해서 departmentID가 같니 이렇게 따져봐서 한번밖에 출현안함안나온놈의의 반대편에 (+)을 표시한다.없는애를 있게 만든다는 그거null값을 포함하고 있어서 안나오는애들은 어디서 데이터를 출력하는애들에 따라 다름outer join - 그냥 안나오는애 다들 뿅 튀어나오게 하려는데 목적이 있다. 셀프조인도 알아보자select e.employee_id, e.first_name, e.salaryfrom employees e, employees mwhere e.manager_id = m.employee_id(+)

데이터베이스 2014.09.11

oracle 날짜함수

--날짜함수. 기준이 월이다. --오늘의 날짜는?select sysdate from dual --입사일로부터 경과일수는? 일수는 무조건 빼기select first_name, hire_date, sysdate - hire_date from employees -- 일자 잘라버리기select first_name, hire_date, trunc(sysdate - hire_date,2) from employees --몇달 지난지 계산하고 싶으면select first_name, hire_date, trunc(months_between(sysdate, hire_date)/12,2) from employees --추가--오늘부터 10일 후는 며칠select sysdate + 10 from dual --입사 1000일이..

데이터베이스 2014.09.11