본문 바로가기

오라클

(7)
ROWNUM vs ROW_NUMBER() — 차이점 및 상세 비교 정리 1. 개념 비교: 두 함수의 근본적인 차이 항목 ROWNUM ROW_NUMBER() 순번 부여 시점SELECT 이후, ORDER BY 이전ORDER BY 이후에 윈도우 함수로 번호 부여정렬 반영 여부반영되지 않음원하는 정렬 기준 반영 가능고유성보장되지 않음고유하게 1부터 순번 부여페이징 용이성서브쿼리 필요직관적이고 쉬움사용 가능 DBOracle 한정SQL 표준을 지원하는 대부분의 DB 2. ROWNUM: 정렬 전 순번 부여의 한계잘못된 ROWNUM 사용 예SELECT employee_id, name, salaryFROM employeesWHERE ROWNUM 문제점: ROWNUM은 정렬 이전에 순번이 부여되므로, 원하는 정렬 기준이 반영되지 않은 채 임의의 3명이 추출됨 잘못된 결과 예시 (ROWNU..
SQL에서 IN, NOT IN vs EXISTS, NOT EXISTS 차이 — 그리고 NULL에 대한 함정 SQL에서 서브쿼리를 사용할 때 NOT IN과 NOT EXISTS는 자주 혼용되지만, 두 연산자는 내부적으로 전혀 다른 방식으로 작동한다. 특히 서브쿼리 결과에 NULL이 포함될 경우, 이 차이는 실질적인 결과의 차이로 이어지며, 예상치 못한 버그를 유발할 수 있다.본 문서에서는 NOT IN과 NOT EXISTS의 개념적 차이뿐 아니라 IN, EXISTS와의 비교, 그리고 NULL이 포함된 경우의 동작 방식까지 예제를 통해 알아보자.1. IN vs EXISTS, NOT IN vs NOT EXISTSININ은 서브쿼리 결과 또는 값 리스트에 포함되는지 여부를 비교한다. 리스트형 비교로 이해할 수 있다.SELECT * FROM employees WHERE department_id IN ( SELECT ..
오라클 SQL 최적화를 위한 Oracle 인덱스 힌트(Index Hint) 사용법과 예제 1. Oracle 힌트(Hint)란?Oracle 힌트는 SQL 문에 대한 실행 계획을 옵티마이저에게 직접 지시하는 기능입니다. 이를 통해 특정 인덱스를 강제로 사용하게 하거나, 조인 방식 등을 지정할 수 있습니다.힌트는 /*+ HINT_NAME */ 형식으로 작성되며, 일반적으로 SELECT, INSERT, UPDATE, DELETE 문과 함께 사용됩니다.2. 인덱스 관련 Oracle 힌트 종류Oracle에서는 특정 인덱스를 사용하도록 유도하는 다양한 힌트를 제공합니다. 아래는 대표적인 힌트 목록입니다. 2.1 INDEX 힌트특정 인덱스를 사용하도록 강제하는 힌트입니다.사용법:SELECT /*+ INDEX(emp emp_idx) */ * FROM emp WHERE deptno = 10;설명:emp 테이블..
ORACLE ORA-01652 오류: "임시 세그먼트를 확장할 수 없습니다" 해결 방법 1. ORA-01652 오류 개요ORA-01652: unable to extend temp segment by X in tablespace TEMP이 오류는 Oracle 데이터베이스에서 임시 세그먼트(TEMP Segment)를 확장할 수 없을 때 발생한다. 주로 대용량 정렬(ORDER BY, GROUP BY), 해시 조인(HASH JOIN), DISTINCT 연산 등을 수행할 때 TEMP 테이블스페이스의 공간이 부족하면 나타난다.2. ORA-01652 오류 원인1) TEMP 테이블스페이스 크기 부족쿼리 실행 시 필요한 TEMP 공간보다 TEMP 테이블스페이스의 가용 공간이 적은 경우 발생.해결 방법: TEMP 테이블스페이스 크기를 늘리거나 자동 확장을 활성화해야 한다.2) 자동 확장(AUTOEXTEND)..
오라클 ROW_NUMBER() 함수와 COUNT() OVER 함수 차이 오라클을 다루다 보면 데이터의 순위를 매기거나 특정 그룹 내에서 개수를 세야 할 때가 많습니다. 이때 ROW_NUMBER() 함수와 COUNT() OVER 함수가 유용합니다. 오늘은 이 두 함수를 설명하고 어떻게 활용할 수 있는지 예제와 함께 알아보겠습니다.1. ROW_NUMBER() 함수란?ROW_NUMBER() 함수는 정렬된 결과 집합에서 각 행에 고유한 **순번(번호)**을 부여하는 윈도우 함수(Window Function)입니다. 단순히 ROWNUM을 사용하는 것과 달리, 원하는 기준에 따라 순위를 지정할 수 있다는 장점이 있습니다.기본 문법SELECT 컬럼명, ROW_NUMBER() OVER (PARTITION BY 그룹컬럼 ORDER BY 정렬컬럼) AS 순번FROM 테이블명; 주요 개념OVE..
ORACLE 로또 번호 추출하기 - 로또 SQL - 로또 쿼리 구성   SELECT LEVELFROM DUALCONNECT BY LEVEL  일단 45까지의 계층을 나눈다.1~45 까지의 행이 생길텐데 얘를 한 그룹으로 만들어 주기 위해 1~45 까지 1 그룹, 46~90 까지 2 그룹.. 이런식으로 나누기 위해 LEVEL 을 45로 나누고 CEIL (올림함수) 를 사용하여 그룹을 나눈다.  SELECT CEIL(LEVEL / 45)FROM DUALCONNECT BY LEVEL  그럼 1~45번 까지 1로 묶였고, 46~90 까지는 2로 세팅한다.  이제 그룹별 랜덤 자연수 (1~45) 를 지정해야하니 MOD(LEVEL - 1, 45) + 1 로 수를 나열한다. 그룹별 그리고 랜덤함수를 사용하여 어센딩 해준다. SELECT CEIL(LEVEL / 45..
스프링으로 웹페이지 만들기 - 3. DB연동 1. ORACLE DB설치 오늘은 오라클 DB연동 및 SQL 디벨로퍼 세팅 등 간단하게 DB 연동 작업을 할 예정이다. 먼저 아래 URL에서 오라클 19c 버전 부터 받도록 하자. https://www.oracle.com/database/technologies/oracle-database-software-downloads.html 2. SQL Developer 설치 설치 완료 후 SQL Developer 를 다운 받는다. https://www.oracle.com/tools/downloads/sqldev-downloads.html 이렇게 설치가 완료된 후 2가지 파일을 수정 해줘야한다. C\app\OOOO\ 해당 경로에서 파일을 검색한다. 3. .ora 파일 수정 - tnsnames.ora XE = (DE..

반응형