MySQL, MariaDB만 사용해 왔는데 어쩌다 보니 Oracle을 사용하게 되었다.
다음에 진행할 프로젝트에서 ORM을 사용할지 Mapper를 사용할지 결정된 게 없기 때문에 우선 Oracle 기초 문법부터 살펴보자.
SELECT문과 별칭 사용
- DISTINCT 키워드를 사용하여 조회 결과에서 중복된 행을 제거할 수 있다.
- AS 키워드를 사용하여 열이나 테이블에 별칭을 지정할 수 있다.
날짜 함수
- NEXT_DAY(date, char): 주어진 날짜 이후의 다음 특정 요일의 날짜를 반환한다.
- ADD_MONTHS(date, n): 주어진 날짜에 n개월을 더하거나 뺀다.
- MONTHS_BETWEEN(date1, date2): 두 날짜 사이의 개월 수를 계산한다.
조건문(CASE) 사용
CASE 문은 SQL에서 조건에 따라 다른 값을 반환한다. 프로그래밍 언어의 if-else 문과 유사하다.
구조는 두 가지가 존재하는데 다음과 같다.
1. 단순 CASE 표현식
2. 검색 CASE 표현식
예시
- job_id에 따라 다른 보너스율을 적용, ELSE는 위의 조건에 모두 해당하지 않을 때 적용된다.
문자열 함수
Oracle SQL은 문자열을 조작하기 위한 다양한 함수를 제공한다.
- CHR(n): ASCII 코드 n에 해당하는 문자를 반환한다.
- ASCII(char): 문자 char에 해당하는 ASCII 코드를 반환한다.
- LOWER(string), UPPER(string): 문자열을 소문자나 대문자로 변환한다.
- INITCAP(string): 문자열의 각 단어의 첫 글자를 대문자로 변환한다.
- LPAD(string, length, pad_string): 문자열의 왼쪽을 pad_string으로 채워 length 길이의 문자열을 만든다.
- RPAD(string, length, pad_string): 문자열의 오른쪽을 채운다.
숫자 함수
- ROUND와 TRUNC 함수는 소수점 이하의 숫자를 처리할 때 사용한다.
- CEIL(n): n보다 크거나 같은 최소 정수를 반환한다.
- FLOOR(n): n보다 작거나 같은 최대 정수를 반환한다.
- MOD(n, m): n을 m으로 나눈 나머지를 반환한다.
- POWER(n, m): n의 m 제곱을 계산한다.
데이터 형 변환 함수
데이터 타입을 변환하거나 형식을 지정할 때 함수를 사용할 수 있다.
TO_CHAR 함수에서 포맷 문자열을 사용하여 숫자의 표시 형식을 지정한다.
- 9: 숫자 자리 표시
- ,: 천 단위 구분자
- .: 소수점
날짜를 문자열로 변환할 때도 포맷을 지정할 수 있다.
NULL 관련 함수
데이터베이스에서 NULL 값은 "알 수 없음"을 의미하며 이를 처리하기 위한 함수들이 있다.
- NVL(expr1, expr2): expr1이 NULL이면 expr2를 반환하고, 아니면 expr1을 반환한다.
- NVL2(expr1, expr2, expr3): expr1이 NULL이 아니면 expr2를, NULL이면 expr3을 반환한다.
- COALESCE(expr1, expr2, ..., exprn): 가장 왼쪽부터 NULL이 아닌 첫 번째 표현식을 반환한다.
- NULLIF(expr1, expr2): expr1과 expr2가 같으면 NULL, 다르면 expr1을 반환한다.
DUMP 함수
표현식의 내부 데이터를 문자열로 반환한다.
ex) salary 열의 데이터 타입, 길이, 내부 표현 등을 보여준다.
시스템 정보 조회 (SYS_CONTEXT)
SYS_CONTEXT 함수는 데이터베이스 환경과 세션 정보를 조회하는 데 사용된다.
- 구문: SYS_CONTEXT('namespace', 'parameter')
ORDER BY로 데이터 정렬
조회 결과를 특정 열이나 표현식을 기준으로 정렬한다.
- 기본적으로 오름차순(ASC)이며, 내림차순은 DESC를 사용한다.
- 여러 개의 정렬 기준을 지정할 수 있다.
- NULLS FIRST 또는 NULLS LAST를 사용하여 NULL 값의 정렬 위치를 지정한다.
집계 함수
'Dev > DataBase' 카테고리의 다른 글
『DataBase』 Oracle SQL & MyBatis Mapper 부먹 (1) | 2024.12.22 |
---|---|
『DataBase』 Oracle SQL 중급 문법 (1) | 2024.11.18 |
『DataBase』 MyBatis 문법 (0) | 2024.11.01 |
『DataBase』 MyBatis 내부 구조 (0) | 2024.11.01 |
『DataBase』 대용량 데이터를 마이그레이션 할 때 무엇을 고려해야 할까 1️⃣편 (0) | 2024.08.20 |