일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Spring
- Java
- Vue
- Security
- IntelliJ
- 시큐리티
- JavaScript
- 생성
- 방법
- Git
- jquery
- error
- Eclipse
- oracle
- kotlin
- 자바
- 프로그래머스
- 오라클
- JPA
- GitHub
- 에러
- 코틀린
- 알고리즘
- 쿼리
- 스프링
- aws
- mybatis
- 넥사크로
- 함수
- db
- Today
- Total
목록오라클 (10)
송민준의 개발노트
시작일 : 20201001 가정 종료일 : 20201031 가정 SELECT TO_CHAR(TRUNC(TO_DATE('20201001'), 'DD') + LEVEL - 1, 'YYYYMMDD') DAYS FROM DUAL CONNECT BY LEVEL
옵티마이저란? - 가장 빠르고 효율적인 SQL 실행 계획을 수립하고 SQL을 실행하는 DBMS의 핵심적인 소프트웨어다.. - 실행 계획은 SQL 성능에 핵심적인 역할을 하며 동일한 결과라도 계획에 따라 성능이 다르다. 옵티마이저 종류 1. 규칙 기반 옵티마이저 미리 정해 놓은 규칙(액세스 경로별 우선순위)에 따라 엑세스 경로를 평가하고 실행계획을 선택한다. 2. 비용 기반 옵티마이저 예상되는 비용(쿼리 수행에 필요한 시간)을 기반으로 최적화를 수행한다. 미리 구한 테이블과 인덱스에 대한 통계정보를 기초로 각 오퍼레이션 단계별 예상 비용을 산정하고, 총비용이 가장 낮은 계획을 선택한다.(부적절한 통계정보의 경우 성능 정하) 옵티마이저 특징 - Data Dictionary에 있는 오브젝트 통계, 시스템 통계..
파티션이란? - 기업에서 관리하는 데이터는 정말 많은 양을 다루고 있다. 그러다보면 거대한 데이터를 가지고 있는 테이블이 존재하게 되는데(Big Transaction Table) 이는 트러블슈팅이 발생될 경우 심각한 악영향을 미칠 수 있다. - 이러한 악영향을 예방 및 피해를 줄이고 효율적으로 관리하기 위해 테이블을 작은 단위로 나누는 것을 말한다. 파티션의 기능 정의 - 파티션은 대용량의 테이블을 여러개의 데이터 파일로 분리해 저장하는 것을 말한다. - 테이블의 데이터가 물리적으로 분리되어 데이터 파일에 저장되면 CRUD 수행의 성능이 향상된다. - 파티션은 각각 파티션 별로 독립적으로 관리될 수 있다. (파티션 별 백업, 복구 및 인덱스 생성 등) - 파티션은 Oracle DB의 논리적 단위인 테이블..
비율을 계산해주는 함수는 다음과 같다. 1. CUME_DIST 2. PERCENT_RANK 3. NTILE 4. RATIO_TO_REPORT 1. CUME_DIST - 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대해 누적 백분율을 계산해주며 0과 1사이에 값이 분포해있다. select deptno, ename, sal, cume_dist() over(order by sal desc) as c_s from emp; 위 쿼리를 실행하면 백분율 처럼 나온다. 과거 학창시절 성적 백분율 나오는 그런거... 2. PERCENT_RANK - ANSI/ISO SQL 표준과 Oracle DBMS에서 지원해준다. - 파티션에서 제일 먼저 나온 것을 0, 제일 늦게 나온 것을 1로 하여 값이 아닌 행의 순서별 ..
쿼리를 다루다보면 특정 행에 대해 다뤄야 할 때가 있다. 종류로는 1. FIRST_VALUE 2. LAST_VALUE 3. LAG 4. LEAD 위 4가지가 있다. 1. FIRST_VALUE : 파티션에서 가장 처음에 나오는 값을 구한다.(그룹함수 MIN과 같은 결과를 구할 수 있음) select deptno, sal, first_value(sal) over () as A, first_value(sal) over (partition by DEPTNO) as B, first_value(sal) over (partition by DEPTNO order by sal) as C, first_value(sal) over (partition by DEPTNO order by sal desc rows unbounde..
1. ROLLUP ROLLUP이란 GROUP BY를 한 칼람에 대하여 Subsum을 해준다. ROLLUP은 여러개의 컬럼에도 적용이 가능하다. 그리고 적용한 대상에는 null 값이 들어가는데 아래와 같이 활용이 가능하다. SELECT DECODE(DEPTNO, NULL, 'DEPT_SUM',DEPTNO), SUM FROM EMP GROUP BY ROLLUP(DEPTNO) 위 쿼리는 EMP테이블에 DEPTNO 별 Subsum이 포함이 되는 SUM을 보여준다.(물론 sum 함수를 써야함) 2개 이상을 활용할 경우 SELECT DECODE(DEPTNO, NULL, 'Allsum', DECODE(GRADE, NULL, 'Subsum', DEPTNO)), GRADE, SUM(SAL) FROM EMP GROUP B..
1. DECODE DECODE는 IF문과 같다고 보면된다. 특정 조건이 참일 때 값과 거짓일 때 값을 적용한다. DECODE(CUSTNO, 11031, 'YES', 'NO') 위와 같은 예시에서는 custno의 값이 11031일 경우 YES 를 반환하고 아닐 경우는 NO를 반환한다. 2개도 가능하다. DECODE(CUSTNO, 11031, 'YES', 10001, 'OK', 'NO') 11031일 경우에는 YES, 10001 일 경우에는 OK 그 외에는 NO를 반환한다. 응용 해서 아래와 같이 이중으로도 가능하다. DECODE( DECODE( ~ ) ) 2. CASE CASE문은 IF ELSE와 같은 프로그래밍 언어처럼 사용이 가능하다. 기본적인 구조는 아래와 같다. CASE [ expression ] ..
DB에 대한 포스팅은 기본적으로 oracle을 기준으로 대부분 하니 참고... 기본적으로 내장형 함수는 각 DBMS별로 차이가 있지만 거의 비슷한 방법으로 사용이 가능하다. 종류로는 형변환 함수, 문자열 및 숫자형 함수, 날짜형 함수가 있다. 형변환 함수는 명시적과 암시적 형변환이 있는데 암시적인 것은 DBMS가 알아서 처리해주는 것이고 명시적은 사용자가 직접 선언해주는 것이다. // 형변환 TO_NUMBER(문자열) : 문자열을 숫자로 변환 TO_CHAR(숫자 or 날짜, [FORMAT]) : 숫자 혹은 날짜를 지정된 FORMAT의 문자로 변환한다. TO_DATE(문자열, FORMAT) : 문자열을 지정된 FORMAT의 날짜형으로 변환한다. 형변환에 대한 보다 자세한 포스팅은 아래 글에 해놨다. htt..