Lightning 177 Опубликовано 8 августа, 2017 (изменено) Суть вопроса вот в чем: Когда создаешь таблицу и допустим тебе надо создать колонку типа int, обычно я пишу так ..... int(11)....... но недавно столкнулся с запросом чужим где просто было указано int без указания кол-ва символов, понял что можно и так, но разница в чем не понял, нарыть в инете не смог потому что просто не сообразил что писать в запросе гуглу, если есть знающие люди прошу дать ссылку (не в гугл а на источник) либо вкратце объяснить, спасибо. UPD. Задался вопросом, потому что возможно что это связано неким образом с оптимизацией базы данных. Так ли это? Изменено 8 августа, 2017 пользователем Lightning Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 8 августа, 2017 (изменено) Пример: Возьмем значение 21 и подставим его к INT(4) и INT int(4) UNSIGNED ZEROFILL ----- 0021 и int UNSIGNED ZEROFILL --- 21 Ссылки на источники: https://stackoverflow.com/questions/7552223/int11-vs-intanything-else http://rmcreative.ru/blog/post/mysql--dlina-int http://sqlinfo.ru/forum/viewtopic.php?id=2258 Изменено 8 августа, 2017 пользователем zGosu 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lightning 177 Опубликовано 8 августа, 2017 Пример: Возьмем значение 21 и подставим его к INT(4) и INT int(4) UNSIGNED ZEROFILL ----- 0021 и int UNSIGNED ZEROFILL --- 21 Ссылки на источники: https://stackoverflow.com/questions/7552223/int11-vs-intanything-else http://rmcreative.ru/blog/post/mysql--dlina-int http://sqlinfo.ru/forum/viewtopic.php?id=2258 Если я правильно понял то второй вариант будет и занимать места меньше в памяти в байтах? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 8 августа, 2017 (изменено) Если я правильно понял то второй вариант будет и занимать места меньше в памяти в байтах? Если не ошибаюсь, то int как весил 4 байта, так и останется. поле int требует для хранения 4 байта, значит 2^32 записей. А ширина в 11 символов достаточна, чтобы любое число из данного диапазона не обрезалось. Изменено 8 августа, 2017 пользователем zGosu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lightning 177 Опубликовано 8 августа, 2017 Если не ошибаюсь, то int как весил 4 байта, так и останется. Хорошо спасибо, буду использовать по возможности другие типы числовые http://prntscr.com/g5zz4l Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
L2Banners 664 Опубликовано 8 августа, 2017 Хорошо спасибо, буду использовать по возможности другие типы числовые http://prntscr.com/g5zz4l Надо использовать тот тип, который максимально подходит по назначению Если я правильно понял то второй вариант будет и занимать места меньше в памяти в байтах? Нет памяти будет выделено ровно столько, сколько должно выделяться для данного типа то есть в случае с int это 32 бита А эта запись int(5) означает, что число будет состоять минимум из 5 цифр. При этом если наше число состоит меньше чем из 5 цифр, то оно будет дополнено нулями с лева. То есть если у нас число например 578, то в таблице оно будет записано так 00578 , но если число будет больше чем из 5 цифр, то ничего не будет обрезано. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты