
- •Система управления базами данных 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( проверяемое_значение, возвращаемое _значение)
- •Статистические и математические функции
- •Функции работы с датой и временем
If(условие, значение истина,значение_ложь)
Функция возвращает разные значения в зависимости от того, истинным или ложным является проверяемое выражение. Результат проверки приводится к целому типу.
Как и в случае конструкции CASE, тип результата функции IF нельзя определить заранее. Если одно из возвращаемых значений — строка, результат будет строковым.
Если же это условие не выполняется, но одно из значений является числом с плавающей запятой, то и результат будет аналогичным. В противном случае оба значения приводятся к целочисленному типу.
Ifnull( проверяемое_значение, возвращаемое _значение)
Функция возвращает проверяемое значение, если оно не равно NULL. В противном случае возвращается второй аргумент.
MASTER_POS_WAIT(имя, позиция)
Функция дожидается, пока подчиненный сервер синхронизируется с главным сервером в процессе репликации. Необходимо указать имя журнального файла и позицию, которой должен достигнуть подчиненный сервер. Если данный компьютер не сконфигурирован в качестве главного сервера, функция немедленно возвращает NULL. Если же подчиненный сервер еще не запущен, функция блокируется до тех пор, пока сервер не запустится и не достигнет указанной позиции журнального файла.
Функция возвращает число событий, зарегистрированных в процессе ожидания.
NULLIF(проверяемое_значение 1,проверяемое_значение2)
Функция возвращает NULL, если оба проверяемых значения равны друг другу. В противном случае возвращается первый аргумент. С помощью этой функции удобно преобразовывать значения 0 в NULL.
RELEASE_LOCK(имя)
Данная функция снимает указанную именованную блокировку. Если блокировка не была зарегистрирована, возвращается значение NULL.
Статистические и математические функции
Некоторые статистические функции мы с вами уже рассмотрели ранее при описании запросов с группировкой. Сейчас добавим еще несколько.
BIT_AND(столбец) выполняет побитовое умножение всех элементов группы и возвращает результат в виде целого числа.
BIT_OR(столбец) выполняет побитовое сложение всех элементов группы и возвращает результат в виде целого числа.
STD(…) вычисляет среднее отклонение элементов группы.
Описанные ниже функции выполняют различные математические операции. В качестве аргумента большинство из них принимает числа с плавающей запятой и возвращает результат аналогичного типа.
CELING(число) - округляет число до ближайшего большего целого числа.
FLOOR(число) - округляет число до ближайшего меньшего целого числа.
GREATEST(…) - возвращает наибольшее значение из списка. Эта функция может работать как с числами, так и со строками.
LEATEST(…) - возвращает наименьшее значение из списка. Она также может работать как с числами, так и со строками.
ROUND(число[,точность]) – округляет число с плавающей запятой до целого числа или, если указан второй аргумент, до заданного количества цифр после запятой.
TRUNCATE(число, точность) – усекает число до требуемой точности.
Функции работы с датой и временем
Описанные ниже функции работают со значениями даты/времени. Будучи извлеченными из базы данных, эти значения приводятся к целочисленному или строковому типу, в зависимости от контекста. Например, функция NOW по умолчанию возвращает строку вида 12:59:58", но может вернуть и число вида если по контексту требуется целое число.
Любая функция, ожидающая значение даты или времени, понимает значение, в котором указана как дата, так и время.
CURRENT_DATE - эта функция возвращает значение текущей даты. Она эквивалентна функции CURDATE(), но не требует скобок.
CURENT_TIMESTAMP - эта функция возвращает значение текущих даты и времени. Она эквивалентна функции NOW(), но не требует скобок.
CURRENT_TIME - эта функция возвращает значение текущего времен. Она эквивалентна функции CURTIME().
DATE_FORMAT(дата, формат).
Эта функция форматирует даты в соответствии с заданной спецификацией. Строка формата может содержать произвольное число кодов, начинающихся с символа % и обозначающих тот или иной компонент даты. Остальные символы попадают в возвращаемую строку без изменения.
Таблица 5.1 – Коды форматов
Код |
Описание |
Примеры |
%а |
Сокращенное название дня недели |
Sun..Sat |
%b |
Сокращенное название месяца |
Jan... Dec |
%c |
Номер месяца без ведущего нуля |
1..12 |
%D |
Номер дня месяца с английским суффиксом
|
1st, 2nd, 3rd, 4th |
%d |
Номер дня месяца с ведущим нулем |
01..31 |
%e |
Номер дня месяца |
1..31 |
%H |
Номер часа в 24-часовом формате с ведущим нулем |
01..23 |
%h |
Номер часа в 12-часовом формате с ведущим нулем |
01..12 |
%i |
Число минут с ведущим нулем |
00…59 |
%j |
Номер дня года с ведущими нулями |
001…366 |
%k |
Номер часа в 24-часовом формате без ведущего нуля |
1…23 |
%l |
Номер часа в 12-часовом формате без ведущего нуля |
1..12 |
Продолжение таблицы 5.1
Код |
Описание |
Примеры |
%M |
Название месяца |
January. December |
% |
Номер месяца с ведущим нулем |
01..12 |
%p |
Обозначение периода суток |
AM, PM |
%r |
Время в 12_часовом формате |
01:15:30 AM |
%S |
Числосекунд |
00…59 |
%T |
Время в 24-часовом формате |
15:32:00 |
%u |
Номер недели года, в котором первым днем недели является понедельник |
0…53 |
%v |
Номер недели года, в котором первым днем недели является понедельник; используется совместно с кодом %x |
1. .53 |
%w |
Номер дня недели |
0…6 |
%W |
Название дня недели |
Sunday…Saturday |
%x |
Год, первым днем которого является понедельник, используется совместно с кодом %v |
0000…9999 |
%y |
Год столетия |
00... 99
|
%Y |
Год |
0000…9999 |
|
|
|
|
|
|
|
|
|
DAYNAME(дата) - Эта функция возвращает название дня, соответствующего заданной дате.
DAYOFMONTH(дата) - Эта функция возвращает номер дня месяца, соответствующий заданной дате.
DAYOFWEEK(дата) - Эта функция возвращает номер дня недели, соответствующий заданной дате. Первым днем недели считается воскресенье.
DAYOFYEAR(дата) - Эта функция возвращает номер дня с начала года. Первым днем считается 1 января.
EXTRACT( тип FROM дата ) - Эта функция извлекает из значения даты значение указанного типа.
HOUR(время) - Эта функция возвращает номер часа, соответствующий заданному времени.
MINUTE(время) - Эта функция возвращает число минут, соответствующее заданному времени.
MONTH(дата) - Эта функция возвращает номер месяца, соответствующий заданной дате
MONTHNAME(дата) - Эта функция возвращает название месяца, соответствующее заданной дате.
NOW() - Эта функция определяет текущие дату и время.
PERIOD_ADD(период, месяцы) - Эта функция прибавляет указанное число месяцев к заданному периоду, который представляет собой обозначение номера месяца конкретного года.
PERIOD_DIFF(период1, период2) - Эта функция определяет разницу в месяцах между двумя периодами. Период — это номер месяца конкретного года.
QUARTER(дата) - Эта функция определяет квартал года, соответствующий заданной дате. К первому кварталу относятся первые три месяца года.
SECOND(время) - Эта функция возвращает число соответствующее заданному времени.
TIME_FORMAT(время, формат) - Эта функция возвращает значение времени, отформатированное в соответствии с заданной спецификацией. Допустимые коды формата были перечислены в таблице 5.1.
WEEK(дата [, первый_день]) - Эта функция возвращает номер недели, соответствующий заданной дате. Нумерация ведется от первой недели года. По умолчанию первым днем недели считается воскресенье, но если второй аргумент равен то первым днем будет считаться понедельник.
WEEKDAY(дата) - Эта функция возвращает номер дня недели, соответствующий заданной дате. Понедельник считается днем номер 0.
YEAR(дата) - Эта функция возвращает номер года, соответствующий заданной дате.