Из предыдущей главы вы узнали, что поля таблицы имеют ассоциированный с ним тип. Типом определяется тип данных, которые может хранить данное поле и помогает обеспечить целостность и непротиворечивость таблицы. MySQL имеет в своем арсенале достаточно широкий диапазон типов данных, которые можно классифицировать по следующим четырем общим категориям:
■ числовые типы;
■ строковые типы;
■ календарные типы;
■ сложные типы.
В следующем разделе все эти типы будут рассмотрены детально.
Числовые типы
Числовые типы MySQL в широком смысле можно разбить на две категории: целые числа и числа с плавающей точкой, или вещественные числа. В каждой их этих категорий имеется множество подтипов, каждый из которых может хранить данные различных размеров, кроме того, синтаксис MySQL позволяет определять, могут ли значения в цифровых полях иметь знак или дополняться нулями слева.
В табл. 5.1 представлены различные числовые типы данных и объем памяти, который отводится под каждый из них.
Тип INT
Пятью основными целыми типами, поддерживаемыми MySQL, являются TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT. Эти типы во многом подобны, отличаясь друг от друга диапазоном значений, которые они могут хранить. Рассмотрим следующий пример, в котором продемонстрирована их работа:
MySQL поддерживает дополнение к стандарту SQL в виде необязательной спецификации длины, что позволяет дополнять значения до указанной длины при выборке значений из базы данных. Например, выборка полей, объявленных как INT(6), обеспечивает то, что значения, имеющие меньше 6 цифр, автоматически дополняются пробелами. Это показано в следующем примере.
Что у нас с нулями?
Не видите дополнения пробелами? Попробуйте воспользоваться специальным модификатором ZEROFILL, который обсуждается ниже во врезке "Игры с цифрами".
Следует заметить, что использование спецификатора длины не влияет на размеры поля и диапазон сохраняемых им значений.
При попытке сохранить число, выходящее за пределы допустимого для данного типа диапазона, MySQL усечет его до ближнего значения, входящего в диапазон значений и сохранит в поле усеченное значение. Рассмотрим следующий пример, который демонстрирует попытку сохранить слишком большое значение в поле типа TINYINT.
Игры с цифрами
Не знаете, каким образом вычислены диапазоны чисел? Это довольно просто - достаточно воспользоваться формулой от (2Л(п-1))*-1 до (2Л(п-1))-1 для знаковых диапазонов и от 0 до (2Лп)-1 для беззнаковых диапазонов, где п - размер в битах. Таким образом, вычисляя диапазон для типа INT, который является 4-байтовым (т.е. 32-х битовым) типом, по этой формуле получим:
от (2Л(п-1))*-1до (2Л(п-1))-1 = от-2147483648 до 2147483647
для знакового диапазона и
от 0 до (2Л32)-1 = от 0 до 4294967295
для беззнакового диапазона.
Кроме того, MySQL автоматически преобразует недопустимые значения в ноль перед вставкой в таблицу. Следующий пример демонстрирует попытку вставки строки в поле типа INT:
Объявление целых типов может сопровождаться одним или сразу двумя модификаторами, которые могут повлиять на их хранение и отображение.
■ Модификатор UNSIGNED задает хранение в поле только положительных значений, что увеличивает диапазон хранимых данным полем значений. ■ Модификатор ZEROFILL задает заполнение поля нулями (а не пробелами) при его выводе. Заметим, что применение этого модификатора предотвращает сохранение отрицательных значений.
Рассмотрим применение этих модификаторов на практике.
ТОП-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. Типы данных MySQL. Продолжение.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Типы данных MySQL | Все о MySQL. Типы FLOAT, DOUBLE, DECIMAL |