내장형(built-in)함수

- 전부 안 외워도 됨
- 필요할 때마다 구글링하기 ex)오라클 내장형 함수
<문자형 함수>
#LOWER
=입력받은 문자열에서 대문자를 소문자로 바꿔줌
입력 값 : 문자형 리터럴 1개
출력 값 : 문자형 리터럴 1개
ex)


- DUAL = 테스트 할 때 쓰는 테이블!!! 기억하기
- FROM 뒤에 DUAL 적어놓고 SELECT 뒤에 이를테면 직원 이런 식으로 작성하면 오류값 뜸!
왜냐하면? 듀얼이란 테이블은 말 그대로 테스트용이여서 직원이라는 컬럼이 없어서
#UPPER
= 입력받은 문자열에서 소문자를 대문자로 바꿔줌
입력 값 : 문자형 리터럴 1개
출력 값 : 문자형 리터럴 1개
ex)


#SUBSTR
= 입력받은 문자형 리터럴에서 시작위치에서 길이만큼 잘라냄
입력 값 : 문자형 리터럴 1개, 시작위치, 길이
출력 값 : 문자형 리터럴 1개
ex)


-> 패스워드 컬럼에서 속성값의 두 번째부터 3개 잘라온다
#TRIM
= 입력받은 문자형 리터럴의 양 끝의 공백을 제거한다
(단, 문자 중간의 공백은 제거 안 됨)
ex)


-> TRIM을 SELECT에 두 개 작성 가능함
(다른 컬럼도 여러 개 쓸 수 있으니깐)
#REPLACE
= 입력받은 문자형 리터럴 안에 있는 바껴야 할 값을 바꾸고 싶은 값으로 변경하여 출력
(어디에서, 무엇을, 어떻게) 떠올리기!!!!!!!!!!
입력 값 : 문자형 리터럴 1개, 바뀔 값, 바꿀 값
출력 값 : 문자형 리터럴 1개
ex)

-> REPLAE 해라! 주민등록번호 컬럼에서 '-' 표시를 ''를 통해 공백처리 해라!
내가 처음에 오류났던 부분인데 공백으로 값 보고싶다면 작은 따옴표를 두 개 작성해야 함
(=큰 따음표 하나 아님)

- 문자형 함수 끝 -
<숫자형 함수>
#MOD
= 피제수를 제수로 나눈 나머지 숫자형 리터럴을 출력
(무엇에서, 무엇으로 나눈 나머지를 알고싶은지)
+ 숫자끼리 나눈 나머지와 컬럼 값을 나눈 나머지도 확인 가능
입력 값 : 숫자형 리터럴 2개 ( 피제수, 제수 ) ex) 피제수 : 10, / 제수 : 3
출력 값 : 숫자형 리터럴 1개 ex) 10 % 3 = 1
ex)

-> 연봉 컬럼을 1000으로 나눈 나머지값을 알고싶어요!

#ROUND
= 실수를 소수점 자릿수까지 반올림한 결과를 출력
(무엇에서 소수 몇째자리까지만 나타내고 싶은지)
입력 값 : 숫자형 리터럴 2개 (실수, 소수점자릿수)
출력 값 : 숫자형 리터럴 값
ex)

-> 반올림해라! 1.452라는 값을 소수 둘째자리까지만 나타나게
(= 이러면 컴퓨터가 소수 셋째자리에서 반올림해서 값을 알려줌)
-> 반올림해라! 1.452라는 값을 소수 첫째자리까지만 나타가게
(= 이러면 컴퓨터가 소수 둘째자리에서 반올림해서 값을 알려줌)

- 숫자형 함수 끝 -
<날짜형 함수>
#SYSDATE
= 입력 시 바로 출력 됨(= (SYSDATE함수 뒤에 뭐 입력 안해도 됨)
현재 시간을 초단위까지 날짜형 리터럴로 출력

적절한 테이블이 없을 경우에는 DUAL로 표시

-> 년/ 월/ 일만 나오는 이유는 SQL DEVELOPER 상에서 YY/MM/DD 형태로 설정돼서!
< SYSDATE로 날짜 조작하기 >
-> 실무에서는 날짜 조작 한대
(내가 테스트 해봤는데 날짜를 더할 수도 있고 뺄 수도 있음)
SYSDATE + 1 ------> 하루더함
SYSDATE + 1/24 ------> 한시간더함
SYSDATE + 1/24/60 ------> 일분더함
SYSDATE + 1/24/60/60 ------> 일초더함

- AS 뒤 별칭에 1일 더함 이런 식으로 작성하면 안 됨
(=자바 변수명 작성처럼 숫자로 시작? 안 된다)
- 숫자로 시간 표현하고 싶어도 참기!!!

- 년/월/일만 나오는 이유는 SQL DEVELOPER 상에서 YY/MM/DD 형태로 설정
#LAST_DAY
= 입력받은 날짜형 값에 대해 해당 월의 마지막 날짜를 출력
입력 값 : 날짜형 리터럴 1개
출력 값 : 날짜형 리터럴 1개
ex)

