5월 18일 화요일 (7일차) - 산술연산자ㅇ

@_@·2021년 5월 18일
0

Database

목록 보기
8/28

<목차>
ㅇ 산술연산자
ㅇ 연산자 사용 시 NULL 처리


ㅇ 참고자료 <Do it! 오라클로 배우는 데이터베이스 입문>



ㅇ 산술연산자

  • 셀렉트 문장은 산술연산 진행할 수 있어 : + - * /
  • 컬럼과 상수 , 컬럼과 컬럼
    예) salary*12 , salary + salary
  • 산술연산자 사용했다고 테이블이 변하는 건 아냐
    • 셀렉트라는 명령문은 테이블의 데이터를 원하는 대로 보여주는 것뿐이야
      = 테이블의 구조에 영향을 주는 언어가 아냐
      = 셀렉트 문장은 트랜젝션에 영향을 주지 않아
      = 테이블의 구조에 저장되고 취소되는 게 아냐
  • 숫자 데이터에는 4개 모두 시행 가능
  • 날짜 데이터에는 +, - 만 가능 (날짜가 ± 돼)
    • 입력할 때는 연/월/일 이라는 포맷을 가지고 저장하지만
    • 실제 테이블에 저장될 때는 시간, 분, 초까지 포함하여 소수점으로 표현이 되는 숫자 값으로 저장
    • Q. (hire_date +1, hire_date-7 을 해도 열머리글이 다 하이어데이트야 )

  • 문자 데이터에는 시행 불가 (에러나)
  • 우선순위 : 괄호 > 곱셈 나눗셈 > 덧셈 뺄셈
    • 12*salary+100 : 연봉에 100 더하기. 연봉에 인상률
    • 12*(salary +100) : 급여에 100 더하고 연봉을 계산 . 월급여 인상률 - 이런 회사를 가 ㅋㅋㅋ

ㅇ 실습1 : 우리 회사에 근무하는 사원의 이름과 그 사원의 연봉을 구하시오.

SELECT last_name, salary*12
FROM employees;



ㅇ NULL 처리 함수 : NVL

  • NULL값을 포함하는 산술식은 NULL로 평가
  • NVL을 사용하여 대체 값 입력
  • 대체해주는 값이 컬럼의 데이터 타입과 같아야 해 ★
    • 문자는 문자로, 날짜는 날짜로, 숫자는 숫자로
    • 문자와 날짜는 작은따옴표 까먹지 말고!
  • 테이블 구조 자체가 바뀌는 게 아니라 이 문장이 실행되는 동안만

ㅇ 실습2 : 사원의 이름과 그 사원의 연봉을 구하시오. 단, 보너스를 받는 사원은 보너스값을 곱해서 출력하시오.
SELECT last_name, salary*12*(1+NVL(commission_pct,0))
FROM
  • 보너스에 NULL 값 있으므로 NVL 사용
  • salary*12*NVL(commission_pct, 1)
    • 커미션pct컬럼에 널 값이 있으면 1로 대체해라
    • 수업시간에 한 식인데 이러면
      • 보너스 받는 사람들은 추가된 보너스만
      • 안 받는 사람들은 실제 연봉
  • SALARY*12*(1+NVL(COMMISSION_PCT,0))
    • 커미션ptc컬럼에 널 값이 있으면 0으로 대체해라
      그러면 커미션pct가 널이 없게 되고
    • 거기에 1을 더해서 1.xx 꼴, 또는 1.0 꼴이 되게 하면 끝

profile
STEP BY STEP

0개의 댓글