В MySQL начиная с версии 5.0 поддерживаются встроенные функции, определённые пользователем функции и хранимые процедуры. Хотя все эти инструменты доступны разработчику, они используются ещё не достаточно активно. В данной статье описываются 11 функций MySQL, которые выполняют часто используемые при разработке проектов операции .
Хэш функции
MySQL поддерживает следующие хэш функции:
MD5(string);
SHA(string);
SELECT MD5('area72') as md5,
SHA('area72') as sha
-- OUTPUT: MD5 e82b6069c7e968485f0de6d756d622dd
-- OUTPUT: SHA 4feb5546a60f18df755395d1ff39e29a2cab7234
Функции криптографии
Для многих станет открытием, что MySQL поддерживает базовые криптографические функции для алгоритмов AES и DES. Такие функции обеспечивают высокий уровень безопасности, особенно алгоритм AES, и их рекомендуется использовать для улучшения устойчивости приложений ко взлому.
AES_ENCRYPT(string, key) и AES_DECRYPT(string, key);
DES_ENCRYPT(string, key) и DES_DECRYPT(string, key);
ENCODE(string, key) и DECODE(string, key);
SELECT AES_DECRYPT(
AES_ENCRYPT('текст для шифрования', 'ключ'),
'ключ') as encryption;
-- OUTPUT: текст для шифрования
Описание: Запрос выводит ту же самую строку, которую мы отправляли на шифрование, потому что как только произошло шифрование строки, тут же мы производим дешифрование в оригинальный текст.
AES_ENCRYPT() и AES_DECRYPT() представляют собой наиболее устойчивый криптографический алгоритм, который доступен в MySQL.
Функции даты
Некоторые базовые функции работы с датами могут облегчить поиск и сравнение данных:
ADDDATE()
CURDATE()
SELECT ADDDATE('2010-05-01', 7) as nextweek, CURDATE() as today;
SELECT ADDDATE(CURDATE(), 7) as nextweek;
-- OUTPUT: 2010-05-08, 2010-05-01
-- OUTPUT: 2010-05-08
В примере функции используются вместе. Второй пример отображает рекомендуемый метод использования.
Функции для работы с текстом
COMPRESS() и UNCOMPRESS()
Хранение длинного текста в вашей базе данных влияет и на производительсноть системы и на требования к объему дискового пространства. Таким образом, рекомендуется сжимать длинный текст с помощью функции compress, а для использования — проводить обратное преобразование с помощью функции uncompress.
SELECT LENGTH(COMPRESS(REPEAT('A', 1000000)));
-- OUTPUT: ~1000
Как вы видите, 1 миллион символов A ’сжимается в строку размером примерно в 1000 позиций.
REGEXP()
Да! REGEXP доступен в запросах MySQL, в представлении не нуждается.
id name
1 Samsung Widescreen 1080p
2 Geforce GT 8800
3 Mini Tv
4 Audio System
5 HTC PRO 2
SELECT id FROM table WHERE name REGEXP '[0-9]';
-- OUTPUT: 1, 2, 5
С помощью запроса, описанного выше выделяются id элементов, которые имеют числа в имени. Хотя пример является очень простым, но можно представить возможности использования REGEXP в запросах..
Прочие функции
Данные две функции также не нуждаются в представлении
RAND()
COUNT()
SELECT * FROM table ORDER BY RAND();
SELECT COUNT(*) FROM table;
Функция RAND() наиболее часто используется для представления результатов выборки из таблицы в случайном порядке, например, для вывода случайных изображений в галерею на веб странице.
Функция COUNT() возвращает общее количество строк в запросе.