oracle 15

오라클 PARTITION BY 데이터 나누기 사용법과 예시

PARTITION BY는 SQL에서 사용되는 구문 중 하나로, OVER 절과 함께 사용하여 데이터를 파티션으로 나눌 때 사용합니다. 일반적으로 데이터베이스에서 데이터를 처리할 때, 데이터를 조작하기 위해 일련의 쿼리를 작성하게 됩니다. 이때 PARTITION BY 구문은 데이터를 분할하여 다른 집계 함수를 적용하는 데 사용됩니다. 예를 들어, PARTITION BY 구문을 사용하여 특정 열에 대해 GROUP BY 구문과 유사한 기능을 수행할 수 있습니다. 이는 데이터를 열의 값에 따라 그룹화하여 특정 그룹 내의 집계 함수를 계산하는 데 사용됩니다. 아래는 PARTITION BY 구문의 간단한 예시입니다. SELECT name, age, salary, AVG(salary) OVER (PARTITION BY..

oracle 2023.03.17

오라클 Group by having 절 사용하기

Oracle에서 HAVING 절은 그룹 함수로 집계된 결과에 대한 조건을 지정하는 데 사용됩니다. 이를 통해 그룹 함수로 집계된 결과 중에서 특정 조건을 만족하는 그룹만을 조회할 수 있습니다. 다음은 "orders" 테이블에서 "order_date" 컬럼 값이 2022년인 주문 정보를 지역별로 그룹화하여 각 지역별 주문 총액이 10000 이상인 경우에 대한 쿼리입니다. SELECT region, SUM(total_amount) AS total_sales FROM orders WHERE order_date BETWEEN '2022-01-01' AND '2022-12-31' GROUP BY region HAVING SUM(total_amount) >= 10000; 위의 쿼리에서 "WHERE" 절은 "orde..

oracle 2023.03.07

오라클 랜덤 번호 생성하기 DBMS_RANDOM

Oracle에서 랜덤 번호를 생성하는 방법은 다양한데, 가장 일반적인 방법은 "DBMS_RANDOM" 패키지를 사용하는 것입니다. 예를 들어, 1부터 100까지의 랜덤한 숫자를 생성하려면 다음과 같이 "DBMS_RANDOM.VALUE" 함수를 사용합니다. SELECT TRUNC(DBMS_RANDOM.VALUE(1, 100)) AS random_number FROM DUAL; 위의 예시에서 "DBMS_RANDOM.VALUE(1, 100)" 함수는 1 이상 100 미만의 랜덤 숫자를 생성합니다. 이렇게 생성된 숫자를 "TRUNC" 함수를 사용하여 정수 형태로 변환합니다. 또한, 여러 개의 랜덤 번호를 한 번에 생성하려면 다음과 같이 "CONNECT BY LEVEL" 구문과 함께 사용합니다. SELECT TR..

oracle 2023.03.04

오라클 case문 where 절에 활용하기

Oracle에서 CASE 문을 사용하는 방법은 다음과 같습니다. 예를 들어, "employees" 테이블에서 "salary" 컬럼이 5000 이상인 직원의 정보를 가져오되, "commission_pct" 컬럼 값이 NULL이면 "No Commission" 이라는 문자열을 출력하고, 그렇지 않으면 해당 컬럼 값을 출력하는 쿼리를 작성해보겠습니다. SELECT employee_id, first_name, last_name, CASE WHEN commission_pct IS NULL THEN 'No Commission' ELSE commission_pct END AS commission FROM employees WHERE salary >= 5000; 위의 쿼리에서 "CASE" 문은 "commission_pc..

oracle 2023.02.24

Oracle ROWID 사용하기

Oracle ROWID는 Oracle 데이터베이스 테이블의 각 행에 대한 고유 식별자입니다. 16진수 문자열로 저장되며 테이블에서 특정 행을 빠르게 찾는 데 사용됩니다. ROWID는 기본 키 또는 고유 인덱스의 열 조합을 사용하는 것보다 테이블의 특정 행에 액세스하는 더 빠른 방법입니다. 그러나 테이블을 내보내고 가져오거나 행을 업데이트하면 ROWID가 변경될 수 있습니다. UPDATE employees SET salary = salary * 1.1 WHERE ROWID = 'AAACfZAAEAAAAASAAB'; DELETE FROM employees WHERE ROWID = 'AAACfZAAEAAAAASAAB ROWID는 시간이 지남에 따라 변경될 수 있으므로 기본 키 또는 고유 인덱스를 사용하여 프로..

oracle 2023.02.17

ORACLE 정렬함수의 종류와 활용 예시

오라클 정렬 함수는 데이터를 정렬할 때 사용합니다. 아래는 몇 가지 예시를 들어 설명해 드리겠습니다. RANK 데이터를 정렬하여 각 행에 대한 순위를 구합니다. 결과 집합의 행에 대한 고유 순위를 계산합니다. 순위는 동률이 있을 경우 같은 순위를 가집니다. 예를 들어, RANK(3,1,4,1,5) 결과는 3,1,2,1,4가 됩니다. SELECT employee_name, salary, RANK() OVER (ORDER BY salary DESC) as rank FROM employees; 이 쿼리는 employees 테이블에서 사원 이름, 급여, 급여를 기준으로 한 순위를 조회합니다. 순위는 급여가 높은 순으로 부여됩니다. DENSE_RANK RANK 함수와 비슷하지만, 같은 순위를 가진 행에 대해 같은..

oracle 2023.01.26

오라클 날짜 함수의 종류와 활용 예시

Oracle 날짜 함수는 날짜를 조작할 때 사용합니다. 아래는 몇 가지 예시를 들어 설명해드리겠습니다. SYSDATE 현재 날짜와 시간을 반환합니다. 결과는 2023-01-13 오후 3:18:36 이 됩니다. SELECT SYSDATE from DUAL; MONTHS_BETWEEN 두 날짜 사이에 있는 개월 수를 구합니다. 예를 들어, MONTHS_BETWEEN('2022-01-01', '2022-02-01') 결과는 -1 이 됩니다. MONTHS_BETWEEN('2022-02-01', '2022-01-01') 결과는 1이 됩니다. SELECT MONTHS_BETWEEN('2022-01-01', '2022-02-01') FROM DUAL; ADD_MONTHS 지정된 날짜에 특정 개월을 더합니다. 예를 들..

oracle 2023.01.18

오라클 숫자 함수의 종류와 활용 예시

숫자 함수는 숫자를 조작할 때 사용합니다. 아래는 몇 가지 예시를 들어 설명해드리겠습니다. ROUND 숫자를 지정된 소수점 이하 자리수로 반올림합니다. 예를 들어, ROUND(3.141592, 2) 결과는 3.14가 됩니다. SELECT ROUND(3.141592, 2) FROM DUAL; TRUNC 숫자를 지정된 소수점 이하 자리수로 버림합니다. 예를 들어, TRUNC(3.141592, 2) 결과는 3.14가 됩니다. SELECT TRUNC(3.141592, 2) FROM DUAL; POWER 숫자를 지정된 지수로 제곱합니다. 예를 들어, POWER(2,3) 결과는 8이 됩니다. SELECT POWER(2,3) FROM DUAL; MOD 두 숫자의 나머지를 구합니다. 예를 들어, MOD(7, 3) 결과..

oracle 2023.01.17

오라클 연산 함수의 다양한 종류

Oracle에서 제공하는 연산 함수는 다음과 같습니다. 문자 함수: CONCAT, LENGTH, LOWER, UPPER, INITCAP, LPAD, RPAD, TRIM, REPLACE 숫자 함수: ROUND, TRUNC, MOD, POWER 날짜 함수: SYSDATE, MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, ROUND, TRUNC 변환 함수: TO_CHAR, TO_NUMBER, TO_DATE 정렬 함수: RANK, DENSE_RANK, ROW_NUMBER 집계 함수: SUM, COUNT, AVG, MIN, MAX, VARIANCE, STDDEV 이러한 함수를 사용하면 데이터베이스에서 수행해야 할 다양한 연산을 쉽게 처리할 수 있습니다.

oracle 2023.01.14

트랜잭션 커밋과 롤백 언제 어떻게 사용할까

커밋은 데이터베이스에 대한 변경 사항을 저장하는 데 사용되는 명령입니다. 사용자가 데이터 추가, 업데이트 또는 삭제와 같이 데이터베이스를 변경하면 해당 변경 사항은 데이터베이스 메모리에 일시적으로만 적용됩니다. 커밋은 이러한 변경 사항을 영구적으로 만들고 데이터베이스 저장소에 기록하는 데 사용됩니다. 반면에 롤백은 데이터베이스에 대한 변경 사항을 실행 취소하는 데 사용되는 명령입니다. 이것은 일반적으로 사용자가 실수를 했다는 것을 깨닫거나 최근 변경 사항을 실행 취소해야 하는 문제가 발생한 경우에 사용됩니다. 롤백은 마지막 커밋 이후의 모든 변경 사항을 취소하고 데이터베이스를 이전 상태로 되돌립니다. 롤백은 아직 커밋되지 않은 변경 사항을 실행 취소하는 데에만 사용할 수 있다는 점은 꼭 기억해야 합니다...

oracle 2023.01.13