Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT предназначен для представления вещественных чисел одинарной точности, в то время как типы данных DOUBLE и DECIMAL служат для представления вещественных чисел двойной точности.
Как и целые типы, эти типы принимают дополнительные аргументы: спецификацию ширины отображения и спецификацию десятичной части числа. Например, объявление FLOAT(5,2) задает длину отображаемых значений, равной не более 5 цифрам с двумя цифрами после десятичной точки. Рассмотрим примеры, которые это демонстрируют.
+-----------+
4 rows л_п set (0.00 sec)
Значения, содержащие цифры после десятичной точки в количестве больше допустимого, автоматически округляются до ближайшего значения и только потом добавляются. Это демонстрирует следующий пример.
Тип данных DECIMAL используется в вычислениях, требующих предельной точности, т.к. этот тип позволяет задавать в качестве дополнительных аргументов точность и масштаб. Здесь точность относится к количеству значащих цифр, которые могут храниться в значении, а масштаб - количество цифр после десятичной точки. Так, например, объявление DECIMAL (5,2) задает хранение значений, которые содержат не более 5 цифр при 2 цифрах после десятичной точки. Рассмотрим следующий пример, в котором это продемонстрировано.
На заметку
Для более точного сохранения значений, MySQL хранит типы данных DECIMAL в символических строках.
Пропуск спецификации точности и масштаба для типа DECIMAL приводит к присвоению по умолчанию полям, объявленным таким образом, значения аргумента точности, равного 10, и масштаба, равного 0.
Листинг 5.9.
mysql> CREATE TABLE data (f_decimal DECIMAL);
Query OK, 0 rows affected (0.00 sec)
Модификаторы UNSIGNED и ZEROFILL можно использовать и с типами данных FLOAT, DOUBLE, DECIMAL, при этом они действуют так же, как и в случае целых типов данных.
Строковые типы данных
MySQL имеет восемь основных строковых типов, которые можно использовать для хранения строковых данных, начиная с простейших строк, содержащих один символ, и заканчивая большими текстовыми или двоичными блоками данных. Перечень этих типов приводится в табл. 5.2.
Типы CHAR и VARCHAR
Простейшим из всех перечисленных в табл. 5.2 типов является тип CHAR, который используется со строками фиксированной длины и объявляется со спецификацией размера, заключающейся в скобки. Размер может лежать в диапазоне от 0 до 255 и определять длину хранящегося значения - например, объявление CHAR(10) задает максимальную длину хранящейся строки, равной 10 символам. Значения меньше заданной длины будут дополняться справа нулями, значения больше указанной длины будут автоматически усечены. Обе эти ситуации продемонстрированы в следующем примере.
Тип CHAR принимает необязательный модификатор BINARY, который приводит к обработке данного поля при операциях сравнения как двоичного (а не традиционного текстового). Следующий пример это наглядно демонстрирует.
Таким образом, мы видим, что MySQL при использовании типа CHAR позволяет производить поиск без учета регистра, между строками 'hugo' и 'HUGO'. А теперь посмотрим, что происходит, если добавить к этому же объявлению модификатор BINARY.
Так как теперь для объявления поля используется двоичный тип, MySQL осуществляет двоичное сравнение, что совершенно очевидно приводит к сбою из-за несоответствия регистра. Одним из вариантов типа CHAR является тип VARCHAR, который используется для хранения строк переменной длины, он также должен сопровождаться спецификацией длины в диапазоне от 0 до 255. Разница между типами CHAR и VARCHAR заключается в том, как MySQL обрабатывает эту спецификацию. Тип CHAR считает это точной длиной значения, дополняя все значения, имеющие длину меньше заданной пробелами, в то время как тип VARCHAR рассматривает это как максимальный размер значений и использует только число байтов, действительно необходимых для хранения строки (плюс один байт, необходимый для хранения длины). Таким образом, короткие значения при сохранении в поле, которое сохраняется, как тип VARCHAR не дополняется пробелами. (А все более длинные значения также усекаются.)
Так как поля могут динамически расширяться и сужаться в зависимости от содержимого, этот тип лучше всего использовать тогда, когда вы не совсем уверены, сколько символов должно хранить данное поле. Тип VARCHAR использует только минимальное количество необходимых байтов, что может привести к повышению эффективности хранения и, возможно, к существенному улучшению рабочих характеристик разрабатываемой базы данных.
Как и тип CHAR, тип VARCHAR может сопровождаться необязательным модификатором BINARY, который обусловит его поведение как двоичных данных.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Типы FLOAT, DOUBLE, DECIMAL
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Типы данных MySQL. Продолжение. | Все о MySQL. Типы TEXT и BLOB |