Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Типы данных int(m). 
:(
    Опции темы
SABROG
Дата 20.2.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



Вопрос простенький, но я что-то не могу разобраться. Есть 2 базы данных: MySQL, PostgreSQL
Первая поддерживают указание типа данных int(m), вторая нет. Что дает число в скобках ?

В документации по MySQL написано, что это число задаяет количество выводимых символов. Т.е. если я укажу int(3), то это создаст тип данных размером в 4 байта, и если там будет число 123456789, то я буду видеть только 789 ? Какой тогда смысл писать int(10), если мы и так знаем, что 4 байта могут содержать максимальное значение 4294967295, как раз 10 знаков, т.е. int(10) == int. Или я может быть чего-то не понимаю и int(10) позволяет расширить тип int с 4 байт до 5 ?

Это сообщение отредактировал(а) SABROG - 20.2.2008, 19:15


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Akina
Дата 20.2.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



 
Цитата

Display width is unrelated to the storage size or range of values a type can contain


Цитата

The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column.

Note that if you store larger values than the display width in an integer column, you may experience problems when MySQL generates temporary tables for some complicated joins, because in these cases MySQL trusts that the data did fit into the original column width. 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SABROG
Дата 20.2.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: нет
Всего: 91



На английском это хорошо, но ответ получился не полным из-за того, что мне удалось опять же понять частично. Т.е. я правильно вывод делаю, значение влияет только на отоборажение знаков, а содержаться могут значения с большим количеством разрядов, но не больше чем вмещает сам тип ?

Основываясь на этом выводе получается, что человек здесь - http://www.samag.ru/art/07.2007/07.2007_02.html
явно не знает синтаксиса ни MySQL ни PostgreSQL. Ибо int = int(10), но явно int не равен bigint'у.

Это сообщение отредактировал(а) SABROG - 20.2.2008, 20:50


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Akina
Дата 20.2.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Цитата(SABROG @  20.2.2008,  21:38 Найти цитируемый пост)
 я правильно вывод делаю, значение влияет только на отоборажение знаков, а содержаться могут значения с большим количеством разрядов, но не больше чем вмещает сам тип ?

Да. Именно это и написано на импортном. 
Вот как это звучит в официальном переводе:
Цитата

В качестве расширения стандарта ANSI/ISO SQL92 MySQL также поддерживает числовые типы представления данных TINYINT, MEDIUMINT и BIGINT, кратко описанные в таблице выше. Еще одно расширение указанного стандарта, поддерживаемое MySQL, позволяет при необходимости указывать количество показываемых пользователю символов целого числа в круглых скобках, следующих за базовым ключевым словом данного типа (например INT(4)). Это необязательное указание количества выводимых символов используется для дополнения слева выводимых значений, которые содержат символов меньше, чем заданная ширина столбца, однако не накладывает ограничений ни на диапазон величин, которые могут храниться в столбце, ни на количество разрядов, которые могут выводиться для величин, у которых количество символов превосходит ширину данного столбца. Если дополнительно указан необязательный атрибут ZEROFILL, свободные позиции по умолчанию заполняются нолями. Например, для столбца, объявленного как INT(5) ZEROFILL, величина 4 извлекается как 00004. Следует учитывать, что если в столбце для целых чисел хранится величина с количеством символов, превышающим заданную ширину столбца, могут возникнуть проблемы, когда MySQL будет генерировать временные таблицы для некоторых сложных связей, так как в подобных случаях MySQL полагает, что данные действительно поместились в столбец имеющейся ширины. 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.