- •Лекция: Введение в MySql Содержание
- •Концепции баз данных Системы управления файлами
- •Иерархические базы данных
- •Сетевые базы данных
- •Реляционные базы данных
- •Объектно-ориентированные базы данных
- •Объектно-реляционные базы данных
- •2. Лекция: Подготовка к работе с MySql Содержание
- •Инсталляция вручную
- •Компиляция программы
- •Предоставление привилегий
- •Лекция: Создание базы данных, основы работы с таблицами
- •Создание базы данных в Windows
- •Создание базы данных в Linux
- •Команда create database
- •Работа с таблицами
- •Использование базы данных
- •Создание таблицы
- •Синтаксис команды create table
- •Удаление таблиц
- •Синтаксис команды drop table
- •Лекция: Типы данных столбцов
- •Числовые типы данных
- •Типы данных даты и времени
- •Типы данных datetime, date и timestamp
- •Тип данных time
- •Тип данных year
- •Лекция: Работа с таблицами. Внесение, извлечение, поиск и удаление данных
- •Запись данных в таблицы
- •Задания
- •Возможные решения
- •Выборка данных с помощью условий
- •Операторы больше и меньше
- •Задания
- •Возможные решения
- •Предложение having
- •Задание
- •Возможное решение
- •Удаление записей из таблицы
- •Лекция: Логические операторы
- •Задания
- •Возможные решения
- •8. Лекция: Математические функции
- •9. Лекция: Работа с датой и временем
- •Особенности типа данных Date
- •Операции с датами
- •10. Лекция: Работа со строками
- •Строковые функции
- •Ascii(строка) ord(строка)
- •Concat(строка1, строка2, ...)
- •Concat_ws(разделитель, строка1, строка2, ...)
- •Conv(n, основание_начальное, основание_конечное)
- •Elt(n, строка1, строка2, строкаЗ, ...)
- •Field(строка, строка1, строка2, строка3, ...)
- •Find_in_set(строка, список_строк)
- •Substring_index(строка, разделитель, количество)
- •Trim([[both | leading | trailing] [удаляемая_строка] from] строка)
- •Uncompress(строка_для_распаковки)
- •Unhex(строка)
- •Upper(строка) ucase(строка)
- •11. Лекция: Дополнительные функции MySql
- •Битовые функции
- •Побитовое или ( | )
- •Побитовое и ( & )
- •Функции шифрования
- •Aes_encrypt(строка, строка_ключа) aes_decrypt(зашифрованная_строка, строка_ключа)
- •Decode(зашифрованная_строка, строка_пароля)
- •Encode(строка, строка_пароля)
- •Des_decrypt(зашифрованная_строка [, строка_ключа])
- •Информационные функции benchmark(количество, выражение)
- •Charset(строка)
- •Coercibility(строка)
- •Collation(строка)
- •Прочие функции
- •Get_lock(строка, таймаут)
- •Inet_aton(выражение)
- •Inet_ntoa(выражение)
- •Is_free_lock(строка)
- •Master_pos_wait(имя_журнала, позиция_в_журнале [, таймаут])
- •Release_lock(строка)
11. Лекция: Дополнительные функции MySql
Битовые функции
Побитовое ИЛИ ( | )
Побитовое И ( & )
Побитовый XOR (побитовое сложение по модулю 2) ( ^ )
Сдвиг числа влево ( << )
Сдвиг числа вправо ( >> )
Инвертировать биты ( ~ )
BIT_COUNT(N)
Функции шифрования
AES_ENCRYPT(строка, строка_ключа)
AES_DECRYPT(зашифрованная_строка, строка_ключа)
DECODE(зашифрованная_строка, строка_пароля)
ENCODE(строка, строка_пароля)
DES_DECRYPT(зашифрованная_строка [, строка_ключа])
DES_ENCRYPT(строка[, (номер_ключа | строка_ключа)])
ENCRYPT(строка [, нач])
MD5(строка)
PASSWORD(строка)
Информационные функции
BENCHMARK(количество, выражение)
CHARSET(строка)
COERCIBILITY(строка)
COLLATION(строка)
CONNECTION_ID()
CURRENT_USER()
DATABASE()
FOUND_ROWS()
LAST_INSERT_ID()
LAST_INSERT_ID(выражение)
USER()
SESSION_USER()
SYSTEM_USER()
VERSION()
Прочие функции
FORMAT(X,D)
GET_LOCK(строка, таймаут)
INET_ATON(выражение)
INET_NTOA(выражение)
IS_FREE_LOCK(строка)
MASTER_POS_WAIT(имя_журнала, позиция_в_журнале [, таймаут])
RELEASE_LOCK(строка)
UUID()
Битовые функции
MySQL использует для двоичных операций 64-битовые величиныBIGINT, следовательно, для двоичных операторов максимальный диапазон составляет 64 бита.
Побитовое или ( | )
mysql> SELECT 29 | 15;
-> 31
Побитовое и ( & )
mysql> SELECT 29 & 15;
-> 13
Побитовый XOR (побитовое сложение по модулю 2) ( ^ )
mysql> SELECT 1 ^ 1;
-> 0
mysql> SELECT 1 ^ 0;
-> 1
mysql> SELECT 11 ^ 3;
-> 8
Сдвиг числа влево ( << )
mysql> SELECT 1 << 2;
-> 4
Сдвиг числа вправо ( >> )
mysql> SELECT 4 >> 2;
-> 1
Инвертировать биты ( ~ )
mysql> SELECT 5 & ~1;
-> 4
BIT_COUNT(N)
Возвращает количество битов аргумента N, которые установлены в единицу
mysql> SELECT BIT_COUNT(29);
-> 4
Функции шифрования
Функции, описанные в данном разделе, шифруют и дешифруют значения данных. Если вы хотите сохранять результаты функции шифрования, которые могут иметь произвольные байтовые значения, применяйте столбцы типа BLOBвместо CHAR или VARCHAR, чтобы избежать потенциальных проблем с удалением завершающих пробелов, которые изменяют значения данных.
Aes_encrypt(строка, строка_ключа) aes_decrypt(зашифрованная_строка, строка_ключа)
Эти функции позволяют выполнять шифрование и дешифрацию данных с использованием официального алгоритма AES (Advanced Encryption Standard), ранее известного как "Rijndael". Применяется кодирование с 128-разрядным ключом, но можно расширить его до 256 разрядов, должным образом изменив исходные тексты. Длина ключа 128 бит выбрана, поскольку он работает намного быстрее и при этом обеспечивает приемлемый уровень безопасности.
Входные аргументы могут иметь любую длину. Если любой из них равен NULL, результатом функции также будет NULL.
Поскольку AES - алгоритм блочного типа, дополнение применяется для строк с нечетным количеством символов, и поэтому длина результирующей строки может быть рассчитана как 16* (trunc (длина_строки/16) +1).
Если функция AES_DECRYPT() обнаруживает неверные данные или неправильное дополнение, она возвращает NULL. Однако существует вероятность, что AES_DECRYPT() вернет значение, не равное NULL (возможно, "мусор"), если входные данные или ключ неверны.
Вы можете использовать AES-функции для сохранения данных в зашифрованной форме, модифицировав существующие запросы:
INSERT INTO t VALUES (1, AES_ENCRYPT('text', 'password'));
Можно обеспечить даже более высокий уровень безопасности, если не передавать значение ключа для каждого запроса, а сохранять его в переменной сервера во время подключения, например:
SELECT @password:='my password';
INSERT INTO t VALUES (1, AES_ENCRYPT('text', 'password'));
Функции AES_ENCRYPT() и AES_DECRYPT() были добавлены в MySQL 4.0.2 и могут рассматриваться как наиболее криптографически безопасные функции, доступные в MySQL на текущий момент.