За последние 24 часа нас посетили 37819 программистов и 7849 роботов. Сейчас ищут 1777 программистов ...

Как правильно задать тип поля?

Тема в разделе "MySQL", создана пользователем Vladd55, 24 июн 2023.

  1. Vladd55

    Vladd55 Активный пользователь

    С нами с:
    11 дек 2021
    Сообщения:
    88
    Симпатии:
    1
    Добрый день!

    В PHPMyAdmin для задания поля есть вот такие окна (скриншот).

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

    Вот поле TINYINT. Это тип целых чисел. Диапазон значений от -127 до 128, либо 0 до 255, в зависимости от того, может ли это поле быть отрицательным.

    Если у меня максимальное число 100, то как определить это поле? TINYINT(100) ?
    Я устанавливал TINYINT(4), и в это поле тоже записывается число 100.

    А если число от -100 до +100. Тогда как?

    * * *

    А вот поле INT. Его диапазон: от -2147483648 до 2147483647, либо от 0 до 4294967295.
    Если максимальное число 1000, то как определить это поле? INT(1000) ?
     

    Вложения:

  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    По умолчанию тип «знаковый», т.е. будут и отрицательные числа. Если нужен «беззнаковый», добавляете модификатор unsigned, например tinyint unsigned. Фигня в скобках для целочисленных типов уже устарела. Можно не указывать. На инф. размер это никогда не влияло. Читайте доки.
    --- Добавлено ---
    В скобках необходимое кол-во знакомест при выводе указывалось. Т.е. для int (это 32 бита) максимум будет 10 или 11 (11 для знаковых, т.к. у них еще символ минус может быть).
     
  3. Vladd55

    Vladd55 Активный пользователь

    С нами с:
    11 дек 2021
    Сообщения:
    88
    Симпатии:
    1
    А как объяснить tinyint(12) и tinyint(255) ? Такие поля я встречал в чужих базах. И PHPMyAdmin не ругается, если их создать.

    А если при создании поля в PHPMyAdmin количество знаков в tinyint не указать, то PHPMyAdmin сам делает tinyint(4). Может быть, это и есть верный вариант?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    Тупостью или желанием сделать широкие столбики при выводе в консоль, т.е. с кучей пробелов. Или, может, хотят, чтобы в заголовке таблицы имя поля норм. умещалось. Никогда не страдал этой фигней. За гуру администрирования и аналитики БД тоже таких страданий не замечал.
    --- Добавлено ---
    Я тебе написал, что в восьмерке (речь, естественно, о самом мускуле) это уже пофиг. Но если жить не можешь без этой фигни, делай на автомате под необходимый максимум, как это делает твоя любимая PMA.
    --- Добавлено ---
    tinyint(4) или tinyint(3) unsigned
     
    #4 miketomlin, 24 июн 2023
    Последнее редактирование: 24 июн 2023
    Vladd55 нравится это.