7장. SQL 내장 함수
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
함수는 SQL 명령 집합의 특수한 유형의 명령어이며, 각 SQL 방언은 해당 명령 집합을 구현하는 방식이 다릅니다. 함수의 값은 데이터베이스 값 목록의 평균을 구하는 함수와 마찬가지로 입력 매개변수에 의해 결정될 수 있습니다. 그러나 많은 함수는 어떤 유형의 입력 매개변수도 사용하지 않습니다. 현재 시스템 시간을 반환하는 함수 는 이러한 함수의 예입니다. 함수는 테이블이나 행 집합을 반환할 수도 있습니다. 이러한 유형의 함수를 CURRENT_TIME집합 반환 함수라고도 합니다.
SQL 표준은 여러 가지 유용한 기능을 지원합니다. 이 장과 다음 장에서는 이러한 함수를 다루며 각 플랫폼에 대한 자세한 설명과 예제를 제공합니다. 태양 아래 모든 함수를 다루지는 않지만 가장 일반적으로 사용되는 함수에 초점을 맞출 것입니다. 또한 각 데이터베이스는 SQL 표준의 범위를 벗어나는 자체 내부 함수를 많이 지원하며, 각 공급업체별 함수 목록은 각 장의 마지막에 제공됩니다.
MariaDB와 MySQL의 경우, MariaDB가 MySQL 동작에서 벗어나는 경우를 제외하고는 MySQL만 참조합니다.
대부분의 데이터베이스 플랫폼은 사용자 정의 함수(UDF) 생성 기능을 지원합니다. UDF에 대한 자세한 내용은 9장을 참조하세요. JSON 및 XML 함수는 10장에서 다루며 이 장이나 다음 장에서는 다루지 않습니다.
이 챕터 사용 방법
이 장에서 함수를 연구할 때
특정 플랫폼 구현을 찾고 있는 경우에도 SQL 구문을 확인하고 설명을 읽어보세요.
플랫폼별 구현 정보를 읽어보세요.
표준과 다르지 않은 공급업체의 구현 요소는 개별 플랫폼 섹션에서 다루지 않으며, 이 섹션에서는 표준과의 차이점만 설명합니다. 특정 플랫폼 섹션에서 제공되지 않는 자세한 내용은 SQL 구문 섹션을 참조하세요.
기능 유형
함수를 그룹으로 분류하는 방법에는 여러 가지가 있습니다. 다음 하위 섹션에서는 함수의 작동 방식을 이해하는 데 중요한 구분을 설명합니다.
결정론적 및 비결정론적 함수
함수는 결정론적 또는 비결정론적일 수 있습니다. 결정론적 함수는 동일한 입력값이 주어지면 항상 동일한 결과를 반환합니다. 비결정적 함수는 동일한 입력값이 제공되더라도 호출할 때마다 다른 결과를 반환할 수 있습니다.
주어진 입력이 항상 동일한 출력을 반환하는 것이 왜 중요할까요? 그것은 뷰와 인덱스, 사용자 정의 함수 및 저장 프로시저에서 함수를 사용하는 방식과 관련이 있습니다. 제한 사항은 구현마다 다르지만, 이러한 객체는 정의 코드 내에서 결정론적 함수만 허용하는 경우도 있습니다. 예를 들어, 많은 데이터베이스에서는 열 표현식에 인덱스를 만들 수 있지만, 표현식에 비결정론적 함수가 포함되지 않은 경우에만 허용됩니다. 자세한 내용은 해당 플랫폼의 설명서를 확인하세요.
집계 함수
함수를 분류하는 또 다른 방법은 함수가 한 번에 한 행의 ...