SQL 함수란
1. SQL 함수란?
SQL 함수는 미리 정의된 기능을 수행하는 구문으로, 데이터 처리와 변환을 간편하게 할 수 있게 도와줍니다. SQL 함수는 크게 단일 행 함수(한 행에 대해 하나의 값을 반환)와 그룹 함수(여러 행에 대해 하나의 값을 반환)로 나뉩니다. 이 장에서는 SQLite에서 자주 사용되는 SQL 함수들을 다룰 것입니다.
1.1 데이터 타입 관련 함수
SQLite는 동적 타입 시스템을 사용하므로, 명시적인 데이터 타입 함수가 제한적입니다. 그러나 값의 타입을 확인하거나 변환할 때 사용할 수 있는 함수들이 있습니다.
- typeof(값): 값의 데이터 타입을 문자열로 반환합니다.
- cast(값 AS 타입): 값을 지정된 타입으로 변환합니다.
SELECT typeof(123), typeof('abc'), typeof(4.56);
SELECT cast('123' AS INTEGER), cast(456 AS TEXT);
SELECT typeof(123), typeof('abc'), typeof(4.56);
SELECT cast('123' AS INTEGER), cast(456 AS TEXT);
1.2 문자열 처리 함수
문자열을 다룰 때 사용하는 함수는 데이터 검색과 변환 시 유용합니다.
- lower('ABC') →
'abc'
: 문자열을 소문자로 변환합니다. - upper('abc') →
'ABC'
: 문자열을 대문자로 변환합니다. - substr('hello world', 1, 5) →
'hello'
: 문자열의 일부분을 추출합니다. 첫 번째 숫자는 시작 위치, 두 번째 숫자는 추출할 문자열의 길이를 나타냅니다. - replace('hello world', 'world', 'SQL') →
'hello SQL'
: 문자열의 일부를 다른 문자열로 대체합니다. - length('hello') →
5
: 문자열의 길이를 반환합니다. - instr('ABCDEF', 'B') →
2
: 특정 문자가 문자열 내에서 처음 등장하는 위치를 반환합니다. SQLite에서는 인덱스가 1부터 시작합니다.
SELECT lower('HELLO'), upper('world'), substr('SQLite', 1, 3), replace('Hello World', 'World', 'SQLite'), length('Function'), instr('ABCDEF', 'D');
SELECT lower('HELLO'), upper('world'), substr('SQLite', 1, 3), replace('Hello World', 'World', 'SQLite'), length('Function'), instr('ABCDEF', 'D');
1.3 숫자 관련 함수
숫자를 처리할 때 사용할 수 있는 다양한 수학적 함수가 있습니다.
- round(123.456, 2) →
123.46
: 숫자를 반올림합니다. 두 번째 인자는 소수점 자릿수를 나타냅니다. - abs(-10) →
10
: 절대값을 반환합니다. - random(): -9223372036854775808과 +9223372036854775807 사이의 정수를 무작위로 반환합니다.
SELECT round(123.456, 2), abs(-10), random();
-- 0부터 100 사이의 랜덤 정수 생성
SELECT abs(random()) % 101;
SELECT round(123.456, 2), abs(-10), random();
-- 0부터 100 사이의 랜덤 정수 생성
SELECT abs(random()) % 101;
1.4 그룹 함수
그룹 함수는 여러 행의 데이터를 집계할 때 사용됩니다. 일반적으로 GROUP BY
절과 함께 사용됩니다.
- count(): 행의 개수를 셉니다. NULL 값을 제외하고 계산합니다.
- sum(컬럼명): 특정 열의 값을 모두 더합니다.
- avg(컬럼명): 특정 열의 평균 값을 계산합니다.
- min(컬럼명): 특정 열의 최소 값을 반환합니다.
- max(컬럼명): 특정 열의 최대 값을 반환합니다.
SELECT SUM(가격) FROM 상품;
SELECT AVG(가격) FROM 상품;
SELECT MIN(가격), MAX(가격) FROM 상품;
SELECT COUNT(*) from 상품;
SELECT SUM(가격) FROM 상품;
SELECT AVG(가격) FROM 상품;
SELECT MIN(가격), MAX(가격) FROM 상품;
SELECT COUNT(*) from 상품;
SQL 함수는 데이터를 효율적으로 처리하고 분석하는 데 필수적인 도구입니다. 각 함수는 데이터 타입이나 목적에 맞게 사용할 수 있으며, 여러 함수를 조합하여 복잡한 계산이나 변환도 손쉽게 수행할 수 있습니다. SQLite에서는 일부 함수가 제한적일 수 있으므로, 공식 문서를 참조하여 사용 가능한 함수를 확인하는 것이 좋습니다.