СУБД MySQL оснащена специальными функциями, предназначенными для получения информации о самой системе. Они перечислены в табл. 7.10.
Системные информационные функции
Функции DATABASE(), USER() и VERSION() возвращают информацию о выбранной в данный момент времени базе данных, текущем пользователе и версии работающего сервера MySQL соответственно.
Системные информационные функции
 Функция CONNECTION_ID() определяет идентификатор соединения клиента с сервером, а функция LAST_INSERT_ID() возвращает значение счетчика, которое автоматически гене­рируется MySQL при добавлении в поле, объявленном с атрибутом AUTOINCREMENT. 
Это очень удобно при обработке связей между несколькими таблицами при необходимости использования идентификатора записи в качестве ключа другой таблицы. Это видно из следующего примера.
Системные информационные функции
Функция BENCHMARK() поможет разработчику произвести оценку рабочих характеристик MySQL. Для этого сервер выполняет определенное выражение, заданное число раз. Эта функция всегда возвращает 0 и отчет о времени, которое необходимо для данного подключения клиента к серверу. На основании этих данных можно сделать определенный вывод о рабочих характеристиках сервера.
Системные информационные функции
В этом примере системе MySQL потребовалось 2,08 секунд для выполнения выражения LOG(RAND() * PI()) 999999 раз. Выполнение этой функции через равномерные или неравномерные интервалы времени позволяет разработчику получить исходные данные для оценки производительности сервера.
СУБД MySQL также имеет три функции, которые предназначены специально для блокировки работы клиентов на прикладном уровне. Функция GET_LOCK() принимает два аргумента - имя блокировки и длительность блокировки в секундах - и пытается заблокировать работу клиента на заданное время. При успешном завершении функция возвращает 1, в противном случае - 0 или NULL.
Системные информационные функции
Функция RELEASE_LOCK() предназначена для выполнения обратной функции, отмены блокировки с указанным временем, при успешном завершении она возвращает 1, при сбое - 0 и в случае ошибки - NULL.
Системные информационные функции
Функция IS_FREE_LOCK() проверяет наличие блокировки с указанным именем и возвращает 1 или 0 - в зависимости от того, является блокировка активизированной или свободной.
Системные информационные функции
В определенный момент времени может быть активизировано не более одной блокировки. Последовательность вызовов функции GET_LOCK() снимает активные блокировки.
Системные информационные функции
Системные информационные функции
Функции GET_LOCK() , RELEASE_LOCK() и IS_FREE_LOCK() упрощают синхронизацию работы с базами данных нескольких клиентов MySQL, согласуя семантику блокировки.
Функция FOUND_ROWS() возвращает общее количество строк, выбранных по последнему запросу SELECT. Она особенно полезна при применении с конструкциями SQL_CALC_FOUND_ROWS и LIMIT, т.к. позволяет контролировать количество выбранных строк в результирующем наборе (с LIMIT), одновременно отображая общее количество выбранных записей (конструкция SQL_CALC_FOUND_ROWS функция FOUND_ROWS() ). Рассмотрим следующий простой пример, подтверждающий вышесказанное.
Системные информационные функции
 В этом случае первый запрос из всего результирующего набора выбирает только ог­раниченный поднабор, состоящий из четырех записей. Однако в этом запросе использовалась конструкция SQL_CALC_FOUND_ROWS. Поэтому MySQL сохраняет общее количество выбранных в результирующем наборе строк, и позволяет вывести это число с помощью функции FOUND_ROWS(). Таким образом, второй запрос позволяет получить полную статистику без дополнительного просмотра таблиц.
И, наконец, специализированная функция MASTER_POS_WAIT() предназначена прежде всего для использования на подчиненном сервере MySQL при обеспечении связи "главный-подчиненный". Функция MASTER_POS_WAIT() принимает три аргумента: имя регистрационного журнала, положение в регистрационном журнале и значение тай-маута. Эта функция блокирует главный сервер во избежание доступа к нему в период восстановления подчиненного сервера до указанного журналом состояния. Использование этой функции обычно рассматривается в контексте репликации, о которой можно больше узнать в главе 17, "Механизм репликации MySQL".

Резюме
Эта глава посвящена различным встроенным функциям реляционной СУБД MySQL. Они разбиты на несколько категорий, и особенности каждой из них показаны в соответствующих примерах.
Как видим, MySQL имеет достаточно широкий набор функций, позволяющий пользователям выполнять операции в диапазоне от простейших (получение текущего времени и даты, выполнение простых математических вычислений и т.д.) до самых сложных (вычисление тригонометрических функций, выполнение арифметических операций над датами и временем, кодирование данных). Во многих примерах также было показано, каким образом эти функции могут помочь перевести обработку с прикладного уровня на уровень базы данных, что иногда позволяет повысить производительность всей системы.