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