Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб-1-2-теория.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Прочие функции

BENCHMARK(количество, выражение)

Функция BENCHMARK() выполняет выражение в точности количество раз. Она может использоваться для определения того, насколько быстро MySQL выполняет выражение. Возвращаемый результат всегда равен 0. Предполагаемое применение - в среде клиента mysql, который сообщает время выполнения запроса:

mysql> SELECT BENCHMARK(1000000,ENCODE("hello","goodbye"));

+----------------------------------------------+

| BENCHMARK(1000000,ENCODE("hello","goodbye")) |

+----------------------------------------------+

| 0 |

+----------------------------------------------+

1 row in set (4.74 sec)

Время, которое сообщает mysql - это время обслуживания клиента, а не потраченное центральным процессором время на стороне сервера. Рекомендуется выполнить BENCHMARK() несколько раз, и интерпретировать результат в зависимости от степени загруженности сервера.

CHARSET(строка)

Возвращает набор символов аргумента строка.

mysql> SELECT CHARSET('abc');

-> 'latinl'

mysql> SELECT CHARSET(CONVERT('abc' USING utf8));

-> 'utf8'

mysql> SELECT CHARSET(USER());

-> 'utf8'

CONNECTION_ID()

Возвращает идентификатор соединения (идентификатор потока) текущего сеанса. Каждое клиентское соединение получает свой собственный уникальный идентификатор.

mysql> SELECT CONNECTION_ID();

-> 23786

LAST_INSERT_ID(); LAST_INSERT_ID(выражение)

Возвращает последнее автоматически сгенерированное значение, которое было вставлено в столбец AUTO_INCREMENT.

mysql> SELECT LAST_INSERT_ID();

-> 195

Последний идентификатор, который был сгенерирован, поддерживается на сервере на основе соединений. Это означает, что значение, возвращаемое клиенту, соответствует последнему сгенерированному значению AUTO_INCREMENT в сеансе данного клиента. Оно никак не может быть затронуто другими клиентами, равно как не требует блокировок или транзакций.

Значение, возвращаемое LAST_INSERT_ID() не изменяется, если вы обновляете столбец AUTO_INCREMENT в строке не с помощью "магических" значений (то есть, не NULL и не 0).

Если вы вставляете много строк одним оператором, LAST_INSERT_ID() возвращает значение для первой вставленной строки. Цель этого состоит в том, чтобы облегчить воспроизведение того же оператора INSERT на другом сервере.

Если указан аргумент выражение, значение аргумента возвращается функцией и запоминается как следующее значение, которое LAST_INSERT_ID() вернет при следующем вызове. Это можно использовать для эмуляции последовательностей:

  • Создать таблицу для хранения счетчика последовательности и инициализировать его:

mysql> CREATE TABLE sequence (id INT NOT NULL);

mysql> INSERT INTO sequence VALUES(0);

  • Использовать таблицу для генерации последовательности чисел:

mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+l);

mysql> SELECT LAST_INSERT_ID();

Оператор UPDATE увеличивает счетчик последовательности и заставляет следующий вызов LAST_INSERT_ID() возвращать измененное значение.

Вы можете генерировать последовательности без вызова LAST_INSERT_ID(), но польза от ее применения заключается в том, что значение идентификатора поддерживается сервером как последнее автоматически сгенерированное значение.

Это обеспечивает безопасное использование в многопользовательской среде, поскольку множество клиентов могут отправлять операторы UPDATE и получать свои собственные значения последовательности через оператор SELECT (или mysql_insert_id()), никак не влияя и не подвергаясь влиянию других клиентов, для которых генерируются их собственные значения последовательности.

USER(); SESSION_USER(); SYSTEM_USER()

Возвращает имя текущего пользователя MySQL и имя хоста, с которого он подключился.

mysql> SELECT USER();

-> 'davida@localhost'

Значение представляет имя пользователя, которое было указано во время подключения к серверу, и имя компьютера-хоста, с которого произошло подключение. Возвращаемое значение может отличаться от того, которое выдает CURRENT_USER().

Вы можете извлечь имя пользователя, независимо от того, включает ли значение имя хоста или нет, следующим образом:

mysql> SELECT SUBSTRING_INDEX(USER(),'@',1);

-> 'davida'

VERSION()

Возвращает строку, содержащую информацию о версии сервера MySQL:

mysql > SELECT VERSION();

-> '4.1.2-alpha-log'

Следует отметить, что если строка версии заканчивается на '-log', это означает, что регистрация в журнале включена.

FORMAT(X,D)

Форматирует число X в формате, подобном '#,###,###.##', округленное до D разрядов, и возвращает результат в виде строки. Если D равно 0, результат не имеет десятичной точки или дробной части.

mysql> SELECT FORMAT(12332.123456, 4) ;

-> '12,332.1235'

mysql> SELECT FORMAT(12332.1,4) ;

-> '12,332.1000'

mysql> SELECT FORMAT(12332.2,0) ;

-> '12,332'

Существует ряд других дополнительных функций, например, функции, которые шифруют и дешифруют значения данных. Мы оставляем их для самостоятельного изучения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]