Тема 3.9 MySQL. Работа с функциями. Поиск данных.
Математические функции MySQL
Описанные ниже функции выполняют различные математические операции. В качестве аргументов большинство из них принимает числа с плавающей запятой и возвращает результат аналогичного типа.
ABS (число)
Эта функция возвращает модуль числа
На рис. 8.1(а) и 8.1(б) приведены примеры работы с функцией ABS.
Рис. 8.1(а). Модуль числа
Рис. 8.1(б). Модуль числа
ASIN (число)
Эта функция возвращает арксинус числа. Диапазон допустимых значений – от -1 до 1. Вне этого диапазона значение арксинуса не определено.
На рис. 8.2(а), 8.2(б) и 8.2(в) приведены примеры работы с функцией ASIN.
Рис. 8.2(а). Арксинус числа
Рис. 8.2(б). Арксинус числа
Рис. 8.2(в). Арксинус числа
ACOS (число)
Эта функция возвращает арккосинус числа. Диапазон допустимых значений – от 1 до 1. Вне этого диапазона значение арккосинуса не определено.
На рис. 8.3(а), 8.3(б) и 8.3(в) приведены примеры работы с функцией ACOS.
Рис. 8.3(а). Арккосинус числа
Рис. 8.3(б). Арккосинус числа
Рис. 8.3(в). Арккосинус числа
ATAN (число)
Эта функция возвращает арктангенс числа.
На рис. 8.4(а), 8.4(б) и 8.4(в) приведены примеры работы с функцией ATAN.
Рис. 8.4(а). Арктангенс числа
Рис. 8.4(б). Арктангенс числа
Рис. 8.4(в). Арктангенс числа
ATAN2 (число1, число2)
Эта функция возвращает угол в радианах точки с заданными координатами.
На рис. 8.5(а), 8.5(б) и 8.5(в) приведены примеры работы с функцией ATAN2.
Рис. 8.5(а). Угол по координатам точки
Рис. 8.5(б). Угол по координатам точки
Рис. 8.5(в). Угол по координатам точки
CEILING (число)
CEIL(число)
Эта функция округляет число до ближайшего большего целого числа.
На рис. 8.6(а), 8.6(б) и 8.6(в) приведены примеры работы с функцией CEIL.
Рис. 8.6(а). Функция CEIL
Рис. 8.6(б). Функция CEIL
Рис. 8.6(в). Функция CEIL
COS (число)
Возвращает косинус числа
На рис. 8.7 приведен пример работы с функцией COS.
Рис. 8.7. Косинус числа
COT (число)
Возвращает котангенс числа.
На рис. 8.8(а) и 8.8(б) приведены примеры работы с функцией COT.
Рис. 8.8(а). Котангенс числа
Рис. 8.8(б). Котангенс числа
CRC32 (выражение)
Вычисляет проверочное значение в циклическом избыточном коде и возвращает 32-разрядное целое. Результат равен NULL, если передается аргумент NULL. Ожидается, что аргумент будет строкой, и будет рассматриваться в качестве таковой в противном случае.
На рис. 8.9 приведен пример работы с функцией CRC32.
Рис. 8.9. Циклический избыточный код
DEGREES(число)
Возвращает аргумент, преобразованный из радианов в градусы.
На рис. 8.10 приведен пример работы с функцией DEGREES.
Рис. 8.10. Преобразование из радианов в градусы
ЕХР (число)
Эта функция возводит число e (основание натурального логарифма) в заданную степень.
На рис. 8.11(а) и 8.11(б) приведены примеры работы с функцией EXP.
Рис. 8.11(а). Экспонента
Рис. 8.11(б). Экспонента
FLOOR (число)
Эта функция округляет число до ближайшего меньшего целого числа.
На рис. 8.12(а), 8.12(б) и 8.12(в) приведены примеры работы с функцией FLOOR.
Рис. 8.12(а). Функция FLOOR
Рис. 8.12(б). Функция FLOOR
Рис. 8.12(в). Функция FLOOR
GREATEST (...)
Эта функция возвращает наибольшее значение из списка. Она может работать как с числами, так и со строками.
На рис. 8.13 приведен пример работы с функцией GREATEST.
Рис. 8.13. Наибольшее значение из списка
LEAST (...)
Функция возвращает наименьшее значение из списка.
На рис. 8.14 приведен пример работы с функцией LEAST.
Рис. 8.14. Наименьшее значение из списка
LN (число)
LOG (число)
Эта функция возвращает натуральный логарифм числа.
На рис. 8.15(а) и 8.15(б) приведены примеры работы с функцией LN.
Рис. 8.15(а). Натуральный логарифм числа
Рис. 8.15(б). Натуральный логарифм числа
LOG(число1, число2)
При вызове с одним параметром функция LOG возвращает натуральный логарифм числа, а при вызове с двумя параметрами - возвращает логарифм числа2 по основанию число1.
На рис. 8.16(а) и 8.16(б) приведены примеры работы с функцией LOG.
Рис. 8.16(а). Логарифм числа по основанию
Рис. 8.16(б). Логарифм числа по основанию
LOG (число1, число2) эквивалентна LOG (число1) / LOG (число2).
LOG2 (число)
Возвращает логарифм числа по основанию 2.
На рис. 8.17(а) и 8.17(б) приведены примеры работы с функцией LOG.
Рис. 8.17(а). Логарифм числа по основанию 2
Рис. 8.17(б). Логарифм числа по основанию 2
Функция LOG2 () удобна для того, чтобы определить, сколько бит потребуется для сохранения числа. Вместо нее можно использовать LOG (число) /LOG (2).
LOG10 (число)
Возвращает логарифм числа по основанию 10.
На рис. 8.18(а), 8.18(б) и 8.18(в) приведены примеры работы с функцией LOG10.
Рис. 8.18(а). Десятичный логарифм
Рис. 8.18(б). Десятичный логарифм
Рис. 8.18(в). Десятичный логарифм
MOD(число1, число2)
число1 % число2
число1 MOD число2
Эта функция возвращает остаток от деления первого числа на второе подобно оператору %.
На рис. 8.19(а), 8.19(б), 8.19(в) и 8.19(г) приведены примеры работы с функцией MOD.
Рис. 8.19(а). Остаток от деления
Рис. 8.19(б). Остаток от деления
Рис. 8.19(в). Остаток от деления
Рис. 8.19(г). Остаток от деления
PI()
Возвращает значение числа . По умолчанию отображается пять знаков после десятичной запятой, но внутренне MySQL использует полное представление действительного числа двойной точности.
На рис. 8.20(а) и 8.20(б) приведены примеры работы с функцией PI.
Рис. 8.20(а). Число Пи
Рис. 8.20(б). Число Пи
POW(число1, число2)
POWER(число1, число2)
Возвращает значение число1, возведенное в степень число2.
На рис. 8.21(а), 8.21(б) и 8.21(в) приведены примеры работы с функцией POW.
Рис. 8.21(а). Возведение числа в степень
Рис. 8.21(б). Возведение числа в степень
Рис. 8.21(в). Возведение числа в степень
RADIANS(число)
Возвращает аргумент, преобразованный из градусов в радианы.
На рис. 8.22(а) и 8.22(б) приведены примеры работы с функцией RADIANS.
Рис. 8.22(а). Преобразование из градусов в радианы
Рис. 8.22(б). Преобразование из градусов в радианы
RAND ([число])
Возвращает случайное число двойной точности в диапазоне от 0 до 1. Если указан целочисленный аргумент, он служит начальным числом для генератора случайных чисел (генерируя повторяющуюся последовательность). Если аргумент отсутствует, используется значение системных часов.
На рис. 8.23(а) и 8.23(б) приведены примеры работы с функцией RAND.
Рис. 8.23(а). Создание случайных чисел
Рис. 8.23(б). Создание случайных чисел
Функцию можно использовать для извлечения строк в случайном порядке.
mysql> SELECT * FROM имя_таблицы ORDER BY RAND();ORDER BY RAND() в комбинации с LIMIT удобно для выбора случайного примера из набора строк:
mysql> SELECT * FROM tablel, table2 WHERE a=b AND c<d-> ORDER BY RAND() LIMIT 1000;Следует отметить, что RAND() в конструкции WHERE вычисляется заново при каждом выполнении WHERE.
ROUND (число [, точность])
Эта функция округляет число с плавающей запятой до целого числа или, если указан второй аргумент, до заданного количества цифр после запятой. Если точность отрицательная, обнуляется целая часть числа.
На рис. 8.24(а), 8.24(б), 8.24(в), 8.24(г), 8.24(д) и 8.24(е) приведены примеры работы с функцией ROUND.
Рис. 8.24(а). Округление числа
Рис. 8.24(б). Округление числа
Рис. 8.24(в). Округление числа
Рис. 8.24(г). Округление числа
Рис. 8.24(д). Округление числа
Рис. 8.24(е). Округление числа
Следует отметить, что поведение ROUND(), когда аргумент точно на середине отрезка между двумя целыми зависит от реализации библиотеки С. Различные реализации округляют до ближайшего четного, либо всегда в большую сторону, либо всегда в меньшую сторону, либо в сторону ближайшего нуля. Если вам нужно иметь предсказуемое поведение в этом случае, применяйте вместо этой функции TRUNCATE() ИЛИ FLOOR().
SIGN (число)
Возвращает знак аргумента как -1,0 или 1, в зависимости от того, число отрицательное, нуль или положительное.
На рис. 8.25(а), 8.25(б) и 8.25(в) приведены примеры работы с функцией SIGN.
Рис. 8.25(а). Знак числа
Рис. 8.25(б). Знак числа
Рис. 8.25(в). Знак числа
SIN (число)
Эта функция возвращает синус числа в радианах.
На рис. 8.26(а) и 8.26(б) приведены примеры работы с функцией SIN.
Рис. 8.26(а). Синус числа
Рис. 8.26(б). Синус числа
SQRT (число)
Эта функция возвращает квадратный корень числа
На рис. 8.27(а), 8.27(б) и 8.27(в) приведены примеры работы с функцией SQRT.
Рис. 8.27(а). Квадратный корень
Рис. 8.27(б). Квадратный корень
Рис. 8.27(в). Квадратный корень
TAN(число)
Возвращает тангенс числа.
На рис. 8.28 приведен пример работы с функцией TAN.
Рис. 8.28. Тангенс числа
TRUNCATE(число1, число2)
Возвращает число1 с дробной частью, усеченной до число2 десятичных разрядов. Если число2 равно 0, результат не имеет точки и дробной части. Если число2 отрицательное, целая часть числа длиной число2 обнуляется.
На рис. 8.29(а), 8.29(б), 8.29(в), 8.29(г) и 8.29(д) приведены примеры работы с функцией TRUNCATE.
Рис. 8.29(а). Усечение числа
Рис. 8.29(б). Усечение числа
Рис. 8.29(в). Усечение числа
Рис. 8.29(г). Усечение числа
Рис. 8.29(д). Усечение числа
Все числа округляются в сторону нуля. Следует отметить, что десятичные числа обычно не хранятся в компьютерах именно в виде чисел, а в виде двоичных значений двойной точности, поэтому иногда результат может вызвать удивление (рис. 8.29(е))
Рис. 8.29(е). Усечение числа
Это происходит потому, что 10.28 на самом деле сохраняется как 10.27999999999999...
Работа с датой
До сих пор мы имели дело с текстом (varchar) и числами (int). Чтобы понять тип данных date (дата) создадим еще одну таблицу, аналогично тому, как была создана первая таблица.
Создадим в текстовом редакторе файл employee_per.dat, который содержит оператор создания таблицы CREATE следующего вида:
CREATE TABLE employee_per (e_id int unsigned not null primary key, -- идентификационный номерaddress varchar(60), -- адресphone int, -- номер телефонаp_email varchar(60), -- адрес e-mailbirth_date DATE, -- дата рожденияsex ENUM('M', 'F'), -- полm_status ENUM('Y','N'), -- статусs_name varchar(40), -- имяchildren int); -- количество детейи последовательность операторов INSERT, например, такого вида. Количество записей может быть произвольно.
INSERT INTO employee_per (e_id, address, phone, p_email, birth_date, sex, m_status, s_name, children) values (1, 'Арбат, 12', 7176167, 'anna@yandex.ru', '1972-03-16', 'M', 'Y', 'Анна Петрова', 2);Затем загрузим этот файл, как мы делали раньше, в базу данных.
В системе Windows
1). Поместите файл в каталог c:\mysql\bin.
2). Выполните в приглашении DOS команду.
dosprompt> mysql employees <employee_per.dat3). Запустите программу клиента mysql и проверьте, что таблица была создана, с помощью команды SHOW TABLES;.
В системе Linux
1). Перейдите в каталог, в котором находится файл.
2). В приглашении введите следующую команду:
$prompt> mysql employees <employee_per.dat -u your_username -p3). Проверьте, что таблица была создана с помощью команды SHOW TABLES; в программе клиента mysql.
Данные таблицы можно вывести с помощью команды DESCRIBE.
mysql> DESCRIBE employee_per;Результат запроса представлен на рис. 9.1.
Рис. 9.1. Просмотр данных таблицы
Обратите внимание, что столбец birth_date имеет тип столбца date (дата). Здесь также присутствует еще один новый тип столбца ENUM, который был рассмотрен в лекции 4.
e-id: идентификатор сотрудника, такой же как в таблице employee_data
address: адрес сотрудника
phone: номер телефона
p_email: личный адрес e-mail
birth_date: дата рождения
sex: Пол сотрудника, мужской (M) или Женский (F)
m_status: семейное положение, в браке (Y) или холост (N).
s_name: Имя супруга (NULL, если сотрудник холост)
children: Число детей (NULL, если детей нет)
Дата добавления: 2020-11-18; просмотров: 438;