SQL은 데이터베이스를 조작하는 언어이지만 컴퓨터를 조작하는 언어이기도 한 만큼
기본적인 계산기능을 포함
합니다.
사칙연산
+
-
*
/
%(나머지)
*
/
%
2순위 - +
-
같은 그룹 내 연산자 우선순위는 동일SELECT 구로 연산하기
SELECT 구에는 열명을 지정하는 것 외에도 여러 가지 식을 기술할 수 있습니다.
💡SELECT 식1, 식2 ... FROM 테이블명
예시
sample34 테이블의 내용 참조하기
sample34 테이블에서 주문금액은 price*quantity로 계산할 수 있습니다.
이를 SELECT 구로 지정해 계산하면 다음과 같습니다.
SELECT *,price*quantity FROM sample34;
여기에서 price*quantity 열 이름을 별명을 붙여 재지정할 수 있습니다. 별명은 예약어 AS를 사용해 지정합니다. (예약어 AS는 생략이 가능)
SELECT *,price*quantity AS amount FROM sample34;
SELECT 구에서는 콤마(,)로 구분해 복수의 식을 지정할 수 있으며 각각의 식에 별명을 붙일 수 있습니다.
SELECT *,price*quantity AS amount, price/quantity AS A FROM sample34;
더블쿼터(””)
로 둘러싸면 데이터베이스 객체명
으로 간주합니다.싱글쿼트(’’)
로 둘러싸면 문자열 상수
입니다.숫자만으로 구성
되는 객체명은 허용되지 않습니다.SELECT *, price*quantity AS amount FROM sample34;
SELECT *, price*quantity AS amount FROM sample34 WHERE price*quantity >= 2000;
주의할 점은, SELECT 구에서 amount라는 별명을 붙였다고 WHERE 구에도 amount로 지정하여 사용하면 안된다는 것입니다. 그 이유는 데이터베이스 서버 내부에서 WHERE 구 → SELECT 구 순서로 처리
되기 때문입니다. 그렇기 때문에 SELECT 구에서 지정한 별명을 WHERE 구에서 사용하면 아직 내부적으로 지정되지 않은 상태이기 때문에 에러가 발생합니다. SQL에서는 NULL값이 0으로 처리되지 않습니다.
결과는 NULL
이 됩니다.ORDER BY 구에서 연산하기
SELECT *, price * quantity AS amount FROM sample34;
ORDER BY 구에서 금액을 계산하고 내림차순으로 정렬하기 SELECT *, price * quantity AS amount FROM sample34 ORDER BY price * quantity DESC;
ORDER BY는 서버에서 내부적으로 가장 나중에 처리되기 때문에 SELECT 구에서 지정한 별명을 ORDER BY에서도 사용할 수 있습니다.SELECT *, price * quantity AS amount FROM sample34 ORDER BY amount DESC;
**WHERE 구 → SELECT 구(별명 지정) → ORDER BY 구
함수
💡함수명(인수1, 인수2)
ROUND 함수
SELECT *FROM sample341;
ROUND로 반올림SELECT amount, ROUND(amount) FROM sample341;
SELECT amount, ROUND(amount,1) FROM sample341;
두 번째 인수
로 0은 1
, 6은 0
, 1는 -1
, 6은 -2
, 9는 -1
를 사용해 지정할 수 있습니다. SELECT amount, ROUND(amount,-2) FROM sample341;