데이터베이스 (17) 썸네일형 리스트형 [데이터베이스] ROLLUP() SELECT DEPTNO , SUM(SAL) FROM EMP e GROUP BY DEPTNO; GROUP BY로 그룹을 지어 그룹마다 집계함수를 적용 시킬 수 있다. 위의 상황에서 그룹 별 SAL 뿐만 아니라 전체 SAL을 구하고 싶다면 사용하는 것이 ROLLUP()이다. ROLLUP 사용법 SELECT DECODE(DEPTNO, NULL, '전체합계', DEPTNO) , SUM(SAL) FROM EMP GROUP BY ROLLUP(DEPTNO) ; 위와 같이 사용하면 DEPTNO 별로 구룹을 지은 다음 그룹별로 SUM() 집계함수를 적용 시킨다. 모든 그룹에 적용 시켰다면 마지막에 DEPTNO는 NULL로 전체 집게를 구한다. 그렇다면 ROLLUP() 에 인자를 2개를 주면 어떻게 될까? SELECT .. [데이터베이스] 인덱스 개념 보통 인덱스를 설명할 때 자주 드는 예시가 영어사전의 색인이다. 영어사전에서 단어를 찾을 경우 찾고자 하는 단어를 찾을 때까지 영어사전을 처음부터 뒤지는 것이 아니라 banana 라고 한다면 b로 시작하는 단어부터 찾는다. sql을 공부하다 보면 인덱스를 사용하면 조회의 성능이 향샹된다는 말을 자주 들을 것이다. 그렇다면 인덱스를 사용하면 왜 조회 성능이 향상되는 것일까? 인덱스는 컬럼을 복사한 뒤 오름차순이나 내림차순으로 정렬해 별도의 저장공간에 저장해둔다. 이렇게 하면 컬럼이 정렬되어 있기 때문에 이진 탐색을 할 수 있고 그러면 FULL SCAN을 하는 것보다 조회 시 성능이 향상되게 된다. 하지만 인덱스는 별도의 저장공간을 추가로 사용하며 인덱스를 생성해둔 테이블의 내용이 바뀌면 인덱스도 동일하게 .. [데이터베이스] 서브쿼리 종류 서브쿼리는 쿼리 안에 쿼리가 있는 형태이다. SELECT ROWNUM, P.* FROM ( SELECT * FROM PLAYER WHERE HEIGHT IS NOT NULL ORDER BY PLAYER.HEIGHT DESC ) P WHERE ROWNUM [데이터베이스] 오라클 RONUM 오라클에선 ROWNUM 으로 행에 번호를 매길 수 있다. SELECT ROWNUM, PLAYER.* FROM PLAYER WHERE ROWNUM < 11; 이런 식으로 출력하면 테이블에 있는 데이터에 위에서 부터 번호를 매겨 10 번째 행까지 출력이 된다. 참고로 정렬된 값들은 아니다. (당연히 정렬을 시키지 않았으니깐) 이렇게 테이블에서 행 단위로 출력을 할 수 있는데 정렬을 하고 출력하고 싶은 경우가 있을 수 도 있다. 하지만, SELECT ROWNUM, PLAYER.* FROM PLAYER WHERE ROWNUM 이전 1 2 3 4 5 다음 목록 더보기