728x90

Oracle 6

[ORACLE] LIMIT

MySQL을 사용해봤다면, Limit이라는 기능이 있는 것을 알고 있을 것이다!🤓 Limit은 가져오는 데이터 수에 원하는 만큼 제한을 둘 수 있는 기능인데, Oracle에서는 Limit과 같은 기능이 따로 없어 ROWNUM을 사용하여 MySQL의 Limit 처럼 사용이 가능하다. 아래와 같이 사용할 수 있다. ▶ 데이터를 5개만 가져오는 경우 -- MySQL SELECT * FROM DEMO_TABLE LIMIT 5; -- ORACLE SELECT * FROM DEMO_TABLE WHERE ROWNUM

💾DB 2023.11.13

[ORACLE] MERGE INTO

쿼리를 작성하다보면 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있다. 이런 경우 MERGE 문을 사용하여 간단하게 쿼리를 작성할 수 있다. MERGE 문은 ORACLE 9i 부터 지원하고, MERGE문에 DELETE 절은 10g부터 지원한다. 단일테이블 단일테이블에 MERGE문을 사용하기 위해서는 USING 절에 테이블 대신 DUAL을 사용하면 된다. MERGE INTO EMP USING DUAL ON (A.EMPNO = 7788) WHEN MATCHED THEN UPDATE SET A.DEPTNO = 20 WHEN NOT MATCHED THEN INSERT (A.EMPNO, A.ENAME, A.DEPTNO) VALUES (7788, 'SCOTT', 20); JO..

💾DB 2023.07.13

[ORACLE] GROUP BY ROLLUP

GROUP BY 구문의 결과에 소계, 합계 정보를 같이 보고 싶을 때 어떻게 할까? 이번에 알아 볼 ROLLUP 함수를 사용하면 복잡한 과정 없이 간단한 구문만으로 쉽게 구할 수 있다. 실습은 https://livesql.oracle.com/ 에서 진행하였고, SCOTT 계정의 EMP 테이블을 사용하였다. 일반적으로 사용하는 GROUP BY 문으로 DEPTNO, JOB별 급여의 합을 구해봤다. 위의 GROUP BY 절에 ROLLUP을 추가하여 DEPTNO, JOB별 급여 합 뿐 아니라 전체 급여의 합과 부서별 급여의 합도 같이 구할 수 있다. 그러면, 여기서 전체 급여의 합 또는 부서별 급여의 합 중 하나만 보여 줄 수 있나요? 🙋‍♂️ 이게 되네...?🤔 자, 그러면 ROLLUP이 어떤 원리로 위의 예..

💾DB 2023.06.20

[ORACLE] NVL, NVL2, NULLIF, COALESCE

ORACLE의 NULL 관련 다양한 함수들을 알아보자! 🙋‍♂️ NVL NVL함수는 NULL 값을 다른 값으로 바꿀 때 사용 가능하며, 모든 데이터 타입에 적용 가능하다. SELECT DEPT_CODE , NVL(MGR_EMP_NO, 0) AS MGR_EMP_NO FROM DEPT DEPT_CODE MGR_EMP_NO --------- ---------- 110 230606011 120 0 130 220504092 NVL2 NVL2 함수는 NVL 함수와 DECODE 함수의 개념을 합쳤다고 볼 수 있다. VNL2(EXP, EXP1, EXP2) 형식으로 사용 가능하고 EXP의 값이 NULL이 아닌 경우 EXP1 반환하고, NULL인 경우 EXP2 를 반환한다. SELECT DEPT_CODE , NVL2(MG..

💾DB 2023.06.19

[ORACLE] DECODE와 CASE

ORACLE의 DECODE와 CASE에 대해 알아보자 🤓 DECODE와 CASE는 SQL에서 조건에 해당하는 값을 추출할 때 사용한다. DECODE 조건에 따라 데이터를 다른 값이나 컬럼 값으로 추출할 수 있으며, DECODE(VALUE, COND1, THEN1, COND2, THEN2, ...) 형태로 사용할 수 있다. VALUE == COND1 일 경우 THEN1 반환, VALUE == COND2 일 경우 THEN2 반환한다. DECODE 내에 DECODE를 중첩하여 사용 가능하고 일반적으로 아래와 같이 사용된다. SELECT DEPT_CODE , DECODE(DEPT_CODE , 10, 'SALES' , 20, 'ACCOUNTING' , 30, 'HR') AS DEPT_NAME FROM DEPT D..

💾DB 2023.06.19

[ORACLE] INDEX 타지 않는 경우 (feat. INDEX HINT)

시스템을 운영하다 보면 꼭 한번씩 DB상의 처리 속도가 늦어져 장애🤯로 이어질 뻔한 상황이 생기는데, 로직 상의 문제인 경우도 있지만, 내가 생각했던 INDEX를 타지 않거나 옵티마이저(OPTIMIZER)가 실행계획을 변경시켜 버리는 상황이 종종 발생하곤 했었다. 옵티마이저(OPTIMIZER)?? 그게 뭔데? 🙋‍♂️ 옵티마이저(OPTIMIZER)에 대해 간단히 설명하면, 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진이다. 먼저, INDEX를 타지 않는 경우에 대해 알아보고, 옵티마이저에 의존하지 않고 INDEX를 탈 수 있도록 HINT를 주는 방법에 대해 추가적으로 알아보자. INDEX를 타지 않는 경우 1) INDEX가 걸려있는 컬럼 절을 변형한 경우 - ..

💾DB 2022.09.15
728x90