본문 바로가기

DB/Oracle12

[Oracle] 조회 순번 매기기 / ROWNUM, ROW_NUMBER() ++ 페이징을 구현할 때, ORACLE을 사용하면 ROWNUM을 사용한다. 조회 순번을 매기는 방법에는 두 가지가 있다. 1. ROWNUM 2. ROW_NUMBER() 1. ROWNUM - 조회된 순서대로 순번을 매긴다. - 또한, 쿼리로 반환되는 ROW의 갯수를 제한할 때도 사용 가능하다. (WHERE 절의 사용으로) 형식) SELECT ROWNUM, 컬럼명 FROM 테이블명 *주의할 점 1) 만약, ROWNUM을 사용할때 동시에 ORDER BY를 사용하려고 한다면, 주의해야한다. ORDER BY를 ROWNUM과 같은 위치에 사용한다면 ROWNUM이 적용된 다음에 정렬을 하기 때문에 순번이 뒤섞여버린다. 따라서 ORDER BY를 사용하고자 한다면 꼭 서브쿼리를 사용해서 정렬된 서브쿼리 결과에 ROWNU.. 2023. 12. 11.
[Oracle] 임시테이블 만들기 / WITH절 WITH절 WITH 절은 RDBMS계의 3대장인 Oracle, MySQL, MS-SQL 에서 기본적으로 지원된다. 오라클에서는 오라클9 이후 버전부터 사용이 가능하다. WITH절을 이용하여 미리 이름을 부여해서 Query Block을 만든다. 자주 실행되는 경우 한 번만 Pasing 되고 Plan 계획이 수립되므로 쿼리의 성능 향상에 도움이 된다. WITH절은 이름이 부여된 서브쿼리라고 생각하면 된다. 임시테이블을 만든다는 관점에서 보자면 VIEW와 쓰임새는 비슷하지만 VIEW는 한번 만들면 DROP 할 때까지 없어지지않지만, WITH절은 한번 실행할 쿼리문내에 정의되어 있을 경우 그 쿼리문 안에서만 실행된다는 차이점이 있다. WITH절을 완전히 숙지하려면 UNION ALL, DECODE/CASE, WI.. 2023. 11. 6.
[Oracle] SELECT 결과 상위 N개만 검색 / FETCH FIRST N ROWS ONLY SELECT 구문을 사용한 결과 중 상위 몇개의 데이터만 검색하고 싶을 때(제한된 수의 행을 가져올때) FECTCH FIRST N ROWS ONLY 구문을 사용한다. (N에는 검색하고 싶은 행의 개수가 들어간다.) EX) [프로그래머스] 59044 - 오랜기간 보호한 동물(1) https://school.programmers.co.kr/learn/courses/30/lessons/59044 문제) 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 작성코드 SELECT I.NAME, I.DATETIME FROM ANIMAL_INS I LEFT OUTER JOIN ANIMAL_OUT.. 2023. 11. 5.
[Oracle] 데이터 중복 제거 / DISTINCT, GROUP BY 오라클에서 데이터를 조회할 때 같은 값을 가진 데이터의 중복을 제거하기 위해서는 2가지 방법을 사용할 수 있다. 1. DISTINCT 사용 2. GROUP BY 절 사용 1. DISTINCT 를 사용한 중복 제거 오라클 쿼리문에서 데이터 중복을 제거할 때는 DISTINCT 키워드를 사용할 것을 권장한다고 한다. DISTINCT 키워드를 사용하면 SELECT 절에 DISTINCT 키워드만 명시하면 되므로 쿼리문이 간결해진다. 하지만 이 경우에는 temp tablespace(임시 테이블 스페이스)에 임시로 저장하고 작업하는 방식이라 시스템에 부하가 발생할 수도 있다. 형식) SELECT DISTINCT 중복 제거해 나타낼 컬럼명 FROM 테이블명 WHERE 조건 예시) 또한, 중복을 제거하여 카운트를 할 경.. 2023. 10. 21.