Столбец с этим типом данных может хранить последовательность символов

Как объявить столбец с этим типом данных

В CHAR(n) n — это число, которое может быть 1, 2, 3 или 255. Это просто способ сообщить серверу, что вы хотите сохранить в столбце число символов «n». Например, если вы объявляете свой столбец с помощью CHAR( 3 ), то это сообщает серверу MySQL, что вы хотите сохранить максимум три символа в столбце, поэтому в вашем столбце вы можете хранить «a» или «аа» или «ааа», но если вы попытаетесь сохранить «аааа», сервер выдаст ошибку.

Что делать, если вы хотите сохранить более 255 символов в своем столбце, для этого вы используете VARCHAR ( n )

В VARCHAR( n) «n» может содержать такие значения, как 1, 2, 3 или 65 535. Таким образом, вы можете хранить в столбце максимум 65 535 символов.

Разница между CHAR и VARCHAR

СИМВОЛ (n)

Столбец с данными этого типа может хранить не более 255 символов.

Столбец с данными этого типа может хранить только фиксированную длину символов, контролируемую «n». Скажем, вы объявляете свой столбец с помощью CHAR( 3 ), тогда ваш столбец будет принимать последовательность из трех символов за раз. Например, «aaa», «bbb», «fgh», «DDN» и т. д.

Если вы попытаетесь вставить последовательность символов длиной менее трех, например «a», то сервер MySQL преобразует этот символ в последовательность символов, имеющую длину 3, добавив необходимый пробел справа от символа, например «a» ( MySQL добавил два пробела справа от символа «a», чтобы сделать его последовательностью символов длиной 3). Когда вы попросите сервер MySQL прочитать это значение для вас, он удалит эти два дополнительных символа пробела и даст вам символ «a».

Обратите внимание, что MYSQL удалит все пробелы справа от символа во время чтения значения, например, если ваш столбец имеет тип данных CHAR ( 3 ), и вы вставили значение «a» длиной 3 ( после символа a ) в этом столбце есть два пробела, тогда MYSQL безопасно вставит это, но во время чтения этого значения MYSQL удалит эти два пробела и даст результат «a». MYSQL всегда будет удалять правильно заполненный пробел во время чтения значения.

Это означает, что независимо от длины вашей последовательности символов, она всегда будет вставлять в столбец такое же количество символов, как определено параметром n. если количество символов больше n, то это выдаст вам ошибку (если вы попытаетесь вставить «aaaa» в указанный выше столбец, сервер выдаст вам ошибку)

Это также означает, что значение вашего столбца будет занимать одинаковый объем памяти на диске (в зависимости от значения n ) независимо от длины последовательности символов.

В приведенной выше таблице вы можете видеть, что независимо от вашего значения, оно всегда будет потреблять один и тот же объем памяти.

Посмотрите на последнюю строку таблицы, которая содержит значение «abcdefgh», при вставке в столбец с типом данных CHAR(4) значение усекается до «abcd». Это происходит только тогда, когда MySQL не находится в строгом режиме, иначе он выдаст вам ошибку.

VARCHAR(n)

Столбец с этим типом данных также хранит последовательность символов, но вместо максимум 255 символов он может хранить максимум65 535 символов.

Этот тип столбца может хранить переменное количество символов и потреблять только необходимый объем памяти. Чтобы понять это яснее, рассмотрим пример

Допустим, вы объявляете столбец с типом данных VARCHAR(4), это сообщает серверу MYSQL, что вы хотите хранить максимум 4 символа в столбце, это означает, что вы можете хранить последовательность символов, например «a», «aa». , «aaa» и «aaaa», но если вы попытаетесь вставить «aaaaaa», тогда MYSQL урежет значение до «aaaa» (длина 4 символа), если MYSQL не находится в строгом режиме, иначе это даст вам ошибку

По ощущениям разницы между CHAR и VARCHAR нет, ну есть в плане потребления памяти и скорости чтения значения.

Давайте посмотрим, как этот тип данных будет потреблять память на диске.

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

Вы также можете заметить, что VARCHAR использует один дополнительный байт по сравнению с типом данных CHAR.

С точки зрения скорости сортировка или доступ к значению из столбца с типом данных CHAR быстрее по сравнению со столбцом с типом данных VARCHAR, это все из-за того, что они размещаются в памяти по-другому.

Итак, перед созданием таблицы убедитесь, какой тип данных вы должны использовать. Я предлагаю вам использовать CHAR, если вы знаете, что ваша последовательность символов не будет превышать 255 символов.