개발새발 블로그

[SQL 첫걸음] 3장 - 연산 본문

백/SQL

[SQL 첫걸음] 3장 - 연산

복지희 2023. 10. 1. 00:14

4. 수치연산

데이터배이스 제품에 따라 다른데,

%대신 MOD 함수를 사용하는 경우도 있다.

 

SELECT 구는 열명을 지정하기도 하고,

추가적으로 식도 기술할 수 있다.

SELECT 식1, 식2... FROM 테이블명;

현재 기본 세팅이다.

 

단가 x 개수의 연산식을 사용하고 싶으면,

cost*amount 라는 열이 새롭게 생긴다.

 

 

<열의 별명>

새롭게 생긴 열의 이름을 cost*amount 가 아닌, 새로운 이름 total 이라는 열로 이름짓고싶다면

예약어 AS 를 사용한다.

SELECT 식1, 식2... AS 별명 FROM 테이블명;

이렇게 더블쿼츠를 사용해도 괜찮다.

 

 

<WHERE 구에서 연산하기>

SELECT *, cost*amount "total" FROM product WHERE cost*amount >= 10000;

WHERE구 에서는 지정해준 별명으로는 사용이 불가능하다!

데이터베이스 서버 내부에서 WHERE 구 -> SELECT 구 순으로 처리되기 때문이다.

 

 

<NULL 값의 연산>

NULL + 1 을 해서 NULL을 0으로 간주하고 1의 결과값이 나오는 것이 아니라,

NULL 값을 이용해서 연산해도 NULL 값이 나온다.

 

 

<ORDER BY 구에서 연산하기>

ORDER BY는 WHERE과 달리 서버에서 내부적으로 가장 나중에 처리되므로,

설정해둔 별명으로 조건을 달아줘도 상관없다.

SELECT *, cost*amount "total" FROM product ORDER BY cost*amount;
SELECT *, cost*amount "total" FROM product ORDER BY total;

둘 다 같은 결괏값을 보여준다.

 

 

<ROUND 함수>

반올림을 해주는 함수

SELECT amount, ROUND(amount) FROM sampledb;
amount round(amount)
128.9 129
2134.1 2134
108.0 108

주의) INTEGER 형은 소숫점 저장은 하지 못하고, DECIMAL 형으로 정의해야 소숫점까지 저장이 된다.

 

함수의 인자로 함께 넣어주면, 소숫점 자리수까지 지정이 가능하다.

SELECT amount, ROUND(amount, 1) FROM sampledb;
amount round(amount, 1)
128.90 129.9
2134.16 2134.2
108.00 108.0

 

인자를 음수로 지정하면, 반올림할 자릿수도 지정할 수 있다.

SELECT amount, ROUND(amount, -2) FROM sampledb;
amount round(amount, -2)
128.90 100
2134.16 2100
180.8 200

 

 

5. 문자열 연산

<문자열 결합>

문자열을 결합하는 연산자도 데이터베이스 제품마다 방언이 있다.

연산자/함수 연산 데이터베이스
+ 문자열 결합 SQL Server
|| 문자열 결합 Oracle, DB2, PostgreSQL
CONCAT 문자열 결합 MySQL

문자열 결합은 2개의 열 데이터를 모아서 1개의 열로 처리하고 싶은 경우에 자주 사용한다.

 

기본상태

SELECT *, CONCAT(amount, unit) FROM product;

 

<SUBSTRING 함수>

문자열의 일부분을 계산해서 반환해주는 함수

연속된 문자/숫자를 두개의 열로 나눈다.

앞 4자리 추출
SUBSTRING('20140125001', 1, 4) -> '2014'

5째 자리부터 2자리 추출
SUBSTRING('20140125001', 5, 2) -> '01'

 

<TRIM 함수>

여분의 스페이스가 있을 경우 제거.

but 문자열 도중에 존재하는 스페이스는 제거 안됨!!

TRIM으로 스페이스 제거하기
TRIM('ABC     ') -> 'ABC'

 

<CHARACTER_LENGTH 함수>

문자열의 길이를 계산해서 돌려줌.

 

6. 날짜 연산

 

 

 

 

 

 

' > SQL' 카테고리의 다른 글

[SQL 첫걸음] 3장 - 정렬  (0) 2023.09.30
[SQL 첫걸음] 1,2장 - 테이블에서 데이터 검색  (0) 2023.09.23