Типы данных и наборы символов
Наборы символов:
Список установленных наборов
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; 
 |