JavaRush /Курсы /Модуль 4. Работа с БД /Числовые функции

Числовые функции

Модуль 4. Работа с БД
4 уровень , 1 лекция
Открыта

Список числовых функций

Как мы говорили выше, для СУБД мало просто хранить данные определенного типа, нужно еще поддерживать обширный набор супербыстрых операций над данными этих типов.

И, как ты знаешь, все СУБД поддерживают разнообразные числовые типы и операции над ними. Сегодня ты познакомишься с самыми популярными из них.

Все числовые функции в MySQL можно условно разделить на 5 групп:

  • Арифметически операции
  • Битовые операции
  • Функции округления
  • Алгебраические функции
  • Тригонометрические функции

Кстати, с очень многими из них ты знаком благодаря языку Java, так что думаю они не станут для тебя сюрпризом. Но начнем по порядку.

Полный список функций можно найти по ссылке.

Арифметические операции

Тут в принципе ничего неожиданного, все те же стандартные операции, как и везде:

# Пример
1 +, -, *, / 2+2*2 Сложение, вычитание, умножение, деление (не нацело!)
2 % 13 % 5 Остаток от деления
3 MOD 13 MOD 5 Остаток от деления
4 DIV 13 DIV 5 Деление нацело

Из интересного: при делении двух целых чисел получится вещественно число. Для деления нацело нужно использовать оператор DIV.

Если ты хочешь получить остаток от деления нацело, то нужно использовать или оператор MOD или % как в языке Java. Примеров приводить не буду, как по мне тут и так все очевидно.

Битовые операции

Над числами в SQL можно также проводить битовые операции, примерно, как и в языке Java. Хотя есть нюансы. Список доступных битовых операций представлен в таблице ниже:

# Пример Примечание
1 & 0b1111 & 0b1000 Побитовый AND
2 | 0b1111 | 0b0001 Битовый OR
3 ^ 0b1111 ^ 0b1111 Битовый XOR
4 ~ ~0b1111 Побитовая инверсия
5 >> 128 >> 5 Битовый сдвиг вправо
6 << 2 << 5 Битовый сдвиг влево
7 BIT_COUNT() BIT_COUNT(255) Возвращает количество бит, которые равны 1

В MySQL до версии 8.0 такие операции можно было выполнять только с типом данных BIGINT, который состоял из 64 бит и был аналогичен типу long в Java. Однако в MySQL 8.0 (который мы и рассматриваем) концепция поменялась. Теперь эти операции можно выполнять над специальными двоичными типами:

  • BINARY
  • VARBINARY
  • А также над типами BLOB (которые представляют из себя массив байт)

Все остальные типы просто приводятся к типу BIGINT и операции выполняются, как и ранее (только над первыми 64 битами).

Функции округления

Для округления в MySQL используются до боли знакомые тебе функции. Список их приведен в таблице ниже:

# Пример Примечание
1 CEIL(), CEILING() CEIL (5.1) = 6 Округляет вещественное число вверх
2 FLOOR() FLOOR (5.9) = 5 Округляет вещественное число вниз
3 ROUND() ROUND(4.1) = 4 Округляет вещественное число до ближайшего целого
4 TRUNCATE() TRUNCATE(4.123, 2) = 4.12 Обрезает число до N знаков после запятой
5 RAND() 0.61914388706828 Возвращает случайное вещественное число в диапазоне от 0 до 1
6 RAND(N) 0.93845168309142 Возвращает случайное вещественное число в диапазоне от 0 до 1. N используется как seed value

Со всеми функциями округления ты знаком еще со времен первого квеста в Java. Интерес тут может представлять только функция TRUNCATE() и RANDOM(N).

Функция TRUNCATE (число, количество) принимает в качестве первого параметра вещественное число, а в качестве второго – количество знаков поле запятой, которое должно оставаться. Число обрезается до нужного количества знаков после запятой.

Что касается функции RAND(N) все немного сложнее. Как ты, наверное, знаешь, компьютер не может генерировать случайные числа. Вместо этого он генерирует так называемую последовательность псевдослучайных чисел. То есть глядя на одно число не понятно – случайное оно или нет, а вот последовательность чисел уже может быть похожей на случайную. Этим и пользуются разработчики, генерируя последовательность чисел, которая очень похожа на случайную.

При этом каждое новое число последовательности генерируется по хитрому правилу на основе предыдущего числа этой последовательности. Поэтому если ты передашь в алгоритм генерации случайных чисел некое стартовое число (его еще называют seed), то каждый раз будешь получать одну и ту же последовательность случайных чисел.

1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Вычитание и сложение
Вычитание и сложение
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Вычитание и сложение
Вычитание и сложение
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Остаток от деления
Остаток от деления
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Деление нацело
Деление нацело
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Побитовый AND
Побитовый AND
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Битовый OR
Битовый OR
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Битовый XOR
Битовый XOR
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Побитовая инверсия
Побитовая инверсия
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Битовый сдвиг вправо
Битовый сдвиг вправо
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Битовый сдвиг влево
Битовый сдвиг влево
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Количество бит
Количество бит
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Округление вверх
Округление вверх
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Округление вниз
Округление вниз
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Округление до ближайшего целого
Округление до ближайшего целого
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Обрезание числа
Обрезание числа
1
Задача
Модуль 4. Работа с БД, 4 уровень, 1 лекция
Недоступна
Случайные вещественные числа
Случайные вещественные числа
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Анастасия Уровень 93
14 января 2026
а такое разве на практике используется? есть живые примеры как это можно использовать? Плюс не предоставлено примеров запросов, как это должно выглядеть. Типа есть такое, а как это будет выглядеть - сами разберетесь в задачах.... Про побитовые отдельный вопрос, даже нельзя в задачах посмотреть как это будет работать, потому что на таблицы забили и их нет.... Что такое вообще эти побитовые операции, зачем они нужны? Что это за конкретные операции в таблице и что они делают? Тут больше вопросов, чем информации предоставленной
I'm Siberian Уровень 109 Expert
15 января 2025
явараш, где таблицы? с 4го кончаются заполнения таблицы. ладно в 4м еще от 3го осталось, но с 5го начинается logic и её нет.
Тимур Уровень 109
17 января 2025
Зачем тебе таблицы?😅 Ведь у тебя есть воображение)))
I'm Siberian Уровень 109 Expert
18 января 2025
просто грибы зпкончились и воображение стало черно-белым (
Ruslan Shamsiev Уровень 1
11 января 2023
Алгебраические функции Тригонометрические функции?