These are chat archives for dru-io/Drupal

28th
Jun 2016
kossmokvin
@kossmokvin
Jun 28 2016 11:46
Приветствую, друзья. Помогите, пожалуйста, новичку разобраться в MySQL. Да, понимаю, что несколько несколько не по адресу. Но не знаю, где ещё можно получить быстрый ответ.
KarmaBot
@KarmaBot
Jun 28 2016 11:46
@kossmokvin, и тебе привет ;)
kossmokvin
@kossmokvin
Jun 28 2016 11:46
Вот к примеру:
TINYINT[(M)] [UNSIGNED] [ZEROFILL]
Очень малое целое число. Диапазон со знаком от -128 до 127. Диапазон без знака от 0 до 255.
Если я запишу TINYINT(10) - это будет означает, что я могу записать в эту ячейку любое целое число состоящее или 10 разрядов?? Или я смогу записывать только числа от 1-10 ??
boolboost
@boolboost
Jun 28 2016 11:50
Unsigned решает будет ли доступен отрицательный диапозон
kossmokvin
@kossmokvin
Jun 28 2016 11:52

@boolboost я прошу прощения. я в этой теме вообще ноль. Подскажите, пожалуйста, с самого начала. А то все справочники повторяют эту фразу, а никакого реального примера..

Вот к примеру, я хочу записывать в ячейку числа от пяти тысяч (4 разряда) до пятидесяти тысяч (5 разрядов). Какой тип данных мне следует использовать и почему?

boolboost
@boolboost
Jun 28 2016 11:53
smallint можно если без отрецательных
А так я бы держал лучше int
Первый 2 байта второй 4 байта
Их значение можно найти в интернете
kossmokvin
@kossmokvin
Jun 28 2016 11:56
То есть в ячейку smallint я смогу записать число 65535, а 65536 уже не смогу? Верно?
boolboost
@boolboost
Jun 28 2016 11:56
По моему нельзя, я так не извращался
Меняйти тип
kossmokvin
@kossmokvin
Jun 28 2016 11:57
Это на какую часть вопроса ответ?
boolboost
@boolboost
Jun 28 2016 11:57
По идеи 255 это макс
И size не должен помочь
Проверить то кто мешает
Не сможете скорее всего...
kossmokvin
@kossmokvin
Jun 28 2016 11:58
я чтото окончательно запутался... 255 - вы имеете в виду число? Или количество разрядов?
boolboost
@boolboost
Jun 28 2016 11:58
Число
kossmokvin
@kossmokvin
Jun 28 2016 11:59
В smallint??
boolboost
@boolboost
Jun 28 2016 11:59
Угу
Нее
TINYINT
А сори
Да всё как в таблице
kossmokvin
@kossmokvin
Jun 28 2016 11:59
То есть в ячейку smallint я смогу записать число 65535, а 65536 уже не смогу? Верно?
boolboost
@boolboost
Jun 28 2016 12:00
Да
kossmokvin
@kossmokvin
Jun 28 2016 12:01
Большое Вам спасибо. Теперь понятно. Просто ввело в заблуждение, что в VARCHAR указывается количество символов. Я подумал, что в числовых тоже указывается количество цифр. Последний вопрос - а как указать это самое Unsigned ?? smallint(1) ??
boolboost
@boolboost
Jun 28 2016 12:04
Ну size на это и указывает
На разрядность
Но как не крутите
А в 1 байт более чем 256 значений не поместятся
Вот и вся разница
А строки это другой способ хранения данных
kossmokvin
@kossmokvin
Jun 28 2016 12:06
То есть записью smallint(1) - я указываю количество разрядов? А как записать, чтоб были доступны минусовые значения? Как этот флаг применяется?
boolboost
@boolboost
Jun 28 2016 12:06
Там динамическое количество байт занимает
Это флагом
Да разрядов
Вообще на практике их можно не указывать
Если задача не требует
А как его поменять нагуглите
Я обычно не меняю
Drupal же есть))
Ну и phpmyadmin например
kossmokvin
@kossmokvin
Jun 28 2016 12:09
Да, собственно в друпале конструктор таблицы в schema позволяет указывать Unsigned . Но просто хотелось разобраться, как оно работает на самом деле )) большое Вам спасибо! Всех благ!
boolboost
@boolboost
Jun 28 2016 12:10
Изучал на практике
Там как то сильно углублятся не приходится
Вам наверное лучше найти книжку по sql
kossmokvin
@kossmokvin
Jun 28 2016 12:13
та мне тут нужна небольшая табличка под модуль написанный на коленке. Хотелось побыстрому сделать. Но книжку видно всё равно придётся искать на будущее ))
boolboost
@boolboost
Jun 28 2016 12:47
int 2 милиарда хватит каждому
Тоже делал такое не давно
Но перешли на nodejs решение
Так что модуль похоже на удаление пойдёт
Alan Bondarchuk
@fortis
Jun 28 2016 12:59
@kossmokvin нет это не разрядность, размер ты задаешь типом
tinyint размер, unsigned значит беззнаковое
то есть не отрицательное
а с int (11) ты задаешь сколько символов отображать при выборке
MySQL supports an extension for optionally specifying the display width of integer data types in parentheses following the base keyword for the type. For example, INT(4) specifies an INT with a display width of four digits.
boolboost
@boolboost
Jun 28 2016 13:04
Хм
Alan Bondarchuk
@fortis
Jun 28 2016 13:04
но обычно ты разницы не увидишь
boolboost
@boolboost
Jun 28 2016 13:04
А это не одно и тоже
Alan Bondarchuk
@fortis
Jun 28 2016 13:04
только с ZEROFILL
нет, если у тебя ширина отображения 4 а в числе 10 цифр то ты и получишь 10 цифр
так же если у тебя ширина отображения 5 цифр а в числе 2 цифры ты получишь свое число с 2 цифрами
boolboost
@boolboost
Jun 28 2016 13:05
Но с нулями же
Alan Bondarchuk
@fortis
Jun 28 2016 13:05
нет
с нулями если у тебя zerofill указан к полю
Alan Bondarchuk
@fortis
Jun 28 2016 13:13
это возможность хранить способ отображения данных в базе, а не в приложении
а вот с VARCHAR (5) задает максимальную длинну строки в 5 символов
в целом вряд ли ширина отображения с друпалом где-то пригождается, форматирование вывода лучше делать в приложении - в друпале, если только вам не досталась сторонняя база и чужая боль)))

а с int (11) ты задаешь сколько символов отображать при выборке

тут поправка да: при выборке с zerofill

Alan Bondarchuk
@fortis
Jun 28 2016 13:27
но целое всегда будет весить 4 байта, что бы ты не указал в скобочках, и максимальное значение от того не изменится у целого. а строка это последовательность байт и там задают максимальную длинну
boolboost
@boolboost
Jun 28 2016 14:09
Это я понимаю)
Ты что я же с c++))
Кому-нибудь будет полезно
Andrew Berezovsky
@duozersk
Jun 28 2016 15:16
@evgeniypiter ещё остались вопросы по хибридауф?