본문 바로가기

Language/MySQL

[MySQL] 수치 연산

사칙 연산

연산자 연산 우선순위
+ 덧셈(가산) 1 + 2 = 3 2
- 뺄셈(감산) 1 - 2 = -1 2
* 곱셈(승산) 1 * 2 = 2 1
/ 나눗셈(제산) 1 / 2 = 0.5 1
% 나머지 1 % 2 = 1 1

계산 순서는 기본적으로 왼쪽에서 오른쪽으로 진행

 

 

 

 

SELECT구로 연산하기

[SYNTAX] SELECT 식 1, 식 2... FROM 테이블명

 

 

 

 

 

열의 별명

  • 별명은 예약어 AS를 사용해 지정
  • 키워드 AS는 생략 가능
  • 별명에 ASCII문자 이외의 것을 포함할 경우 더블 쿼트("")로 둘러싸서 지정
  • 별명을 예약어로 지정하고 싶은 경우 더블쿼트로 둘러싸면 가능

 ※ 싱글쿼트('')로 둘러싸는 것은 문자열 상수이다. 주의할 것.

 

 

 

 

WHERE구에서 연산하기

위의 예문을 잘 보면 SELECT구에서 지정한 별명은 WHERE구에서 사용할 수 없다.

그 이유는 데이터베이스 서버 내부에서 WHERE구 → SELECT구 순서로 처리되기 때문

 

그렇다면 여기서 궁금한 한 가지

WHERE구에서 별명을 지정하면 SELECT구에서 별명만 입력해도 조회가 가능할까?

보시다시피 안된다.

 

 

 

 

NULL 값 연산

NULL값을 이용해 'NULL + 1'과 같은 연산을 한다면 결과는?

SQL에서 NULL 값이 0으로 처리되지 않기 때문에 NULL값을 이용해 연산을 하면 결과는 NULL이 나온다.

NULL은 유효한 값이 없는 상태이기 때문이다.

 

 

 

 

ORDER BY 구에서 연산하기

SELECT구에서 지정한 별명을 ORDER BY구에서는 사용이 가능하다.

서버 내부 처리 순서가 WHERE 구 → SELECT 구 → ORDER BY 구 순으로 처리된다.

 

 

 

 

함수

연산자 외에 함수를 사용해 연산도 가능하다.

[SYNTAX] 함수명(인수 1, 인수 2... )

함수는 함수명에 따라 연산 방법이 결정된다.

계산 대상을 인수로 지정하는데, 여기서 인수는 함수명 뒤에 괄호로 묶어 표기한다.

인수의 수나 구분 방법은 함수에 따라 다르지만, 대부분의 함수는 1개 이상의 인수(parameter)를 가진다.

함수도 연산자와 같이 결괏값을 반환하는데 이를 '함수의 반환 값'이라 부른다.

연산자 : 10 % 3 → 1
함    수 : MOD(10, 3) → 1

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

 

 

 

 

ROUND 함수

ROUND 함수는 반올림하는 함수이다.

위의 amount열은 DECIMAL형으로 정의되어 있는데, DECIMAL형은 정수부와 소수부의 자릿수를 지정할 수 있는 자료형이다. 즉, 소수점을 포함하는 수치를 저장하는 자료형이다.

ROUND함수는 기본적으로 소수점 첫째 자리를 기준으로 반올림한 값을 반환한다.

소수점 둘째 자리를 반올림하고 싶다면 아래와 같이 함수의 두 번째 인수를 1로  지정하면 된다.

함수의 두번째 인수를 음수로 지정하면 정수부를 반올림할 수 있다.

1의 자리는 -1, 10의 자리는 -2, 100의 자리는 -3로 지정하면 위처럼 정수부 반올림이 가능하다.

 

 


※ 한빛미디어의 'SQL첫걸음' 책을 보고 공부한 내용을 정리하고 있습니다.

'Language > MySQL' 카테고리의 다른 글

[MySQL] 날짜 연산  (1) 2022.09.22
[MySQL] 문자열 연산  (0) 2022.09.21
[MySQL] 결과 행 제한하기 - LIMIT  (0) 2022.08.09
[MySQL] 복수의 열을 지정해 정렬하기  (0) 2022.08.08
[MySQL] 정렬 - ORDER BY  (0) 2022.08.05