Нещо, което никога не съм знаел за data type int

July 28, 2007

В MySQL типът int може да му се отбележи параметър – int(4) примерно. Подведен от ежедневната ми работа с Microsoft SQL Server и удобния графичен интерфейс, който там ползвам, винаги съм си мислил, че int(4) отбелязва 4 bytes int. Всъщност 4-те байта идват от типа int, а 4-ката означава при селект как да се визуализира. Т.е. популярните в PhpBB и WordPress int(11) означават, че визуализацията на полето при селект в конзола трябва да заема 11 символа. Ако искаме да укажем по-голям int, това става чрез ползване на друга дефиниция – bigint, за 8 байта.

Днес Дачев и Тото упорито ме убеждаваха в това, даже първите секунди се опитаха да спорят, че int(4) означава максимум 4 разрядно число (9999), което категорично отрекох като даже теоретична възможност да е вярно. В края на краищата влязох, проверих и си признавам пропуска.

Публикувано в: Гърнето с боба 5 коментара RSS 2.0

Ако постът ви харесва, цъкнете на сърцето:

Коментари

5 коментара на “Нещо, което никога не съм знаел за data type int”

  1. zImage on July 28th, 2007 00:13

    Това което бях сигурен беше, че тип int определя int storage, а (4) е за някакви display purposes, но какви точно… не можах да се сетя. Добре, че повдигна въпроса 🙂 По този начин се запомня по-добре.

  2. dzver on July 28th, 2007 00:39

    Мисля че ще държи дълго първенство в личния ми шампионат за откритие, което е най-неприложимо в практиката 🙂

  3. Георги on July 28th, 2007 13:18

    По принцип размера на int е с размера на машинната дума. На 32-битов компютър е 32-битов, на 64 е 64-битов. Това обаче в C.

    Интересно как ще се справят базите с това. Дали една база от 64 битова машина преместена на 32-битова такава дали ще има проблем с типа на int/bigint полетата…

  4. Илия Горанов on July 28th, 2007 23:25

    Ама че съвпадение… съвсем наскоро и аз проведох подобен спор. За мой срам – и аз първоначално бях на грешната позиция…

  5. dzver on July 28th, 2007 23:34

    Илия, не мисля че е срам 🙂 Това е доста безполезно знание. Единственото, което можеш да издъниш е, да заложиш int(8) вместо bigint някъде, като проектираш база, което на мен не ми се е случвало.

Оставете отговор