
- •Система управления базами данных MySql
- •Тема 1: Архитектура и назначение сервера. Основные функции
- •1.1. Введение в субд MySql
- •1.2. Основные программы и утилиты MySql
- •1.3. Инсталляция MySql на разных платформах
- •Контрольные вопросы
- •Тема 2: Основные типы данных и операторы субд MySql
- •Типы данных
- •Переменные
- •Операторы
- •Контрольные вопросы
- •Тема 3: Утилита mysql
- •3.1 Функции mysql
- •3.2 Работа с базами данных и таблицами
- •Контрольные вопросы
- •Тема 4: Выборка данных
- •Простые запросы
- •Объединение таблиц
- •Объединение таблицы с собой
- •Теоретико-множественные операции с таблицами
- •Подзапросы
- •Контрольные вопросы
- •Тема 5: Встроенные функции MySql
- •5.1 Общие понятия
- •5.2 Отладка и конфигурирование
- •Управляющие функции
- •If(условие, значение истина,значение_ложь)
- •Ifnull( проверяемое_значение, возвращаемое _значение)
- •Статистические и математические функции
- •Функции работы с датой и временем
Переменные
Переменные – это символические имена, ссылающиеся на изменяемые значения. Имя переменной может состоять из чисел, букв, знаков подчеркивания и доллара, а также точек. К нему всегда добавляется символ @, чтобы не возникала путаница с именами столбцов и ключевыми словами.
В MySQL переменные не требуют инициализации. Если происходит обращение к неопределенной переменной, ей присваивается значение NULL. По окончании сеанса переменные автоматически удаляются.
Переменные можно использовать везде, где допускается использование имен столбцов. Запрещается указывать переменные в предложениях LIMIT и IGNORE, а также использовать переменные для именования столбцов.
Пример.
mysql> SET @Special_ID=2;
mysql> SELECT ID, NAME FROM table1 WHERE ID=@Special_ID;
Программа MySQL назначает переменной тип лишь в момент инициализации, поэтому нужно внимательно следить за соответствием типов. Даже если переменная содержит число, но ее тип был определен как строковый, в ходе числовых операций потребуется выполнять преобразование типов, что может сказаться на производительности.
Разрешается присваивать переменной значение прямо в инструкции SELECT. Для этого предназначен оператор :=. Правым операндом может быть произвольное выражение, допустимое в списке возвращаемых столбцов.
Пример.
SELECT @Special_ID:=ID FROM table1 WHERE Name= ‘Name2’;
SELECT ID, Name FROM tablr1 WHERE ID=@Special_ID;
Операция присваивания в предложении SELECT выполняется тогда, когда строка форматируется и посылается клиенту. Следовательно, в предложении WHERE будет использовано то значение переменной, которое записалось в нее последним.
Операторы
Операторы – это знаки записи математических и логических операций. Большинство операторов бинарно: один операнд записывается слева и один – справа. Существуют такжу унарные операторы, принимающие только один операнд.
За исключением оператора присваивания, все остальные операторы делятся на четыре категории: арифметические, реляционные, логические и побитовые.
Арифметические операторы выполняют простейшие арифметические операции, реляционные – операции сравнения. С помощью логических операторов строятся булевы выражения, а побитовые работают с битовым представлением чисел.
Если оба операнда принадлежат к одному типу, тип результата определяется тривиально. Строки, участвующие в арифметических выражениях, преобразуются в числа. Целые числа преобразуются в числа с плавающей запятой, а числа – в значения дата/время.
Арифметические операторы.
Арифметическими операндами могут быть только числа.
Таблица 2.4 – Арифметические операторы
Оператор |
Операция |
+ |
Сложение |
- |
Вычитание и унарное отрицание |
* |
Умножение |
/ |
Деление |
% |
Деление по модулю |
Логические операторы.
Логические операторы работают с булевыми величинами. У каждого оператора есть две формы записи: словесная и символьная.
Таблица 2.5 – Логические операторы
Оператор |
Операция |
AND, && |
Логическое умножение (И) |
OR, │ |
Логическое сложение (ИЛИ) |
NOT, ! |
Логическое отрицание (НЕ) |
Побитовые операторы.
Побитовые операторы работают с числами, как с цепочками битов.
Таблица 2.6 – Побитовые операторы
Оператор |
Операция |
\ |
Побитовое сложение (ИЛИ |
& |
Побитовое умножение (И)) |
<< |
Сдвиг всех битов влево |
>> |
Сдвиг всех битов вправо |
~ |
Побитовое отрицание (НЕ) |
Побитовые операции И, ИЛИ, НЕ работают также, как и их логические эквиваленты, но для каждой пары битов выполняется отдельная операция.
Операторы сравнения.
Если в операциях сравнения участвует значение даты/времени, программа MySQL попытается привести к этому типу второй операнд. Такое возможно для строки или числа состоящего из восьми цифр. Первые четыре цифры считаются номером года, следующие две номером месяца, а последние две – номером дня. В случае когда операнд представлен в другом формате, произойдет противоположное преобразование: значение даты/времени – в строку или число.
По умолчанию строки сравниваются в алфавитном порядке без учета регистра. Ключевое слово BINARY заставляет учитывать регистр при сортировке строк.
Значения, указанные в скобках специальных операторов сравнения, приводятся к типу левого операнда. Если, например, целое число сравнивается с группой чисел с плавающей запятой, то последние будут округлены.
Метасимвол % в шаблоне поиска строковых данных соответствует произвольному числу символов, а метасимвол _ - одиночному символу. Остальные символы воспринимаются буквально. Если необходимо выполнить сравнение с самим из этих символов, то нужно защитить их от интерпретации с помощью обратной косой черты. Можно воспользоваться предложением ESCAPE, которое задает символ, служащий началом управляющих последовательностей в данном конкретном шаблоне.
Таблица 2.7 – Операторы сравнения
Оператор |
Проверка |
< |
Меньше |
> |
Больше |
<= |
Меньше или равно (не больше) |
>= |
Больше или равно (не меньше) |
BETWEEN минимум AND максимум |
Принадлежать диапазону |
IN (…) |
Членство в множестве |
NOT IN (…) |
Отсутствие членства в множестве |
= |
Равно |
<=> |
Не равно (допускается сравнение со значение NULL) |
LIKE |
Соответствие шаблону |
NOT LIKE |
Не соответствие шаблону |
REGEXP, RLIKE |
Соответствие регулярному выражению |
NOT REGEXP, NOT RLIKE |
Не соответствие регулярному выражению |
!=, <> |
Не равно |
IS NULL |
Равно NULL |
IS NOT NULL |
Не равно NULL |
В регулярных выражениях применяется специальный язык описания шаблонов, они всегда чувствительны к регистру символов.