Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / БД / Базы данных Учебник Окончательный вариант!!!.doc
Скачиваний:
209
Добавлен:
22.05.2015
Размер:
1.77 Mб
Скачать

4.2. Mysql

4.2.1 Типы данных.

MySQL включает в себя многие типы данных из ISO SQL: 2003 Standard и добавляет другие типы данных. ISO SQL: 2003 Standard определяет семь категорий типов данных:

CharacterString(строковый)

National Character String (национальный строковый)

Binary Large Object String (двоичный)

Numeric (числовой)

Boolean (логический)

Datetime (дата/время)

Interval (интервальный)

4.2.1.1.Character String (строковый)

ISO SQL: 2003 Standard определяет три строковых типа. Каждый строковый тип имеет более чем одно ключевое слово, связанное с ним. Стандартные строковые типы и связанные с ними ключевые слова:

С фиксированной длиной строки:

CHARACTER(длина)

CHAR(длина)

С переменной длиной строки:

CHARACTER VARYING(длина)

CHAR VARYING(длина)

VARCHAR(длина)

Символьные объекты:

CHARACTER LARGE OBJECT

CHAR LARGE OBJECT

CLOB

Типы CHAR и VARCHR похожи, но отличаются способом сохранения и извлечения.

Длина столбца CHAR фиксирована и равна длине, которая указывается при создании таблицы. Она может иметь любое значение от 0 до 255 (до версии MySQL 3.23 длина CHA R могла быть от 1 до 255). При сохранении значение CHA R выравнивается за счет добавления пробелов справа до указанной длины столбца. Когда значение CHA R извлекается, завершающие пробелы удаляются.

Значения, хранимые в столбцах VARCHAR , являются строками переменной длины. Вы можете объявить столбец VARCHAR с длиной от 0 до 255, так же, как и CHAR (до версии MySQL 3.23 длина VARCHAR могла быть от 1 до 255). Однако, в отличие от CHAR , в столбце VARCHAR сохраняется столько знаков, сколько необходимо, плюс один байт для записи длины. Значение не дополняется пробелами, наоборот, завершающие пробелы удаляются при сохранении. Это поведение отличается от стандартных спецификаций SQL.

При сохранении и извлечении никаких преобразований регистра не выполняется. Если вы присваиваете столбцу CHAR или VARCHAR значение, превышающее его длину, оно усекается.

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

Также MySqlподдерживает несколько нестандартных строковых типов

С переменной длиной строки:

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

Рассмотрим пример использования CHAR:

CREATE TABLE t

(

c l CHAR(20) CHARACTER SET utf8 ,

c2 CHAR(20) CHARACTER SET latinl COLLATE latinl_bin

) ;

Показанное выше определение таблицы создает столбец С1, который имеет набор символов utf8 с порядком сопоставления по умолчанию для этого символьного набора, и столбец С2 с набором символовlatinlи бинарным порядком сопоставления. Бинарное сопоставление нечувствительно к регистру.

Строковые типы

Наименование типа данных

Принадлежность к SQl стандарту

Фиксированная/переменная длина

Диапазон

Размер

Атрибуты

CHAR

принадлежит

фиксированная

длина 0-255, зависит от характера множества

M*x байт

ASCII

BINARY

CHARACTER

SETCOLLATION

DEFAULT

UNICODE

VARCHAR

принадлежит

переменная

длина 0-255, зависит от характера множества

L*x+1

если L<255

L*x+2

если L>255

ASCII

BINARY

CHARACTER

SETCOLLATION

DEFAULT

UNICODE

TINYTEXT

не принадлежит

переменная

максимальная длина

255 байт

L+1 байт

ASCII

BINARY

CHARACTER

SETCOLLATION

UNICODE

TEXT

не принадлежит

переменная

максимальная длина

65,535 байт (64Kb)

L+2

байта

ASCII

BINARY

CHARACTER

SETCOLLATION

UNICODE

MEDIUMTEXT

не принадлежит

переменная

максимальная длина

16,777,215 байт (16Mb)

L+3 байта

ASCII

BINARY

CHARACTER

SETCOLLATION

UNICODE

LONGTEXT

не принадлежит

переменная

максимальная длина

4,294,967,295 (4Gb)

L+4 байта

ASCII

BINARY

CHARACTER

SETCOLLATION

NOT NULL

NULL

UNICODE

Соседние файлы в папке БД