전문적인 정보를 다루는 것이 아닌 개인적으로 학습한 내용에 대해
포스팅을 했기 때문에 이점을 감안하여 봐주시면 감사하겠습니다👏
함수 이해하기
다른 언어처럼 SQL도 데이터를 조작할 수 있도록 함수를 지원한다. 함수는 데이터를 다룰 때 쓰는데, 보통 데이터를 변환하거나 조작할 수 있게 해준다.
함수로 인해 발생하는 문제
하지만 SQL 함수는 문제가 많다. 대다수의 함수는 DBMS에 매우 종속적이다. 이로 인해, 함수가 지원하는 기능은 대체로 같지만, 이름이나 문법은 DBMS마다 매우 다르다.
또한 SQL 문과 달리 SQL 함수는 DBMS 간 호환성이 매우 낮다. 이로 인해 특정 SQL 구현에 맞추어 짠 코드가 다른 DBMS에서는 동작하지 않을 수 있다.
이로 인해 코드 호환성을 염두에 둔다면 종속적인 함수를 사용하는 것은 지양해야한다. 만약, 사용하기로 했자면 주석을 잘 작성해야한다.
함수 사용하기
1. 문자열을 조작하기 위한 문자 함수
- 문자의 공백을 삭제하거나 추가하는 함수, 대소문자를 바꾸는 함수
2. 수치 데이터로 수학 계산을 시행하기 위한 수치 함수
- 절대값을 반환하거나 대수 계산을 시행하기 위한 함수
3. 날짜와 시간을 조작하기 위한 날짜 함수
- 날짜의 차이를 반환하는 함수, 유효한 날짜인지 확인하는 함수
4. 결과를 사용자 친화적인 형식으로 보여주기 위한 서식 설정 함수
- 현지 언어 형식으로 날짜 표시, 통화와 쉼표에 적절한 기호 추가
5. 사용하고 있는 DBMS 정보를 반환하는 시스템 함수
- 사용자 로그인 정보를 반환하는 함수
문자열 조작 함수
SELECT vend_country, LEFT(vend_country, 2), LENGTH(vend_country), LOWER(vend_country),
LTRIM(vend_country), RIGHT(vend_country, 2), RTRIM(vend_country),
SUBSTRING(vend_country, 3), UPPER(vend_country)
FROM vendors
ORDER BY vend_name;
- LEFT( ) : 문자열 왼쪽에서부터 문자열 일부를 추출
- LENGTH( ): 문자열의 길이를 반환
- LOWER( ): 문자열의 소문자로 변환
- LTRIM( ): 문자열의 왼쪽에 있는 공백 문자를 삭제
- RIGHT( ): 문자열 오른쪽에서부터 문자열 일부를 추출
- RTRIM( ): 문자열의 오른쪽에 있는 공백 문자를 삭제
- SUBSTRING( ): 문자열 일부분 추출
- UPPER( ): 문자열을 대문자로 변환
SOUNDEX( ) 함수
- 문자열을 소리나는 대로 표현하는 문자열 변환 알고리즘, SOUNDEX( )는 어떤 문자열이 입력되었는지보다는 어떻게 발음하는지를 비교하여 비슷한 소리를 내는 문자와 음절로 변환한다.
SELECT vend_country
FROM vendors
WHERE SOUNDEX(vend_country) = SOUNDEX('US');
SELECT vend_country
FROM vendors
WHERE SOUNDEX(vend_country) = SOUNDEX('U');
LIKE와 다르게 문자가 일치해도 발음이 달라 결과가 표시가 되지 않는 것을 볼 수 있다.
날짜와 시간 조작 함수
날짜와 시간 값은 물리적인 저장 공간을 절약할 수 있고, 효율적이면서 빠르게 정렬되거나 필터링 되도록 특별한 형식으로 저장된다. 보통 날짜와 시간을 저장하는데 사용하는 내부 데이터 형식은 우리 응용 프로그램에서는 사용할 수 없는 형식(TIME, TIMESTAMP) 이므로, 날짜 또는 시간을 읽거나 조작하기 위해서는 날짜와 시간 함수가 필요하다.
SELECT order_num
FROM orders
WHERE YEAR(order_date) = 2020;
수치 조작 함수
수치 조작 함수는 말 그대로 수치 데이터를 조작한다. 이 함수는 대수학, 삼각법 또는 기하학 계산에 주로 사용된다.
'Back-end > DB' 카테고리의 다른 글
[MySQL] 와일드카드를 이용한 필터링 (0) | 2021.05.25 |
---|---|
[MySQL] 고급 데이터 필터링 - 연산자 사용 (0) | 2021.05.24 |
[MySQL] 데이터 정렬하기 - ORDER BY (0) | 2021.05.24 |
[MySQL] LIMIT, OFFSET - 페이징시 쿼리 (0) | 2021.05.21 |
[MySQL] DISTINCT - 행의 중복 출력 방지하기 (0) | 2021.05.21 |
댓글