SQL 첫걸음- 12강(2/2)

12강. 수치 연산

4. WHERE 구에서 연산하기

WHERE구에서 SELECT구에서와 같이 별명을 사용하면, 존재하지 않는다는 에러가 발생한다.

4-1) WHERE구에서 SELECT구의 내부처리 순서

  • WHERE구에서의 선택
  • SELECT구에서의 선택


    데이터베이스 서버 내부에서 WHERE구 -> SELECT구의 순서로 처리된다.


    이는 서버 내부의 처리순서와 관련이 있다.
  1. WHERE구행이 조건에 일치하는지 아닌지를 먼저 조사한다.(행 추출)
  2. SELECT구지정된 열을 선택해, 결과로 반환하는 식으로 처리한다.
    (열을 선택해 별명을 붙인다.)

    SELECT구에서 지정한 별명은 WHERE구 안에서 사용할 수 없다!


5. NULL값의 연산

  • NULL + 1의 결과값은 1이 아닌 NULL이다.
  • 1 / NULL을 계산하면 NULL이 0으로 처리되지 않기 때문에
    에러가 발생하지 않고, 결과는 NULL이 된다.

6. ORDER BY 구에서 연산하기

ORDER BY 구에서도 연산할 수 있고, 결과값들 정렬이 가능하다.

6-1) ORDER BY 구의 내부처리 순서

  • ORDER BY 구는 서버에서 내부적으로 가장 나중에 처리된다.

    따라서 WHERE구와는 달리,
    ORDER BY 구에서는 SELECT구에서 지정한 별명을 사용할 수 있다!

6-2) SELECT구, WHERE구, ORDER BY구의 서버 내부 처리 순서

  • WHERE구 -> SELECT구(여기에서 별명을 지정)-> ORDER BY구

7. 함수

연산자 외에 함수를 사용해 연산할 수 있다.

1
함수명 (인수1, 인수2...)
  • 함수의 계산 대상은 인수로 지정한다.
  • 인수는 함수명 뒤에 괄호로 묶어 표기한다.

7-1) 연산자와 함수는 서로 비슷하다.

  • % 연산자(MySQL 등에서 사용 가능)
    : 나머지값을 반환하는 연산자
1
10 % 4 -> 2
  • MOD 함수(MySQL, Oracle 등에서 사용 가능)
    • 함수명은 MOD이고, 인수로는 나뉘어질 수, 나눌 수 순으로 2개를 지정한다.
    • 나머지 값을 반환한다.
1
MOD(10, 4) -> 2

함수도 연산자도 표기 방법이 다를 뿐, 같은 것이다!


8. ROUND 함수

  • DEMICAL형: INTEGER형(정수만 지정 가능)과는 달리
    정수부와 소수부의 자릿수를 지정할 수 있는 자료형

반올림 자릿수 지정

  • ROUND 함수는 기본적으로 소수점 첫쨰 자리를 기준으로 반올림한 값을 반환한다.
  • 두 번째 인수로 반올림할 자릿수를 지정할 수 있다.
  • 두 번째 인수를 생략할 경우, 0으로 간주되어 소수점 첫째 자리를 반올림한다.
  • ex)
1
2
mysql> SELECT 컬럼명, ROUND(컬럼명, 1) FROM 테이블명;
# 두 번째 인수로 1을 지정할 경우 소수점 둘째 자리를 기준을 반올림한다.
  • 두 번째 인수를 음수로 지정해서 정수부의 반올림할 자릿수를 지정할 수 있다.
  • ex) -1 지정할 경우 1단위를 반올림하며, -2를 지정하면 10단위를 반올림한다.