[SQL] 기초3

sung eon·2022년 11월 8일
0

SQL

목록 보기
10/15

SQL 함수

  • 함수 유형

    • 단일 행 함수: 단일 행만 연산하며 행 당 하나의 결과를 반환.
      • 문자
      • 숫자
      • 날짜
      • 변환
    • 여러 행 함수: 행 그룹을 조작해서 행 그룹 당 하나의 결과를 제공하도록 하는 함수(그룹 함수)

    • 단일 행 함수
      • 데이터 항목을 조작한다
      • 인수를 사용하고 값을 하나 반환한다
      • 반환되는 각 행에 대해 작업한다
      • 행 당 하나의 결과를 반환한다
      • 데이터 유형을 수정할 수 있다
      • 중첩될 수 있다
      • 열 또는 표현식을 인수로 사용할 수 있다.

즉, 단일 행 함수는 데이터 항목을 조작할 수 있으며 단일 행 함수에는 인수를 하나 이상 사용할 수 있으며 질의에서 반환하는 행마다 하나의 값을 반환한다.

  • 인수로 사용 가능 한 것
    • 사용자 지원 상수
    • 변수 값
    • 열 이름
    • 표현식
  • 단일 행 함수의 기능
    • 질의에서 반환되는 각 행에 대해 작업한다
    • 행 당 하나의 결과를 반환한다
    • 참조한 데이터 값과 다른 유형의 데이터 값을 반환할 수 있다
    • 인수를 하나이상 사용할 수 있다.
    • SELECT, WHERE 및 ORDER BY 절에 사용할 수 있으며 중첩될 수 있다.
  • 구문 설명:
function_name 함수 이름입니다.
arg1, arg2 함수에서 사용하는 인수입니다. 열 이름 또는 표현식을 사용할 수 있습니다.
  • 단일 행 함수 타입

    • 문자 함수: 문자를 입력 값으로 받으며 문자 또는 숫자 값을 반환합니다.
    • 숫자 함수: 숫자를 입력하면 숫자 값을 반환합니다.
    • 날짜 함수: DATE 데이터 유형의 값에 동작합니다. 모든 날짜 함수는 DATE 데이터 유형 값을 반환하며 MONTHS_BETWEEN 함수만 숫자를 반환합니다.
    • 변환 함수: 값의 데이터 유형을 변환합니다.
    • 일반 함수
      • NVL
      • NVL2
      • NULLIF
      • COALSECE
      • CASE
      • DECODE
  • 단일 - 문자 함수

    • 여기서 LOWER, UPPER, INITCAP은 대소문자 조작함수이다.


대소문자 조작 함수

  • LOWER: 대소문자 또는 대문자 문자열을 소문자로 변환합니다.
  • UPPER: 대소문자 또는 소문자 문자열을 대문자로 변환합니다.
  • INITCAP: 각 단어의 첫 문자는 대문자로, 나머지 문자는 소문자로 변환합니다.

숫자 함수 "DUAL" 넣어주기

  • ROUND: 지정한 소수점 자리로 값을 반올림합니다
    ROUND(45.926, 2) ---→ 45.93

    • 열, 표현식 또는 값을 소수점 n째 자리로 반올림 한다
    • n을 지정하지 않은 경우 소수점 이하 값 사라진다
    • n이 음수이면 소수점 왼쪽이 수가 반올림 된다.

  • TRUNC: 지정한 소수점 자리까지 남기고 값을 버립니다.
    TRUNC(45.926, 2) ---→ 45.92

    • n을 지정하지 않은 경우 기본값이 0이 된다.

  • MOD: 나눗셈의 나머지를 반환합니다. MOD(m,n)
    MOD(1600, 300) ---→ 100

  • m을 n으로 나눈 나머지를 반환한다.

  • 값이 홀수인지 짝수인지 확인하는 데 많이 사용된다.

  • DUAL

    • FROM 다음에 붙이며, 함수 및 계산 결과를 보는데 사용할 수 있는 더미 테이블(dummy table)이다.
    • 절을 완성하기 위해 끼워넣은거~

날짜 사용

  • SYSDATE

    • 날짜를 반환
    • 시간을 반환
  • 현재 날짜 표시

SELECT SYSDATE
FROM   DUAL
  • 날짜 계산
    • 날짜에 숫자를 더하거나 빼서 날짜 값을 계산합니다.
    • 한 날짜에서 다른 날짜를 빼서 날짜 간의 일 수를 알 수 있습니다.
    • 시간을 24시간으로 나누어 날짜에 시간을 더합니다.

select last_name, (sysdate-hire_date) / 7 as weeks // / 7은 주단위로 나눈거!
from employees
where department_id = 90;

설명: 부서 90에 있는 모든 사원의 이름과 근무한 주 수를 표시한다
그리고 현재 날짜(sysdate)에서 입사일을 뺀 후 결과를 7로 나누어 사원이 근무한 주 수를 계산한다.
(과거 날짜에서 현재 날짜를 빼는 경우 차이는 음수 값이 된다)

날짜함수

  • MONTHS_BETWEEN(date1, date2): date1과 date2 간의 달 수를 계산합니다.
    • 결과는 양수(date1이 date2보다 나중인 경우) 또는 음수(date1이 date2 보다 먼저인 경우)
    • 결과 중 정수가 아닌 부분은 달의 일부를 나타낸다.
  • ADD_MONTHS(date, n): date에 n 달을 더합니다. n 값은 정수여야 하며 음수일 수 있습니다.
  • NEXT_DAY(date, 'char'): date를 포함하는 달의 마지막 날짜를 찾습니다.
  • ROUND(date[, 'fmt']): 형식 모델 fmt에 의해 지정된 단위로 반올림한 date를 반환한다.
    형식 모델 fmt를 생랼하면 date는 가장 가까운 날로 반올림됩니다.
  • TRUNC(date[, 'fmt']): 날짜의 시간 부분을 형식 모델 fmt로 지정한 단위까지 남기고 버린 후 반환한다. 형식 모델 fmt를 생략하면 date는 가장 가까운 날에 맞추어 버려진다.

profile
코베베

0개의 댓글