-> SYSDATE= 오늘 날짜를 의미
오늘 날짜가 속한 달의 마지막 날짜를 구해라!

-> 저 데이터를 출력시킨 오늘 날짜가 속한 달은 22년 12월이였나봄
#ADD_MONTHS
= 입력받은 날짜형 값에 대해 숫자형 리터럴만큼 개월 수를 가감(+, -)하여 출력
함수 마지막은 S가 들어간다
ex)ADD_MONTH 라고 치면 안 됨
입력 값 : 날짜형 리터럴 1개, 숫자형 리터럴 1개
출력 값 : 날짜형 리터럴 1개
ex)


-> 60을 작성하면 60개월로 컴퓨터가 인식해줌
ADD가 들어갔다고 해서 더해진 개월 수만 값을 출력하진 않음 개월 수 빼기도 가능!
(즉 -인지 +인지 꼭 적어라)
- 날자형 함수 끝 -
형변환함수
= 특정 자료형으로 값을 변경해줌!!!

* 실무 팁 : 날짜형 -> 문자형 // 문자형 -> 날짜형은 자주 사용
1. 문자형을 숫자형으로 형변환>

-> 바꾸고 싶은 문자를 괄호 안에 작성하면 됨
2. 숫자형을 문자형으로 형변환

3. 날짜형을 문자형으로 형변환

-> 오늘 날짜 데이터를 'YYYY/MM/DD HH24: MI :SS'형태로 바꾸고 싶어요!


-> 오늘 날짜를 구체적으로 어떻게 문자로 바꿀지 지정 안하게 되면? (SQL DEVELOPER 기준)

-> 이렇게 값이 나옴 (=며칠인지까지만 나옴)
Q. 직원 테이블에서 입사일시 컬럼을 이용해 입사한 년도(YYYY)만 추출해주세요-> 입사한 년도를 문자형으로 형변환 해야 함!!!(YYYY면 날짜형이네---->X)

->입사연도 추출하고 나면 컬럼에 줄줄이 내가 입력한 컬럼명 떠버리니깐 AS 필수임

문자형으로 형변환 하려면 TO_CHAR() 필요함
내가 처음에 TO_CHAR인지 TO_DATE인지 TO_NUMBER인지 헷갈렸음
TO_CHAR을 입력해놓고선 오류값 떠서 짜증나서 답 봤는데 언더바 입력 안 했었음!
형변환 할 때 꼭 언더바 써라
<날짜 및 시간관련 용어>
YYYY = 년도
MM = 월
DD = 일
HH24 = 시간 (hours에서 따옴)
MI = 분 (minutes 약자)
SS = 초 (second)
형변환 우선순위
날짜형 > 숫자형 > 문자형

-> 문자랑 숫자 만나면 문자가 숫자형으로 형변환 되어야 함
자동형변환 *** 내가 살짝 헷갈리니 기억해두기
= 연산을 하기 전에 먼저 형변환이 발생함


-> 문자형과 숫자형 형변환을 시도했는데 우선순위에서 밀린 문자형이 자동으로 형변환됨
-> 형변환 되니 사칙연산 알아서 해줌
NULL함수
= NVL, NVL2, DECODE, COALESCE
NULL함수 출현 배경 NULL은 산술, 비교, 연산 모두 불가능
ex)

나이 컬럼에 1을 더해서 올해나이를 출력했는데 null 부분은 1을 더해도 null임
왜냐하면null은 정해지지 않은 값이여서 0이 아님

-이 중 NVL과 DECODE는 실무에서 자주 사용되니 필히 기억해두자
#NVL(data1, data2)
= data 1에 null값이 들어오면 data2를 출력하고 null이 아니면 data1을 출력
ex)

-> NVL(나이, 0)을 해석하자면 나이컬럼에서 null이 아닌 사람들은 나이 데이터가 출력되는데
null인 사람은 0으로 데이터 출력해줌!!!
#NVL2(data1, data2, data3)
= data1에 null이 아닌 값이 들어오면 data2를 출력, null이면 data3 출력

-내가 선생님께 무려 두 번이나 물어봤는데 당 떨어져서 이해 못한 NULL함수임ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
선생님 나를 이해시키기 위해 예시도 여러 개 알려주셨는뎈,,, 그때 당시 이해는 못했으나 지금 생각하니 감사합니다.....
-별거아니네
ex)

#DECODE(data1, data2, data3, data4)
이해가 좀 잘 안 됨
= data1과 data2가 동일하면 data3을 출력하고, 그렇지 않으면 data4를 출력
ex)

#COALESCE(data1, data2, data3, ... dataN)
= 앞에서부터 data를 확인하다가 null이 아닌 값이 나오면 출력
ex)

'DB' 카테고리의 다른 글
WHERE, 비교조건, 논리조건, 부정연산, NULL조건, IN연산자 (0) | 2023.02.14 |
---|---|
SQL의미 및 종류, SQL실행순서, 자료형과 리터럴, SELECT 연결연산 및 사칙연산 (0) | 2023.02.11 |
데이터베이스 정의 및 특징, 데이터 모델링(개념, 논리, 물리), ERD, 정규화 (0) | 2023.02.11 |