Математические функции MySQL
Сведем математические функции в таблицу.
Функция | назначение | Пример | Результат |
ABS(число) | функция возвращает модуль числа | ABS(-3.057) | 3.057 |
ASIN(число) | функция возвращает арксинус числа | ASIN(0.2) | 0.2013 |
ACOS(число) | функция возвращает арккосинус числа | ACOS(0) | 1.5707 |
ATAN(число) | функция возвращает арктангенс числа | ATAN(1) | 0.7853 |
ATAN2(число1, число2) | функция возвращает угол в радианах точки с заданными координатами | ATAN2(3,7) | 0.40489 |
CEILING(число) CEIL(число) | функция округляет число до ближайшего большего целого числа. | CEIL(1.3) | |
PI() | возвращает значение числа . По умолчанию отображается пять знаков после десятичной запятой, но внутренне MySQL использует полное представление действительного числа двойной точности | PI() | 3.141593 |
SIN(число) | функция возвращает синус числа в радианах | SIN(1) | 0.8414 |
COS(число) | Возвращает косинус числа | COS(PI())) | -1.0000 |
TAN(число) | возвращает тангенс числа | TAN(PI()+1) | 1.5574 |
COT(число) | COT(число) | COT(12) | -1.5726 |
CRC32(выражение) | Вычисляет проверочное значение в циклическом избыточном коде и возвращает 32-разрядное целое. Результат равен NULL, если передается аргумент NULL. Ожидается, что аргумент будет строкой, и будет рассматриваться в качестве таковой в противном случае. | CRC32(MySQL) | |
DEGREES(число) | возвращает аргумент, преобразованный из радианов в градусы | DEGREES(PI()) | 180.00 |
ЕХР(число) | функция возводит число e (основание натурального логарифма) в заданную степень. | EXP(2) | 7.389 |
FLOOR(число) | функция округляет число до ближайшего меньшего целого числа | FLOOR(1.6) | |
GREATEST(...) | функция возвращает наибольшее значение из списка. Она может работать как с числами, так и со строками | GREATEST(1,4,6) | |
LEAST(...) | Функция возвращает наименьшее значение из списка. | LEAST(1,4,6) | |
LN(число) | функция возвращает натуральный логарифм числа | LN(2) | 0.6931 |
LOG(число) | При вызове с одним параметром функция LOG возвращает натуральный логарифм числа, а при вызове с двумя параметрами - возвращает логарифм числа2 по основанию число1 LOG(число1, число2) эквивалентна LOG(число2) / LOG(число1). | LOG(2,65536) | 16.000 |
LOG2(число) | возвращает логарифм числа по основанию 2. Функция LOG2() удобна для того, чтобы определить, сколько бит потребуется для сохранения числа. Вместо нее можно использовать LOG(число) /LOG(2) | LOG2(65536) | 16.00 |
LOG10(число) | Возвращает логарифм числа по основанию 10 | LOG10(100) | |
MOD(число1, число2) число1 % число2 число1 MOD число2 | функция возвращает остаток от деления первого числа на второе подобно оператору %. | MOD(235,10) | |
POW(число1, число2) POWER(число1, число2) | Возвращает значение число1, возведенное в степень число2 | POW2,3) | 8.00 |
RADIANS(число) | возвращает аргумент, преобразованный из градусов в радианы | RADIANS(90) | 1.5707 |
RAND([число]) | Возвращает случайное число двойной точности в диапазоне от 0 до 1. Если указан целочисленный аргумент, он служит начальным числом для генератора случайных чисел (генерируя повторяющуюся последовательность). Если аргумент отсутствует, используется значение системных часов. Функцию можно использовать для извлечения строк в случайном порядке. 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. | RAND() | 0.1587… |
ROUND(число [, точность]) | функция округляет число с плавающей запятой до целого числа или, если указан второй аргумент, до заданного количества цифр после запятой. Если точность отрицательная, обнуляется целая часть числа. Следует отметить, что поведение ROUND(), когда аргумент точно на середине отрезка между двумя целыми, зависит от реализации библиотеки С. Различные реализации округляют до ближайшего четного, либо всегда в большую сторону, либо всегда в меньшую сторону, либо в сторону ближайшего нуля. Если вам нужно иметь предсказуемое поведение в этом случае, применяйте вместо этой функции TRUNCATE() ИЛИ FLOOR() | ROUND(-1.45) | -1 |
SIGN(число) | возвращает знак аргумента как -1, 0 или 1, в зависимости от того, число отрицательное, нуль или положительное | SIGN(-24) | -1 |
SQRT(число) | функция возвращает квадратный корень числа | SQRT(16) | |
TRUNCATE(число1, число2) | возвращает число1 с дробной частью, усеченной до число2 десятичных разрядов. Если число2 равно 0, результат не имеет точки и дробной части. Если число2 отрицательное, целая часть числа длиной число2 обнуляется. Все числа округляются в сторону нуля. Десятичные числа обычно хранятся в компьютерах в виде двоичных значений двойной точности, поэтому иногда результат может вызвать удивление: TRUNCATE(10.28*100,0)=1027 Это происходит потому, что 10.28 на самом деле сохраняется как 10.27999999999999 | TRUNCATE(1.323) | 1.3 |
Контрольные вопросы.
1. Перечислите четыре вида соединений.
2. При каком соединении записи, для которых не имеется пары в связанной таблице, в результат не включаются?
3. При каком соединении условие ON опускается?
4. Какие соединения применяются для получения полного набора записей одной из таблиц?
5. С помощью какого соединения можно получить декартово произведение таблиц?
6. Чем отличается порядок записей в итоговом наборе, полученном с помощью соединения Join и объединения Union?
7. Из какого запроса берутся имена полей итогового набора при объединении (Union)?