목록콤퓨타 왕기초/SQLD/JDBC/Oracle DB (42)
파게로그
SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT'; 현재 접속한 session의 날짜 형식을 확인할 수 있다. SELECT * FROM NLS_SESSION_PARAMETERS; NLS는 National Language Support의 약자이며, NLS_SESSION_PARAMETERS에는 언어 지원과 관련된 다양한 파라미터들이 존재한다. ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' 이름에서 알 수 있듯이 파라미터는 세션을 단위로 유효하며 로그아웃 후 재접속 시 NLS_DATE_FORMAT은 기본값인 RR/MM/DD로 복구된다. YYYY 연도 4자리 HH24 시간(0~24) YY, RR 연..
숫자 데이터 검색 SELECT ename, sal, deptno FROM emp WHERE sal > 2000; 특정 조건에 부합되는 데이터만을 조회할 수 있다. SELECT ename, sal, deptno FROM emp WHERE sal BETWEEN 1500 AND 3000; SELECT ename, sal, deptno FROM emp WHERE sal >= 1500 AND sal
Oracle Database 18c docs.oracle.com/en/database/oracle/oracle-database/18/index.html Oracle Database 18c SQL docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/Introduction-to-Oracle-SQL.html#GUID-049B7AE8-11E1-4110-B3E4-D117907D77AC Oracle Dev Gym devgym.oracle.com/pls/apex/f?p=10001:200:3380860704584:::RP:: 아래와 같은 쿼리를 통해 테이블을 생성하고, 이를 계속해서 사용할 것이다. ALTER SESSION SET NLS_DATE_FORMAT = ..
optimizer의 실행 방법 SQL 개발자가 SQL을 실행하면, parsing을 통해 SQL의 문법 검사 및 구문 분석을 수행 optimizer가 규칙 기반 혹은 비용 기반으로 SQL execution plan 수립 optimizer는 기본적으로 통계 정보를 활용해서 최적의 실행 계획을 수립하는 비용 기반 optimizer를 사용 최종적으로 SQL을 실행하고 실행이 완료되면 데이터를 인출(fetch) optimizer engine query transformer: SQL문을 효율적으로 실행하기 위해서 optimizer가 변환함. SQL이 변환되어도 그 결과는 동 estimator: 통계 정보를 사용해서 SQL 실행 비용을 계산. 총 비용은 최적의 실행 계획을 수립하기 위함임 plan generator:..
optimizer SQL 개발자가 SQL을 실행할 때, optimizer는 실행 계획(execution plan)을 수립하고 SQL을 실행함 DBMS의 소프트웨어 대개 프로그래밍 언어가 절차형 언어로서 데이터 액세스 방법을 개발자가 직접 작성하는 반면, SQL은 선언형 언어로서 데이터 액세스 방법은 작성되지 않고 optimizer가 결정함 optimizer의 특징 data dictionary에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용 산정 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 선택 optimizer가 실행 계획을 비효율적으로 수립하면, SQL 개발자는 SQL을 개선해야 함 optimizer에게 HINT를 통해 실행 계획 변경을 요청할 수 있음 optim..
partition 기능 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장 데이터가 물리적으로 분리된 데이터 파일에 저장되면 CRUD 성능이 향상됨 파티션 별로 백업, 복구, 파티션 전용 인덱스 생성 등 독립적으로 관리될 수 있음. Oracle 데이터베이스의 논리적 관리 단위인 table space 간의 이동이 가능 partition의 종류 range partition - 테이블의 칼럼 중 값의 범위를 기준으로 하여 여러 개의 파티션으로 데이터를 나누어 저장하는 것 list partition - 테이블의 특정 칼럼의 값을 기준으로 하여 여러 개의 파티션으로 데이터를 나누어 저장하는 것 hash partition - DBMS가 내부적으로 해시 함수를 사용하여 여러 개의 파티션으로 데이터를 나누어 저장..
window function SELECT WINDOW_FUNCTION(ARGUMENTS) OVER ( -- GROUP BY 같은 역할. 전체 집합을 기준에 의해 소그룹으로 나눔 -- ORDER BY 역할. 어떤 항목에 대해서 정렬 -- WHERE 역할. 행 기준의 범위를 정함. ROWS: 물리적 결과의 행 수, RANGE: 논리적인 값에 의한 범위 ) FROM 테이블명; window function의 구조 SELECT empno, ename, sal, SUM(sal) OVER ( ORDER BY sal ROWS BETWEEN UNBOUNDED PRECDING AND CURRENT ROW ) totsal FROM emp; -- 행 별로 누적 합계를 구함 PARTITION BY절 - GROUP BY 같은 역..
ROLLUP SELECT DECODE(deptno, NULL, '전체합계', deptno), SUM(sal) FROM emp GROUP BY ROLLUP(deptno); SELECT deptno, job, SUM(sal) FROM emp GROUP BY ROLLUP(deptno, job); -- 부서별 합계 - 직업별 합계 - 전체합계. 순서에 따라서 결과가 달라짐 GROUP BY의 칼럼에 대해서 subtotal을 만듦 GROUP BY구에 칼럼이 2개 이상 오면, 순서에 따라서 결과가 달라짐 GROUPING SELECT deptno, GROUPING(deptno), job, GROUPING(job), SUM(sal) FROM emp GROUP BY ROLLUP(deptno, job); SELECT dep..