카테고리 없음

오라클의 단일행 함수

스물훈 2020. 5. 7. 13:24

1. 오라클의 함수

- 리턴값이 있는 코드의 모임

- 종류로는 단일행 함수와 그룹 함수로 분류

- 단일행 함수는 하나의 데이터를 가지고 연산을 해서 하나의 결과를 리턴하는 함수

- 여러 개의 데이터를 함수에 대입하면 함수는 각각의 데이터에 동작을 해서 결과를 여러 개로 리턴

 

2. 개발자 입장에서는 데이터베이스에서 데이터를 가공하는 것 보다는 프로그램 안에서 가공하는 것을 선호

 

3. DUAL 테이블 

- 오라클의 가상 테이블

- 연산식이나 오늘 날짜, 시퀀스 등의 값을 알고자 할 때 사용할 수 있는 가상 테이블

 

ex) select 12*34*33

      from dual;

 

4. ROUND

- 데이터를 반올림해주는 함수

- 숫자 데이터와 날짜 데이터에 사용이 가능

 

ROUND(데이터, 반올림할 자리)

- 자리를 생략하면 0가 설정되서 소수 첫째 자리에서 반올림

- 음수를 대입하면 정수 부분을 반올림

ROUND(123.87 ,1) = 123.9

ROUND(123,87) = 124

ROUND(123,-2) = 100

 

ex) emp 테이블에서 ename과 sal을 조회

 sal의 값은 10의 자리에서 반올림해서 100의 자리까지 나오도록 출력

 

5. 문자 관련 함수

- 영문자를 사용할 때는 대소문자 구분 여부를 판단: UPPER, LOWER, INICAP

- 문자열의 길이: LENGTH(글자 개수), LENGTHB(바이트 수)

- 데이터를 생성할 때 입력 가능한 최대 글자 수로 설정을 하기 때문에 뒤에 공백이 있을 수 있다.

   (LTRIM,RTRIM,TRIM)

 

한글은 3byte로 처리

lengthb("무선이어폰") = 10이 아니고 15

 

LOWER

where에 대문자 쓰기 귀찮을때~

 

6. 형 변환 함수

- 데이터의 자료형 변환

- 문자 데이터와 숫자 및 날짜 데이터 사이의 변환

- 사용자의 입력을 받거나 프로그램이 언어로부터 입력받을 때는 문자열로 입력받고

   실제 사용할 때는 변환해서 사용하는 경우가 많음

 

1) to_char

- 날짜 데이터를 문자열로 변환하고자 하는 경우

   to_char(날짜 데이터, '출력 서식')

- 숫자 데이터를 문자열로 변환하고자 하는 경우

   to_char(숫자 데이터, '출력 서식')

 

2) to_number

to_number(문자 데이터, '숫자 서식')

 

3) to_date

to_date(문자 데이터, '날짜 서식')

 

select to_date('1983-05-05 13','yyyy-mm-dd-hh24')

from dual;

 

NVL

- null값을 치환하기 위한 함수

- null은 아직 알려지지 않은 값 - 자로구조에서는 nill이라고도 함.

- null과의 산술 연산은 무조건 null(null과는 연산을 할 수 없기 때문)

- null인 데이터의 값을 치환하기 위해서 사용하는 함수

- nvl(표현식 또는 열이름, 대체할 값) 

  *대체할 값은 열이름의 자료형과 일치해야함.

 

ex) emp에서 job의 개수 조회

 

ex2) emp에서 comm이 null인 데이터의 개수

        *count는 null을 제외하고 카운트, count에는 컬럼명 쓰지 말고 * 쓰는게 좋음

 

4. 그룹 함수는 그룹화하지 않은 열과 같이 출력할 수 없음.

- emp 테이블에서 sal가장 큰 데이터의 ename과 sal의 값을 조회

 

5. GROUP BY

- where절 다음에 기재해서 데이터를 그룹화하는 절

- 컬럼이름이나 표현식 모두 가능

- GROUP BY를 사용하는 경우 그룹화한 열과 그룹함수만 select구문에서 출력 가능

 

ex1) emp 테이블에서 job별로 sal의 평균 조회

 

ex2) emp에서 deptno별 인원수 조회

 

ex3) 연도별 입사한 사원의 수 조회

substr(데이터, 시작위치, 개수)

group by에서 조회하려는 컬럼에 뭔 짓을 했으면 select문에서도 똑같이 해야함.