[손에 잡히는 10분 SQL - 벤 포터 지음, 박남혜 옮김] 책의 학습 후 정리자료입니다.
📍 함수 이해하기
- SQL도 데이터를 조작할 수 있도록 함수를 지원한다.
- 함수는 데이터를 변환하거나 조작할 수 있게 해준다.
📌 함수로 인해 발생하는 문제
- SELECT ~ 같은 SQL 문은 거의 모든 DBMS에서 똑같이 지원한다.
- 하지만, 대다수 함수는 DBMS에 매우 종속적이다.
- SQL 문과 달리 SQL 함수는 DBMS 간 호환성이 매우 낮다.
- 즉, 특정 DBMS에 맞게 작성한 SQL 코드가 다른 DBMS에서 동작하지 않을 수 있다.
💡 함수를 사용해야만 할까?
- 만약 SQL 문에서 함수를 사용하기로 했다면, 코드에 주석을 잘 작성해야 한다.
- 다른 개발자가 이 코드가 어떤 SQL 실행 환경에서 동작하도록 작성한 것인지 알 수 있을 것이다.
📍 함수 사용하기
- 대부분의 SQL 실행 환경은 다음에 나오는 유형의 함수를 지원한다.
- 문자열을 조작하기 위한 문자 함수
- 수치 데이터로 수학 꼐산을 시행하기 위한 수치 함수
- 날짜와 시간을 조작하기 위한 날짜 함수
- 결과를 사용자 친화적인 형식으로 보여주기 위한 서식 설정 함수
- 사용하고 있는 DBMS 정보를 반환하는 시스템 함수
📌 문자열 조작 함수
함수 | 설명 |
---|
LEFT() | 문자열 왼쪽에서부터 문자열 일부를 추출 |
LENGTH() | 문자열의 길이를 반환 |
LOWER() | 문자열을 소문자로 변환 |
LTRIM() | 문자열의 왼쪽에 있는 공백 문자를 삭제 |
RIGHT() | 문자열 오른쪽에서부터 문자열 일부를 추출 |
RTRIM() | 문자열의 오른쪽에 있는 공백 문자를 삭제 |
SUBSTR() or SUBSTRING() | 문자열의 일부분 추출 |
SOUNDEX() | 문자열의 SOUNDEX 값을 반환 |
UPPER() | 문자열을 대문자로 변환 |
- UPPER() 는 문자열을 모두 대문자로 변환한다.
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;

📌 날짜와 시간 조작 함수
- 날짜와 시간은 각 DBMS 마다 특별한 특성을 지닌 데이터형을 사용한다.
- 날짜와 시간 값은 물리적인 저장공간을 절약할 수 있고, 효율적이면서 빠르게 정렬되거나 필터링 되도록 특별한 형식으로 저장된다.
- 보통 날짜와 시간을 저장하는데 사용하는 내부 데이터 형식은 여러분의 응용 프로그램에서는 사용할 수 없는 형식이므로, 날짜 또는 시간을 읽거난 조작하기 위해서는 날짜와 시간 함수가 필요하다.
- 이 때문에 날짜와 시간 조작 함수는 SQL 언어에서도 매우 중요한 기능을 차지하지만, 날짜와 시간 조작 함수는 일관성이 매우 적고, 각 DBMS 마다 호환이 거의 되지 않는다.
SELECT order_num
FROM Orders
WHERE EXTRACT(year FROM order_date) = 2020;

📌 수치 조작 함수
- 수치 조작 함수는 수치 데이터를 조작한다.
- 대형 DBMS에서 지원하는 수치 조작 함수는 대부분 비슷하다.
함수 | 설명 |
---|
ABS() | 숫자의 절대값을 반환한다. |
COS() | 숫자의 코사인값을 반환한다. |
EXP() | 숫자의 지숫값을 반환한다. |
PI() | 숫자의 파이값을 반환한다. |
SIN() | 숫자의 사인값을 반환한다. |
SQRT() | 숫자의 제곱근을 반환한다. |
TAN() | 숫자의 탄젠트값을 반환한다. |