MySQL - Пределы размера колонкам целого числа

Я использую phpMyAdmin, чтобы создать мои структуры таблиц.

I can read from the documentation pages on MySQL about size limits for Integer Types: MySQL Integer Types Reference


Таким образом, вот то, где я становлюсь немного перепутанным с созданием колонки.

I want to create a column in the table: tbl_note_categories called notescounter

Я не предвижу меня создающий тысячи noteids в tbl_notes ни с каким определенным categoryid . Но я действительно полагаю, что создал бы сотни примечаний к каждому categoryid.

Я в том пункте выбора между: tinyint, smallint, mediumint. Согласно ссылке на документацию выше, я предполагаю, что smallint - мой лучший выбор.

Таким образом, вот мой беспорядок. PhpMyAdmin просит <�сильную> Длину/Ценности , чтобы параметр был определен. Я собираюсь удостовериться, что эта новая колонка ( notescounter ) не подписана, давая мне до 65536. Это означает, что мне нужна Длина/Ценности, чтобы быть (5)?

Я предполагаю, что Длина - длина знака, но я не уверен. (по сравнению с varchar)

Snapshot of New column in PhpMyadmin

23
nl ja de

2 ответы

Нет, это - распространенное заблуждение о MySQL. На самом деле "длина" не имеет никакого эффекта на размер целого числа или диапазон ценностей, которые это может сохранить.

  • TINYINT is always 8 bits and can store 28 distinct values.
  • SMALLINT is always 16 bits and can store 216 distinct values.
  • INT is always 32 bits and can store 232 distinct values.
  • BIGINT is always 64 bits and can store 264 distinct values.

Есть также MEDIUMINT, но инженеры, которые работают над MySQL, говорят мне, что MEDIUMINT всегда продвигается на 32-битный INT внутренне, таким образом, нет на самом деле никакой выгоды для использования MEDIUMINT.

Длина - только для показа, и это только имеет значение, используете ли вы ZEROFILL выбор.

See an example in my answer to What is the difference (when being applied to my code) between INT(10) and INT(12)?

46
добавлено
Вы знаете, почему , BOOL / , БУЛЕВ , определяется как TINYINT (1) , не , УКУСИЛ (1) ?
добавлено автор Solomon Ucko, источник
Я думаю, что имело бы больше смысла обновлять его, потому что в более старых версиях это мог быть синоним для TINYINT (1) , и в более новых версиях это мог быть синоним для <�кодового> БИТА (1) .
добавлено автор Solomon Ucko, источник
@MuhammadRizwan: 24 бита, это может сохранить 2^24 отличные ценности. dev.mysql.com/doc/refman/5.7/en/integer-types.html Но я никогда не использую их, так как инженер MySQL сказал мне, что mediumints всегда хранятся как 32-битные объекты внутренне. There' s никакие сбережения хранения при помощи mediumint.
добавлено автор Bill Karwin, источник
@SolomonUcko: Для обратной совместимости. В MySQL УКУСИЛ (n) тип данных wasn' t добавленный до версии 5.0. В MySQL 4.1 и ранее, BOOL и УКУСИЛ </ код> (без выбора длины) были оба синонимы для TINYINT (1) .
добавлено автор Bill Karwin, источник
@SolomonUcko, ну, в общем, когда вы управляете разработкой программного обеспечения для RDBMS, можно принять то решение.:-)
добавлено автор Bill Karwin, источник
что относительно mediumInteger?
добавлено автор user5122725, источник
Хорошо спасибо....
добавлено автор user5122725, источник

Да, вы хотите определить длину 5.

В MySQL признак "длины" на целых типах дополнительный. Это - расширение MySQL, которое нестандартно).

Когда это опущено из декларации колонки, MySQL обеспечивает значение по умолчанию. Для НЕПОДПИСАННОГО SMALLINT значение по умолчанию равняется 5.

Эта стоимость НЕ оказывает влияния на диапазон ценностей, которые могут быть сохранены для целого типа. Это определяет "продолжительность показа", которая возвращена в метаданных набора результатов, которые клиент может использовать или игнорирует.

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-attributes.html

7
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp