전체 글

전체 글

    [ORACLE]실행계획

    [ORACLE]실행계획

    실행계획 오라클서버가 항상최적의 실행계획을 선택하지 않을 수도 있다 (응답성 중요 : OLTP - Online Transection processing) 전체 쿼리 시간 중요 (은행이자) : OLAP - Online Analytical processing ⇒ 실행계획을 세우는 시간이 30분이상 걸리기도함 항상 실행계획을 세우지 않음 만약 동일한 SQL이 이미 실행된적이 있으면 해당 SQL의 실행계획을 새롭게 세우지 않고 Shared pool(메모리)에 존재하는 실행계획을 재사용 동일한 SQL : 문자가 완벽하게 동일한 sql / SQL의 실행결과가 같다고해서 동일한 SQL이 아님(대소문자, 공백도 가림) 바인드 변수를 쓰는 이유?이기도 함 system에서 실행했던 SQL 조회 -- system SELEC..

    [ORACLE]PL/SQL

    PL/SQL 💡 Procedural Language / SQL 집합적 성향이 강한 SQL에 일반 프로그래밍 언어 요소를 추가 기본 구조 선언부(Declare) 변수, 상수 선언 생략가능 실행부(Begin) 제어문, 반복문 등 로직 실행 예외처리부(Exception) 실행도중 에러 발생을 catch, 후속조치 생략가능 연산자 := 대입연산자 ** 제곱연산자 변수 변수 일반타입 var VarTYPE( ); 변수 참조 타입 💡 변수 타입을 특정 테이블의 컬럼을 지칭할 수 있다 유지보수 용이 table.column%TYPE ; DECLARE deptno dept.deptno%TYPE; dname dept.dname%TYPE; ⭕복합변수 ROWTYPE 💡 특정 테이블의 행의 모든 컬럼을 담을 수 있는 행 참조변수..

    [ORACLE] Window 함수, 분석함수

    [ORACLE] Window 함수, 분석함수

    6. 분석함수(윈도우함수) 💡 윈도우 함수를 사용하면 행간 연산이 가능해짐 ⇒ 일반적으로 풀리지 않는 쿼리를 간단하게 만들수 있다. ⭐ 모든 DBMS가 윈도우 함수를 지원하진 않음 ‼️ SELECT window_function(arg) OVER ([PARTITION BY columns] [ORDER BY columns] [WINDOWING]) PARTITION BY 컬럼코드 (GROUP BY) : 행들을 묶을 그룹 ORDER BY 컬럼코드 [DESC | ASC] : 묶여진 행들간의 순서 (WINDOWING) : 파티션안에서 특정 행들에 대해서만 연산을 하고 싶을때 범위 지정 순위 관련 함수 RANK() 💡 동일값에 대해서 동일순위 부여 →1등 2명 그 다음 3 DENSE_RANK() 💡 동일값에 대해서 ..

    [ORACLE]계층쿼리

    [ORACLE]계층쿼리

    5. 계층쿼리 CONNECT BY LEVEL 💡 행을 열로 바꾸는 쿼리 CONNECT BY LEVEL

    [ORACLE]Subquery Advanced

    4. Subquery Advanced UPDATE 💡 update 절에 Subquery를 이용해서 업데이트 가능하다 UPDATE emp_test SET dname = (SELECT dname FROM dept WHERE dept.deptno = emp_test.deptno); UPDATE dept_test SET empcnt = (SELECT count(*) FROM emp WHERE deptno = dept_test.deptno); DELETE 💡 DELETE 절에 Subquery를 이용해서 삭제 가능하다 DELETE FROM dept_test WHERE deptno NOT IN(SELECT deptno FROM emp GROUP BY deptno); DELETE FROM dept_test WHERE ..

    [ORACLE]Group function

    [ORACLE]Group function

    3. Group function ROLLUP , GROUPING SETS, CUBE ROLLUP 그룹별, 전체 행을 합하는 쿼리(비효율) --비효율적 SELECT deptno, SUM(sal) FROM emp GROUP BY deptno UNION SELECT null deptno, SUM(sal) FROM emp; --- emp 테이블 한번만쓰고 출력하기 SELECT DECODE(rn, 1, deptno, 2, null) deptno, SUM(sum_sal) FROM (SELECT deptno, SUM(sal) sum_sal FROM emp GROUP BY deptno) a, (SELECT ROWNUM rn FROM dept WHERE ROWNUM

    [ORACLE]Merge⭐

    💡 사용자로부터 받은 값을 가지고 데이터 유무에 따라 저장 or 수정 테이블의 데이터를 이용하여 다른 테이블의 데이터를 저장 or 수정 MERGE INTO table_name alias USING (table | view | sub_query) alias ON ( 테이블간 조건 ) WHEN MATCHED THEN UPDATE SET col = value [, col = value ...] WHEN NOT MATCHED THEN INSERT (col [, col ... ] ) VALUES ( value [ , value ...]) ; -- 테이블의 데이터 기준 MERGE INTO emp_test a USING emp b ON (a.empno = b.empno) WHEN MATCHED THEN UPDATE ..

    [ORACLE]Multiple Insert

    💡 한번에 여러 테이블에 데이터를 입력 INSERT [ALL] [conditional_insert_clause] [INSERT INTO ...] SUBQUERY conditional_insert_clause [ALL | FIRST] [WHEN condition THEN insert_into_clasue VALUE clause] [ELSE] [insert_into_clasue] 많이 쓰지 않는다 실 사용 예 데이터 백업 데이터의 수평분할 ex ) 년도별로 주문테이블 관리 ( 2020, 2021 ) ⇒ 오라클의 PARTITION 을 통해 더 효과적으로 관리 가능(정식 버전) 하나의 테이블 안에 데이터 값에 따라 저장하는 물리공간이 별도로 나눠져있음 개발자 입장에서 데이터를 입력하면 데이터 값에 따라 물리적인..

    [ORACLE]트랜잭션 (Transaction)

    [ORACLE]트랜잭션 (Transaction)

    트랜잭션(TRANSACTION) 💡 여러 과정을 하나의 단위로 묶는 행위 논리적인 일의 단위 첫번째 DML을 실행함과동시에 트랜잭션 시작 ex) 게시글입력시 ( 제목, 내용 ,복수개의 첨부파일) TABLE : 게시글 테이블 / 첨부파일 테이블 DML : 게시글입력 DML : 게시글 첨부파일 입력 만약 1번실행후에 2번이 에러가나면? DDL / DCL → 자동으로 commit(묵시적 commit /rollback 불가) COMMIT 💡 트랜잭션 종료, 데이터를 확정 COMMIT; ROLLBACK 💡 트랜젝션을 실행한 DML을 취소하고 트랜잭션 종료 ROLLBACK; 읽기 일관성 (ISOLATE LEVEL) 💡 트랜잭션의 실행결과가 다른 트랜잭션에 어떻게 영향을 미치는지 정의 ORACLE : LV 0 ~ 3..

    [ORACLE]DCL(Data Control Language)

    [ORACLE]DCL(Data Control Language)

    DCL(Data Control Language) 💡 권한을 부여하고 회수하는 언어 권한 시스템 권한, 객체 권한 스키마 객체들의 집합(table, view , index..) 오라클에서는 사용자 시스템 권한 💡 시스템 관리, 생성 GRANT OPTION (시스템 권한) GRANT PRIVILEGE TO user | role [WITH ADMIN OPTION]; [WITH ADMIN OPTION] 권한을 부여받은 사용자가 다른 사용자(ROLE)에게 권한 부여가능 CONNECT 💡 오라클에 접속하기 위해 필요한 권한 RESOURCE 💡 객체를 생성하기 위해 필요한 권한 GRANT CONNECT, RESOURCE TO jun; REVOKE RESOURCE FROM jun; 객체 권한 💡 객체 관리(생성, 수정..