Перейти к содержанию
Авторизация  
Lightning

SQL тип данных int

Рекомендуемые сообщения

Суть вопроса вот в чем:

 

Когда создаешь таблицу и допустим тебе надо создать колонку типа int, обычно я пишу  так ..... int(11)....... но недавно столкнулся с запросом чужим где просто было указано int без указания кол-ва символов, понял что можно и так, но разница в чем не понял, нарыть в инете не смог потому что просто не сообразил что писать в запросе гуглу, если есть знающие люди прошу дать ссылку (не в гугл а на источник) либо вкратце объяснить, спасибо.

 

UPD. Задался вопросом, потому что возможно что это связано неким образом с оптимизацией базы данных. Так ли это?

Изменено пользователем Lightning

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пример:

Возьмем значение 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
  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пример:

Возьмем значение 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

 

Если я правильно понял то второй вариант будет и занимать места меньше в памяти в байтах? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правильно понял то второй вариант будет и занимать места меньше в памяти в байтах? 

Если не ошибаюсь, то int как весил 4 байта, так и останется. 

поле int требует для хранения 4 байта, значит 2^32 записей. А ширина в 11 символов достаточна, чтобы любое число из данного диапазона не обрезалось.

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не ошибаюсь, то int как весил 4 байта, так и останется. 

Хорошо спасибо, буду использовать по возможности другие типы числовые http://prntscr.com/g5zz4l

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо спасибо, буду использовать по возможности другие типы числовые http://prntscr.com/g5zz4l

Надо использовать тот тип, который максимально подходит по назначению

 

 

 

Если я правильно понял то второй вариант будет и занимать места меньше в памяти в байтах? 

Нет памяти будет выделено ровно столько, сколько должно выделяться для данного типа то есть в случае с int это 32 бита

 

А эта запись int(5) означает, что число будет состоять минимум из 5 цифр. При этом если наше число состоит меньше чем из 5 цифр, то оно будет дополнено нулями с лева. То есть если у нас число например 578, то в таблице оно будет записано так 00578 , но если число будет больше чем из 5 цифр, то ничего не будет обрезано. 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...