Программой MySQL поддерживается несколько типов данных: строковые, календарные, числовые данные и данные NULL-типа.
Рассмотрим некоторые из них.
Строковые типы данных
CHAR (N) – предназначен для хранения строки фиксированной длины N. Число N может принимать значения от 0 до 65 535. Занимаемый объем памяти – N символов, максимальный размер – N символов.
CHAR (7) хранит строку из 7 символов и занимает 7 байт. К примеру, строки ‘Сергей’, ‘Наталия’, ‘Ольга’ будут занимать по 7 байт памяти. Если ввести строку ‘Владислав’, она будет усечена до ‘Владисл’, то есть до 7 символов.
VARCHAR (N) – предназначен для хранения переменных строк длиной K. Число N может принимать значения 0 до 65 535. Занимаемый объем памяти K+1 символ, максимальный размер – N символов.
VARCHAR (4) хранит строку максимум из 4 символов, при этом пустая строка ‘’ будет занимать 1 байт памяти, ‘t’ – 2 байта, ‘to’ – 3 байта, ‘toy’ – 4 байта и т.д. Если введенное значение будет больше 4 символов, то оно будет усечено до 4.
TEXT – хранит большой объем текста. Занимаемый объем памяти K+2 символа, максимальный размер – 216-1 символ.
BLOB – хранит данные больших объемов (изображения, звук, электронные документы и т.д.). Занимаемый объем памяти K+2 символа, максимальный размер – 216-1 символ.
MEDIUMTEXT и MEDIUMBLOB являются аналогичными предыдущим типам данных, но с занимаемым объемом памяти K+3 символа и максимальным размером – 224-1 символ.
LONGTEXT и LONGBLOB аналогичны предыдущим типам данных, но с занимаемым объемом памяти K+4 символа и максимальным размером – 232-1 символ.
ENUM (‘значение1’, ‘значение2’, $\cdots$, ‘значениеN’) – хранит строки лишь одного из значений указанного множества. Занимаемый объем памяти – 1 или 2 байта, максимальный размер – 65 535 элементов.
ENUM (‘лето’, ‘зима’) хранит в столбце лишь одно из указанных значений.
SET (‘значение1’, ‘значение2’, $\cdots$, ‘значениеN’) – хранит строки лишь одного или всех значений указанного множества. Занимаемый объем памяти – до 8 байт, максимальный размер – 64 элемента.
SET (‘лето’, ‘зима’) – хранит в столбце одно из перечисленных значений, оба или может не содержать значения.
Календарные типы данных
DATE – хранит даты. Первое значение указывает на год в формате "YYYY", далее через дефис указывается месяц в формате "ММ", после – день в формате "DD". Разделителем может быть кроме дефиса любой символ, но только не цифра. Занимаемый объем памяти – 3 байта, диапазон – от ‘1000-01-01’ до ‘9999-12-31’.
TIME – хранит время суток. Значение записывается в формате hh:mm:ss:
hh – часы,
mm – минуты,
ss – секунды.
Разделителем может быть любой символ, но только не цифра.
Занимаемый объем памяти – 3 байта, диапазон – от ‘-838:59:59’ до ‘838:59:59’.
DATATIME– хранит дату и время суток. Значение записывается в формате YYYY-MM-DD hh:mm:ss.
Разделителем может быть любой символ, но только не цифра.
Занимаемый объем памяти – 8 байт, диапазон – от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’.
TIMESTAMP – хранит дату и время суток, которое записывается количеством секунд с полуночи 01.01.1970 (с начала эпохи UNIX).
Занимаемый объем памяти – 4 байта, диапазон – от ‘1970-01-01 00:00:00’ до ‘2037-12-31 23:59:59’.
YEAR (N) – хранит год. С помощью числа N задается формат года.
Занимаемый объем памяти – 1 байт, диапазон: для N=2 – от 1970 до 2069; для N=4 – от 1901 до 2155.
Тип данных NULL
По сути NULL не является типом данных, он указывает на возможность отсутствия значения.
Например, при регистрации на сайте необходимо заполнить форму, которая содержит обязательные и необязательные для заполнения поля. Обязательными полями являются поля Логин и Пароль, а необязательными могут быть поля Дата рождения, Пол и т.д.
Для хранения такой информации в базе данных используется 2 значения:
- NOT NULL (значение не может быть пустым) – для поля Логин и Пароль;
- NULL (значение может быть пустым) – для поля Дата рождения и Пол.
Тип NOT NULL присваивается всем полям таблицы по умолчанию.