문자열 함수
LTRIM
왼쪽(시작 부분) 에서 공백을 제거한다.
- 두번째 파라미터로 어떤값을 제거할지 선택 할 수 있다.
SELECT RTRIM(' Hello World ') AS TrimmedString;
RTRIM
오른쪽(시작 부분)에서 공백을 제거한다.
- 두번째 파라미터로 어떤값을 제거할지 선택 할 수 있다.
SELECT RTRIM('Hello Worldxxxxx', 'x') AS TrimmedString;
TRIM
양쪽에서 공백을 제거한다.
- BOTH | LEADING | TRAILING CONDITION FROM CHARACTOR
- BOTH : 문자열의 양쪽에서 문자를 제거합니다 ( 기본설정 )
- LEADING : 문자열의 시작 부분에서만 문자를 제거합니다.
- TRAILING : 문자열의 끝 부분에서만 문자를 제거합니다.
SELECT TRIM(BOTH 'x' FROM 'xxxHello Worldxxx') AS TrimmedString;
SUBSTR(문자열, 시작점, 길이)
문자열의 원하는 부분만 잘라서 반환해주는 함수이다. 길이를 명시하지 않았을 경우 문자열의 시작 점 부터 문자열의 끝까지 반환한다. !! 주의 시작점의 인덱스는 1이다.
SUBSTR('블랙핑크제니', 3, 2)
LENGTH(문자열)
문자열의 길이를 반환해주는 함수이다.
REPLACE(문자열, 변경 전 문자열 [, 변경 후 문자열])
문자열에서 변경 전 문자열을 찾아 변경후 문자열로 바꿔주는 함수이다.
LPAD(문자열, 길이, 문자)
문자열이 설정한 길이가 될 때까지 왼쪽을 특정 문자로 채우는 함수이다.
숫자 함수
ABS(수)
수의 절대값을 반환해주는 함수
SIGN(수)
부호를 반환해주는 함수 양수이면 1, 음수이면 -1, 0이면 0
ROUND(수, 자리수)
수를 지정된 소수점 자리수까지 반올림 하여 반환해주는 함수이다.
TRUNC(수, 자리수)
수를 지정된 소수점 자리수까지 버림하여 반환해주는 함수이다.
CEIL(수)
소수점 이하의 수를 올림한 정수를 반환해주는 함수이다.
FLOOR(수)
소수점 이하의 수를 버림한 정수를 반환해주는 함수이다.
MOD(수1, 수2)
수1을 수2로 나눈 나머지를 반환해주는 함수이다. 단, 수2가 0일경우 수1을 반환한다.
날짜 함수
SYSDATE
현재의 연, 월, 일, 시, 분, 초를 반환해주는 함수이다.
EXTRACT(특정 단위 FROM 날짜 데이터)
날짜 데이터에서 특정 단위(YEAR, MONTH, DAY, HOUR, MINUTE, SECOND)만을 출력해서 반환해주는 함수이다.
ADD_MONTHS(날짜 데이터, 특정 개월 수)
날짜 데이터에서 특정 개월 수를 더한 날짜를 반환해주는 함수이다. 날짜의 이전 달이나 다음달에 기준 날자의 일자가 존재하지 않으면 해당 월의 마지막 일자가 반환된다.
변환 함수
데이터베이스에서 데이터 유형에 대한 형변환을 할 수 있는 방법은 두가지가 있다.
- 명시적 형 변환 : 변환 함수를 사용하여 데이터 유형 변환을 명시적으로 나타냄
- 암시적 형 변환 : 데이터베이스가 내부적으로 알아서 데이터 유형을 반환함
암시적으로 형변환이 가능하다고 해서 컬럼의 데이터 유형을 고려하지 않고 SQL 작성을 하게 되면 성능 저하를 불러올 수 도 있고 때에 따라서는 에러를 뱉는 경우도 있기 때문에 되도록 명시적 형변환을 사용하는 것이 좋다.
TO_NUMBER(문자열)
문자열을 숫자형으로 변환해주는 함수이다.
TO_CHAR(수 or 날짜, [, 포맷]) 수나 날짜형 데이터를 포맷 형식이 문자형으로 반환해주는 함수이다. TO_DATE(문자열, 포맷)
포맷 형식의 문자형의 데이터를 날짜형으로 변환해주는 함수이다.
NVL(인수1, 인수2)
인수1의 값이 NULL일 경우 인수2를 반환하고 NULL이 아닐 경우 인수 1을 반환해주는 함수이다.
NULLIF(인수1, 인수2)
인수1과 인수2가 같으면 NULL을 반환하고 그렇지 않다면 1을 반환하는 함수이다.
COALESCE(인수1, 인수2, 인수3 … )
NULL이 아닌 최초의 인수를 반환해주는 함수이다.
NVL2(인수1, 인수2, 인수3)
인수1이 NULL이 아닌경우 인수2를 반환하고 NULL인경우 인수3을 반환하는 함수이다.
CASE
CASE 함수와 성격이 같기는 하지만 표현 방식이 함수라기 보다는 구문에 가깝다고 할 수 있다. 문장으로 ‘~이면 ~이고, ~이면 ~이다’ 식으로 표현되는 구문이고 필요에 따라 각 CASE를 여러개로 늘릴 수도 있다. 같은 기능을 하는 함수로는 Oracle의 DECODE 함수가 있다.
CASE문에서는 ELSE 뒤의 값이 DEFAULT 값이 디고 별도의 ELSE가 없을 경우 NULL 값이 DEFAULT가 된다.
연사자의 우선순위
우선순위 연산자
1 | 산술 연산자 (*, /, +, -) |
2 | 연결 연산자 ( |
3 | 비교 연산자(=, < >, >, <, ≥, ≤) |
4 | IN, LIKE, BETWEEN, IS NULL |
5 | NOT |
6 | AND |
7 | OR |
집계함수
COUNT(*) 전체 Row를 Count 하여 반환
COUNT(컬럼) | 컬럼값이 Null인 Row를 제외하고 Count하여 반환 |
COUNT(DISTINCT 컬럼) | 컬럼값이 Null이 아닌 Row에서 중복을 제거한 Count를 반환 |
SUM(컬럼) | 컬럼값들의 합계를 반환 |
AVG(컬럼) | 컬럼값들의 평균을 반환 |
MIN(컬럼) | 컬럼값들의 최소값을 반환 |
MAX(컬럼) | 컬럼값들의 최대값을 반환 |
SELECT문의 논리적 수행 순서
SELECT - 5
FROM - 1
WHERE - 2
GROUP BY - 3
HAVING - 4
ORDER BY - 6
JOIN
NATURAL JOIN
A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을경우 JOIN 되는 방식이다.
Oracle에서는 USING 조건절을 이용하여 같은 이름을 가진 컬럼중 원하는 컬럼만 JOIN에 사용 할 수 있다.
SELECT CASE,
GENDER,
A.JOB AS R_JOB,
B.JOB AS I_JOB,
FROM RUNNING_MAN JOIN INFINITE_CALLENGE B
USING (CAST, GENDER)
CROSS JOIN
예전 수학시간에 경우의 수에 대해 배운적이 있을 것이다. 비슷한 맥락으로 CROSS JOIN은 A 테이블과 B 테이블 사이에 JOIN 조건이 없는경우, 조합할 수 있는 모든 경우의수를 출력하는 방식이다. 다른 말로 Cartesian Product라고 표현하기도 한다.
SELECT e.name, d.department_name
FROM employees e
CROSS JOIN departments d;
'CS > 데이터베이스' 카테고리의 다른 글
SQL 활용 (1) | 2024.04.14 |
---|---|
데이터 모델과 SQL (0) | 2024.04.14 |
데이터 모델의 이해 (1) | 2024.04.14 |
윈도우 함수 (Window Function) (0) | 2024.04.11 |
Redis란? (0) | 2023.08.18 |