Почему VARCHAR нужна спецификация длины?

Почему мы должны всегда указывать VARCHAR(length) вместо просто VARCHAR? Это динамично так или иначе.

UPD: я озадачен конкретно тем, что это обязательно (например, в MySQL).

53
задан Fixpoint 1 July 2010 в 00:19
поделиться

6 ответов

«Длина» VARCHAR - это не длина содержимого, это максимальная длина содержимого.

Максимальная длина VARCHAR не является динамической, она фиксирована и поэтому должна быть указана.

Если вы не хотите определять для него максимальный размер, используйте VARCHAR (MAX).

33
ответ дан 7 November 2019 в 08:50
поделиться

Из Википедия :

Поля Varchar могут быть любого размера. до предела. Лимит отличается от типы баз данных, Oracle 9i База данных имеет ограничение в 4000 байт, База данных MySQL имеет ограничение в 65 535 байтов (для всей строки) и Microsoft SQL Server 2005 8000 байт (если не используется varchar (max), который имеет максимальную емкость хранения 2 147 483 648 байт).

1
ответ дан 7 November 2019 в 08:50
поделиться

Во-первых, он не нужен во всех базах данных. Посмотрите на SQL Server , где это необязательно.

Тем не менее, он определяет максимальный размер содержимого поля. Неплохая вещь сама по себе, и она несет в себе смысл (например - номера телефонов, в которых не нужно указывать международные номера).

13
ответ дан 7 November 2019 в 08:50
поделиться

Ответ: вам не нужно, это необязательно.

Он нужен, если вы хотите, чтобы строки не превышали определенной длины.

3
ответ дан 7 November 2019 в 08:50
поделиться

Вы можете рассматривать это как ограничение ваших данных. Это гарантирует, что вы не храните данные, которые нарушают ваше ограничение. Это концептуально похоже на, например, ограничение проверки для целочисленного столбца, гарантирующее, что вводятся только положительные значения.

7
ответ дан 7 November 2019 в 08:50
поделиться

Чем больше база данных знает о данных, которые она хранит, тем больше оптимизаций она может сделать при поиске / добавлении / обновлении данных с помощью запросов.

4
ответ дан 7 November 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: