Типы данных и наборы символов
Наборы символов:
Список установленных наборов
SHOW CHARACTER SET;
По умолчанию utf 8mb4
varchar(20) character set latinl : при создании таблицы другой набор
набор по-умолчанию для всей таблицы
create database european_sales character set latinl;
Общая информация
- M максимальное количество. Для целых - кол-во цифр, для дробных - общее кол-во цифр, для строк макс. кол-во символов
- D кол-во цифр после запятой, должно быть не больше M-2
- fsp применимо к дате/времени, определяет точность (кол-во дробной части секунды)
- при strict mode перебор значения вызывает исключение, при restrictive - максимально возможное значение
Тип | Доп. информация |
char(255 символов) varchar(65535) |
char(20) 20 символов char фиксировано, при хранении добавляет справа PAD символы |
tinytext(255) text(65535) mediumtext(16 млн) longtext(4 млр) |
если больше, то обрежутся конечные пробелы считаются при сортировке первые 1024 байта, но можно увеличить tinytext, text - можно не использовать |
tinyint(1) smallint(2) mediumint int bigint(8) |
указано кол-во байтов при создании указывается визуальное кол-во цифр+один символ на знак
int максимум 10, поэтому это преобразуется в int(11)
ZEROFILL заполняет 0 слева.
|
DECIMAL = NUMERIC |
фиксированное кол-во цифр. Равно int с коэффициентом деления. Первая цифра - общее кол-во цифр (M), вторая - кол-во цифр после запятой. Знак неявно добавляется. Т.е. от -9.99 до 9.99
M < 65, по-умолчанию 10
в агрегатных функциях работает общее ограничение на 64 цифры, вычисление точное. |
float, double |
приближенные числа
Нельзя напрямую сравнивать в агрегатах, нужно сравнивать разницу ABS(v1 - v2) > 0.1
нельзя, внешне одинаковые числа будут разными |
битовый тип |
column_name BIT(M)
select выводит в виде 0x0A |
date datetime timestamp year time |
00-00-0000 вместо NULL, не отображается
timestamp зависит от time_zone
Если сервер MAXDB mode, TIMESTAMP = DATETIME column_name TIME;
|
No Comments