Практическая работа № 2 Тема : SQL - Типы данных Цель: познакомиться с типами данных в MySQL Этот урок носит больше теоретический характер, но пропустить его нельзя. В дальнейшем вы сможете возвращаться к нему, как к справочному уроку, сейчас же просто ознакомьтесь. В прошлом уроке говорилось, что MySQL поддерживает числовые, строковые, календарные данные и данные типа NULL. Рассмотрим их по очереди.
Числовые типы данных Тип данных
| Объем памяти
| Диапазон
| Описание
| TINYINT (M)
| 1 байт
| от -128 до 127 или от 0 до 255
| Целое число. Может быть объявлено положительным с помощью ключевого слова UNSIGNED, тогда элементам столбца нельзя будет присвоить отрицательное значение. Необязательный параметр М - количество отводимых под число символов. Необязательный атрибут ZEROFILL позволяет свободные позиции по умолчанию заполнить нулями.
Примеры:
TINYINT - хранит любое число в диапазоне от -128 до 127.
TINYINT UNSIGNED - хранит любое число в диапазоне от 0 до 255.
TINYINT (2) - предполагается, что значения будут двузначными, но по факту будет хранить и трехзначные.
TINYINT (3) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 002.
| SMALLINT (M)
| 2 байта
| от -32768 до 32767 или от 0 до 65535
| Аналогично предыдущему, но с большим диапазоном.
Примеры:
SMALLINT - хранит любое число в диапазоне от -32768 до 32767.
SMALLINT UNSIGNED - хранит любое число в диапазоне от 0 до 65535.
SMALLINT (4) - предполагается, что значения будут четырехзначные, но по факту будет хранить и пятизначные.
SMALLINT (4) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0002.
| MEDIUMINT (M)
| 3 байта
| от -8388608 до 8388608 или от 0 до 16777215
| Аналогично предыдущему, но с большим диапазоном.
Примеры:
MEDIUMINT - хранит любое число в диапазоне от -8388608 до 8388608.
MEDIUMINT UNSIGNED - хранит любое число в диапазоне от 0 до 16777215.
MEDIUMINT (4) - предполагается, что значения будут четырехзначные, но по факту будет хранить и семизначные.
MEDIUMINT (5) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002.
| INT (M) или INTEGER (M)
| 4 байта
| от -2147683648 до 2147683648 или от 0 до 4294967295
| Аналогично предыдущему, но с большим диапазоном.
Примеры:
INT - хранит любое число в диапазоне от -2147683648 до 2147683648.
INT UNSIGNED - хранит любое число в диапазоне от 0 до 4294967295.
INT (4) - предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные.
INT (5) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002.
| BIGINT (M)
| 8 байта
| от -263 до 263-1 или от 0 до 264
| Аналогично предыдущему, но с большим диапазоном.
Примеры:
BIGINT - хранит любое число в диапазоне от -263до 263-1.
BIGINT UNSIGNED - хранит любое число в диапазоне от 0 до 264.
BIGINT (4) - предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные.
BIGINT (7) ZEROFILL - свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0000002.
| BOOL или BOOLEAN
| 1 байт
| либо 0, либо 1
| Булево значение. 0 - ложь (false), 1 - истина (true).
| DECIMAL (M,D) или DEC (M,D) или NUMERIC (M,D)
| M + 2 байта
| зависят от параметров M и D
| Используются для величин повышенной точности, например, для денежных данных. M - количество отводимых под число символов (максимальное значение - 64). D - количество знаков после запятой (максимальное значение - 30).
Пример:
DECIMAL (5,2) - будет хранить числа от -99,99 до 99,99.
| FLOAT (M,D)
| 4 байта
| мин. значение +(-) 1.175494351 * 10-39 макс. значение +(-) 3. 402823466 * 1038
| Вещественное число (с плавающей точкой). Может иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. M - количество отводимых под число символов. D - количество символов дробной части.
Пример:
FLOAT (5,2) - будет хранить числа из 5 символов, 2 из которых будут идти после запятой (например: 46,58).
| DOUBLE (M,D)
| 8 байт
| мин. значение +(-) 2.2250738585072015 * 10-308 макс. значение +(-) 1.797693134862315 * 10308
| Аналогично предыдущему, но с большим диапазоном.
Пример:
DOUBLE - будет хранить большие дробные числа.
|
Необходимо понимать, чем больше диапазон значений у типа данных, тем больше памяти он занимает. Поэтому, если предполагается, что значения в столбце не будут превышать 100, то используйте тип TINYINT. Если при этом все значения будут положительными, то используйте атрибут UNSIGNED. Правильный выбор типа данных позволяет сэкономить место для хранения этих данных.
|