해당 포스트는
SQLD
를 학습하며 정리한 내용에 대한 포스트입니다.
이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.
🌈 내장형 함수(BUILT-IN FUNCTION)
💻 내장형 함수
모든 데이터베이스는 SQL에서 사용할 수 있는 내장형 함수를 가지고 있다
내장형 함수는 데이터베이스 관리 시스템 벤더별로 약간의 차이가 있지만, 거의 비슷한 방법으로 사용이 가능하다.
내장형 함수로는 앞서 배운 형변환 함수, 문자열 및 숫자형 함수, 날짜형 함수가 있다.
단일행 함수 | 다중행 함수 |
---|---|
함수의 입력 행수가 1개 | 함수의 입력 행수가 여러개 |
1개 의 결과값 | 여러 행을 바탕으로 1개 의 결과값 |
각 행에 대한 조작결과를 리턴 | |
만약 5개를 입력하면 5개 출력 | 만약 5개를 입력하면 1개가 출력 |
SELECT, WHERE. ORDER BY, UPDATE의 SET절에 사용 가능 | |
여러행이 결과로 나오는 열은 사용불가 | |
lower, upper, substr, length, trim, replace | sum, count, max, min, avg |
- 문자열 함수 - 숫자형 함수 - 날짜형 함수 - 변환형 함수 - NULL관련 함수 | - 집계함수 - 그룹함수 - 윈도우 함수 |
💻 DUAL 테이블
DUAL 테이블은 Oracle 데이터베이스에 의해서 자동으로 생성되는 테이블이다.
Oracle 데이터베이스 사용자가 임시로 사용할 수 있는 테이블로 내장형 함수를 실행할 때도 사용할 수 있다
사용자 SYS가 소유하며 모든 사용자가 액세스 가능한 테이블이다.
SELECT ~ FROM ~
의 형식을 갖추기 위한 일종의 DUMMY
💻 내장형 함수의 종류
DUAL 테이블에 문자형 내장형 함수를 사용하면 다음과 같다.
ASCII 함수는 문자에 대한 ASCII 코드 값을 알려준다. ASCII 코드는 대문자 A를 기준으로 A(65), B(66), C(67)등의 값이다.
SUBSTR 함수는 지정된 위치의 문자열을 자르는 함수이고 LENGTH 함수, LEN 함수는 문자열의 길이를 계산한다.
LTRIM 함수를 사용하면 문자열의 왼쪽 공백을 제거할 수 있다. 또한 함수를 중첩해서 사용해도 된다.( LENGTH(LTRIM(’ABC’)))
- Oracle 데이터베이스에서 제공하는 문자열 함수는 다음과 같다.
문자열 함수
문자열 함수 설명
ASCII (문자) | -문자 혹은 숫자를 ASCII 코드값으로 변환한다. |
CHAR(ASCII 코드값) | - ASCII 코드값을 문자로 변환한다. |
SUBSTR(문자열, 시작점M [, 길이N ]) | - 문자열에서 M 번째 위치부터 N 개를 자른다. |
CONCAT(문자열1, 문자열2) | - 문자열1번과 문자열2번을 결합한다. - Oracle은 ll : MS-SQL은 + 를 사용할수 있다. |
LOWER(문자열) | - 영문자를 소문자로 변환한다. |
UPPER(문자열) | - 영문자를 대문자로 변환한다. |
LENGTH 혹은 LEN(문자열) | - 공백을 포함해서 문자열의 길이를 알려준다. |
LTRIM(문자열, [지정문자]) | - 왼쪽에서 지정된 문자를 삭제한다. - 지정된 문자를 생략하면 공백을 삭제한다. |
RTRM(문자열, [지정문자]) | - 오른쪽에서 지정된 문자를 삭제한다. - 지정된 문자를 생략하면 공백을 삭제한다. |
TRIM(문자열, [지정문자]) | - 왼쪽 및 오른쪽에서 지정된 문자를 삭제한다. - 지정된 문자를 생략하면 공백을 삭제한다. |
REPLACE(문자열, 변경 전 문자열[,변경 후 문자열]) | - 변경 전 문자열을 찾아 변경 후 문자열로 변환 - 변경 후 문자열을 명시하지 않으면 변경 전 문자열 제거 |
숫자형 함수
절댓값을 계산하는 ABS
함수와 음수, 0, 양수를 구분하는 SIGN
, 나머지를 계산하는 MOD
등의 함수를 사용하면 다음과 같다.
- Oracle 데이터베이스가 지원하는 숫자형 함수는 다음과 같다.
숫자형 함수 | 설명 |
ABS(숫자) | 절댓값을 돌려준다. |
SIGN(숫자) | - 수의 부호를 반환해 주는 함수 - 양수 1 , 음수 -1 , 0 은 0 을구별한다. |
MOD(숫자1, 숫자2) | - 숫자1을 숫자2로 나누어 나머지를 계산한다. - % 를 사용해도 된다. - 두 번째 인자값이 0이면 첫 번째 인자값이 결과로 도출 - 두 인자값이 모두 음수면 나머지도 음수 |
CEIL/CEILING(숫자) | 숫자보다 크거나 같은 최소의 정수 를 돌려준다. |
FLOOR(숫자) | 숫자보다 작거나 같은 최대의 정수 를 돌려준다. |
ROUND(숫자[, 자릿수]) | - 수를 지정된 소수점 자릿수까지 반올림 하고 반환한다. - 자릿수의 기본값은 0이다. - 반올림 된 정수로 반환 - 자릿수가 음수일 경우 지정된 정수부를 반올림하여 반환 |
TRUNC(숫자[, 자릿수]) | - 수를 지정된 소수점 자릿수까지 버림 하여 반환한다. - 자릿수의 기본값은 0이다. - 버림된 된 정수로 반환 - 자릿수가 음수일 경우 지정된 정수부에서 버림하여 반환 |
날짜형 함수
날짜형 함수 중에서 오늘 날짜를 구하기 위해서는 SYSDATE를 사용하면 된다.
만약, 해당 연도만 알고 싶다면, EXTRACT 함수를 사용한다.
TCLCHAR 함수는 형변환 함수 중에서 가장 많이 사용하는 것으로 숫자나 날짜를 원하는 포맷의 문자열로 변환한다.
- Oracle 데이터베이스 날짜형 함수는 다음과 같다.
날짜형 함수 | 설명 |
---|---|
SYSDATE | - 오늘의 날짜를 날짜 타입으로 알려준다. |
EXTRACT(YEAR | MONTH | DAY FROM 날짜데이터) | - 날짜에서 년, 월, 일을 조회한다. |
ADD_MONTHS(날짜 데이터, 특정 개월 수) | - 날짜에서 개월 수를 더한 날짜를 반환 - 날짜의 이전 달이나 다음 달에 기준 날짜의 일자가 존재하지 않으면 해당 월의 마지막 일자가 반환 |
🎯 추가 내용
❌
👉
📚 레퍼런스
정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.
한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.