Unsigned sql что это

Числовые типы данных

Необходимо понимать, чем больше диапазон значений у типа данных, тем больше памяти он занимает. Поэтому, если предполагается, что значения в столбце не будут превышать 100, то используйте тип TINYINT. Если при этом все значения будут положительными, то используйте атрибут UNSIGNED. Правильный выбор типа данных позволяет сэкономить место для хранения этих данных.

Строковые типы данных

Календарные типы данных

Тип данных NULL

Вообще-то это лишь условно можно назвать типом данных. По сути это скорее указатель возможности отсутствия значения. Например, когда вы регистрируетесь на каком-либо сайте, вам предлагается заполнить форму, в которой присутствуют, как обязательные, так и необязательные поля. Понятно, что регистрация пользователя невозможна без указания логина и пароля, а вот дату рождения и пол пользователь может указать по желанию. Для того, чтобы хранить такую информацию в БД и используют два значения:

NOT NULL (значение не может отсутствовать) для полей логин и пароль,

NULL (значение может отсутствовать) для полей дата рождения и пол.

По умолчанию всем столбцам присваивается тип NOT NULL, поэтому его можно явно не указывать.

Таким образом, мы создаем таблицу с 4 столбцами: логин (не более 20 символов) обязательное, пароль (не более 15 символов) обязательное, пол (мужской или женский) не обязательное, дата рождения (тип дата) необязательное.

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

Видеоуроки php + mysql

Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.

Источник

Типы данных в MySQL (сжатый справочник для PHP программиста)

Что и как и как много хранит MySQL?

Данный материал создан специально для программистов, которые быстро смогут определиться какой тип данных лучше выбрать для хранения значений в БД MySQL.

Для затравки, интересная цитата из мануала по MySQL:
«Максимальный размер записи в MyISAM составляет 65534 байтов. Каждый BLOB или TEXT-столбец засчитывается здесь как 5-9 байтов.» — как это трактовать однозначно не понятно. НО ясно что много-примного столбцов в таблицу на засунешь. «Извращенистые программисты» — будьте аккуратны (66000 столбцов вы точно создать не сможете).

UPD: Если найдете ошибку, или я что-то где-то утаил — отпишитесь в комментах, с удовольствием добавлю.

UPD1 В первую очередь (и самый лучший вариант для новичков) прочитать ОФИЦИАЛЬНЫЙ МАНУАЛ dev.mysql.com/doc/refman/5.0/en/data-types.html (спасибо Psyh за прямую ссылку), а здесь вырезка для META обработчиков данных (как в лице программистов так и в лице машинной обработки).

UPD2 В принципе, все что написано ниже, можно прочитать по адресу www.mysql.ru/docs/man/Column_types.html (за ссылку «русского перевода», спасибо artuska).

UPD3 Еще одну неплохую ссылку предоставил 4all: newcontinent.ru/h/mysqlc (материал на русском)

UPD4 Цитата из комментов от egorF:
# 14«Как главный редактор русскоязычного перевода доки на MySQL, я рекомендую в него не заглядывать — он уже сказочно морально устарел.»

Следующий массив вполне понятен PHP программистам.
Да и вообще, любые уважающие себя программисты это поймут.

Например:
‘int’=>Array(‘byte’=>4, ‘min’=>-2147483648, ‘max’=>2147483647, ‘umin’=>0, ‘umax’=>4294967295),

Используется так:
Мне надо сохранить в поле максимальное числовое значение 234 259 000 000 000.
INT — для этого не подходит. Смотрим другие типы и находим, что BIGINT вполне подойдет.

$MYSQL_TYPES=Array(
// INTEGER
// byte — кол-во байт на хранение,
// max/min — предельные значения,
// umax/umin — беззнаковые предельные значения
‘int’ =>Array( ‘byte’ =>4, ‘min’ =>-2147483648, ‘max’ =>2147483647, ‘umin’ =>0, ‘umax’ =>4294967295),
‘bigint’ =>Array( ‘byte’ =>8, ‘min’ =>-9223372036854775808, ‘max’ =>9223372036854775807, ‘umin’ =>0, ‘umax’ =>18446744073709551615),
‘tinyint’ =>Array( ‘byte’ =>1, ‘min’ =>-128, ‘max’ =>127, ‘umin’ =>0, ‘umax’ =>255),
‘smallint’ =>Array( ‘byte’ =>2, ‘min’ =>-32768, ‘max’ =>32767, ‘umin’ =>0, ‘umax’ =>65535),
‘mediumint’ =>Array( ‘byte’ =>3, ‘min’ =>-8388608, ‘max’ =>8388607, ‘umin’ =>0, ‘umax’ =>16777215),

// FLOAT DOUBLE
// Внимание! Не храните денежные значения в этих полях. Деньги надо хранить — в DECIMAL
// у FLOAT ТОЧНОСТЬ ТОЛЬКО 7 ЦИФР. (все остальные цифры «смазываются»)
// у DOUBLE ТОЧНОСТЬ ТОЛЬКО 15 ЦИФР. (все остальные цифры «смазываются»)
// byte — кол-во байт для хранения поля (по-умолчанию)
// max_byte — максимальное кол-во байт для хранения
// negative_min/negative_max — минмаксы для отрицательных чисел
// positive_min/positive_max — минмаксы для положительных чисел
‘float’ =>Array( ‘byte’ =>4, ‘max_byte’ =>8, ‘negative_min’ =>-3.402823466E+38, ‘negative_max’ =>-1.175494351E-38, ‘positive_min’ =>1.175494351E-38, ‘positive_max’ =>3.402823466E+38),
‘double’ =>Array( ‘byte’ =>8, ‘negative_min’ =>-1.7976931348623157E+308, ‘negative_max’ =>-2.2250738585072014E-308, ‘positive_min’ =>2.2250738585072014E-308, ‘positive_max’ =>1.7976931348623157E+308),

// BOOLEAN
// сами все поймете
‘bool’ =>Array( ‘byte’ =>1, ‘true’ =>1, ‘false’ =>0),
‘boolean’ =>Array( ‘byte’ =>1, ‘true’ =>1, ‘false’ =>0),

// VARCHAR
// byte — кол-во байт отведенных для хранения (можно задать меньше)
// min_byte — минимальное кол-во байт в которых может храниться поле (если длина равна 1)
// В MYSQL 5.0.3 и выше, VARCHAR может быть до 65,535 символов.
// length — максимальная длина символов в поле
‘varchar’ =>Array( ‘byte’ =>256, ‘min_byte’ =>2, ‘length’ =>255),
‘char’ =>Array( ‘byte’ =>256, ‘min_byte’ =>2, ‘length’ =>255),

// TEXT
// byte — кол-во байт для хранения поля
// min_byte — минимальное кол-во байт для хранения одного символа (если длина поля равна 1)
// length — максимальное количество символов в поле
‘tinytext’ =>Array( ‘byte’ =>256, ‘min_byte’ =>2, ‘length’ =>255),
‘text’ =>Array( ‘byte’ =>65537, ‘min_byte’ =>3, ‘length’ =>65535),
‘mediumtext’ =>Array( ‘byte’ =>16777218, ‘min_byte’ =>4, ‘length’ =>16777215),
‘longtext’ =>Array( ‘byte’ =>4294967300, ‘min_byte’ =>5, ‘length’ =>4294967296),
‘tinyblob’ =>Array( ‘byte’ =>256, ‘min_byte’ =>2, ‘length’ =>255),
‘blob’ =>Array( ‘byte’ =>65537, ‘min_byte’ =>3, ‘length’ =>65535),
‘mediumblob’ =>Array( ‘byte’ =>16777219, ‘min_byte’ =>4, ‘length’ =>16777215),
‘longblob’ =>Array( ‘byte’ =>4294967300, ‘min_byte’ =>5, ‘length’ =>4294967296),

Источник

Выбор типов данных в Mysql

Unsigned sql что это. Смотреть фото Unsigned sql что это. Смотреть картинку Unsigned sql что это. Картинка про Unsigned sql что это. Фото Unsigned sql что это Unsigned sql что это. Смотреть фото Unsigned sql что это. Смотреть картинку Unsigned sql что это. Картинка про Unsigned sql что это. Фото Unsigned sql что это Unsigned sql что это. Смотреть фото Unsigned sql что это. Смотреть картинку Unsigned sql что это. Картинка про Unsigned sql что это. Фото Unsigned sql что это

При создании таблиц в Mysql мы определяем типы данных и дополнительные правила для колонок (размер, индексы, ограничения):

Пример создания таблицы в Mysql

Как выбрать “правильные” типы данных? Очень просто — нужно соответствовать правилу “чем меньше тем лучше”.
Чем меньше места будут занимать значения в таблице, тем проще будет базе данных читать и записывать их.

Нужны ли все колонки?

Для начала задайте своему приложению пару вопросов. Нужны ли все колонки? Возможно хватит только некоторых?

Не старайтесь угадать будущее. Практически гарантировано, что вы будете изменять структуру таблицы со временем. Остановитесь только на тех данных, которые нужны сейчас.

Какая самая короткая версия данных?

Стоит ли хранить пол (gender) пользователя в полную длину? Или достаточно будет одной буквы (f/m)? Стоит ли хранить телефон пользователя с кодом страны, либо достаточно будет только прямого номера?

Сократите длину всех колонок до минимума

Задайте эти вопросы всем колонкам будущей таблицы.

NULL значения

Значение NULL в Mysql — это специальное значение. Для работы с ним предусмотрены специальные функции. Для его обработки нужна дополнительная логика. Хорошим правилом будет избегать использования этого значения. Вместо этого можно использовать пустые значения для строк либо нули для чисел:

Значение NULL использоваться не будет

Однако не воспринимайте это, как ограничение. В некоторых случаях удобно использовать NULL, чтобы обозначить отсутсвие значения. Например, в DATETIME колонках:

Для всех числовых колонок обязательно рассчитайте максимальное значение. В Mysql существует 4 целочисленных типа:

Выбирайте минимальный тип данных исходя из максимального значения колонки.

Это может быть не так много для диска, зато критично для оперативной памяти.

UNSIGNED

Если отрицательное число неактуально для колонки, используйте UNSIGNED значения. Тогда максимально значение будет в два раза больше, однако минимальным будет ноль:

Длинна числовых типов

В Mysql можно указать длину колонки после указания числового типа:

Это не имеет никакого влияния ни на размер колонки ни на максимальное число. Просто никогда не используйте длину для числовых типов.

Большие числа

Для хранения очень больших точных чисел Mysql предлагает использовать тип DECIMAL :

Использование DECIMAL для нецелого числа

В скобках указываются количество количество цифр всего и их количество после запятой (может быть нулем). Поскольку процессоры не поддерживают математических операций с подобными числами, Mysql все подсчеты делает на своей стороне. А значит, это очень медленно.

FLOAT / DOUBLE

Используйте FLOAT / DOUBLE вместо DECIMAL, если вам не нужны очень точные числа

VARCHAR / CHAR

При выборе типов строк также действует правило минимума. Оцените максимальную длину строки и поставьте ограничение. Тип CHAR — тип фиксированной длины. Это значит, что для любой строки будет выделено всегда одно и то же количество байт:

для колонки будет всегда выделено место под 2 символа (даже, если ее значение будет пустым)

VARCHAR — тип переменной длины. В такой колонке строка будет занимать ровно свою длину (в количестве символов):

колонка будет содержать от 1 до 32 символов в зависимости от значения

Однако Mysql прибавит еще 1 или 2 байта на хранение длины самой строки. Также стоит учесть, что обновление такой строки может быть дорогой операцией (чревато фрагментацией данных, а значит — замедлением чтения). Используйте такое правило:

Если значения в текстовой колонке похожи по длине, выбирайте CHAR, иначе — VARCHAR.

BLOB / TEXT

Типы TEXT и BLOB отличаются между собой только тем, что для второго типа Mysql не делает преобразования кодировок (хранит, как есть).

Не используйте TEXT/BLOB типы для сортировочных колонок

Mysql не умеет выполнять сортировку по этим значениям, поэтому использует только первые max_sort_length символов. Точно также, при создании индекса по этой колонке необходимо указать длину:
CREATE INDEX article_body ON articles ( body(32) );

Указываем длину колонки для индексации

Тяжело представить зачем нужно индексировать текстовые колонки, просто не делайте этого. Если же захотите использовать возможность создания индекса для проверки уникальности, используйте вспомогательную колонку для хранения md5 хэша от текста:

По колонке body_md5 можно создать уникальный индекс

Преимущество этого типа в том, что он записывает номер значения вместо самого значения в каждую строку. Этим обеспечивается огромная экономия места.

Не используйте этот тип для динамических значений. Если есть список значений, который может расширяться (например, категории товаров), используйте отдельную таблицу с идентификатором:

Не используйте ENUM для динамических значений

DATETIME / TIMESTAMP

Оба формата дат позволяют хранить значения даты и времени вплоть до секунд. Однако между ними есть отличия:

Используйте формат TIMESTAMP для простановки дат событий (для чего он и создан). Например, время регистрации пользователя или публикации комментария. К тому же, он имеет удобный механизм инициализации и обновления:

Инициализация и автообновление колонок TIMESTAMP

TL;DR версия

Этот текст был написан несколько лет назад. С тех пор упомянутые здесь инструменты и софт могли получить обновления. Пожалуйста, проверяйте их актуальность.

Что такое индексы в Mysql и как их использовать для оптимизации запросов

Как исправить ошибку доступа к базе 1045 Access denied for user

Основные понятия о шардинге и репликации

Настройка Master-Master репликации на MySQL за 6 шагов

Примеры ad-hoc запросов и технологии для их исполнения

Анализ медленных запросов (профилирование) в MySQL с помощью Percona Toolkit

Как создать и использовать составной индекс в Mysql

Типы и способы применения репликации на примере MySQL

Синтаксис и оптимизация Mysql LIMIT

Настройка Master-Slave репликации на MySQL за 6 простых шагов

Правильная настройка Mysql под нагрузки и не только. Обновлено.

Check-unused-keys для определения неиспользуемых индексов в базе данных

И как правильно работать с длительными соединениями в MySQL

Запрос для определения версии Mysql: SELECT version()

3 примера установки индексов в JOIN запросах

Анализ медленных запросов с помощью EXPLAIN

Что значит и как это починить

Описание, рекомендации и значение параметра query_cache_size

Быстрый подсчет уникальных значений за разные периоды времени

Использование партиций для ускорения сложных удалений

Включение и использование логов ошибок, запросов и медленных запросов, бинарного лога для проверки работы MySQL

Источник

Стандартные типы данных (MySQL)

Примечания

Числа

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
«Неупакованное» число с плавающей точкой. Ведет себя подобно столбцу CHAR, содержащему цифровое значение. Термин «неупакованное» означает, что число хранится в виде строки и при этом для каждого десятичного знака используется один символ. Разделительный знак десятичных разрядов, а также знак `-‘ для отрицательных чисел не учитываются в M (но место для них зарезервировано). Если атрибут D равен 0, величины будут представлены без десятичного знака, т.е. без дробной части. Максимальный интервал значений типа DECIMAL тот же, что и для типа DOUBLE, но действительный интервал для конкретного столбца DECIMAL может быть ограничен выбором значений атрибутов M и D. Если указан атрибут UNSIGNED, отрицательные значения недопустимы. Если атрибут D не указан, его значение по умолчанию равно 0. Если не указан M, его значение по умолчанию равно 10. В более ранних, чем MySQL 3.23, версиях параметр M должен содержать в себе место для знака числа и десятичного знака. DEC[(M[,D])] [UNSIGNED] [ZEROFILL] и NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL] являются синонимами для DECIMAL.
DECIMAL эквивалентно DECIMAL(10,0).

Время

DATE
Дата. Поддерживается интервал от ‘1000-01-01’ до ‘9999-12-31’. MySQL выводит значения DATE в формате ‘YYYY-MM-DD’, но можно установить значения в столбец DATE, используя как строки, так и числа.

DATETIME
Комбинация даты и времени. Поддерживается интервал от ‘1000-01-01 00:00:00’ до ‘9999-12-31 23:59:59’. MySQL выводит значения DATETIME в формате ‘YYYY-MM-DD HH:MM:SS’, но можно устанавливать значения в столбце DATETIME, используя как строки, так и числа.

TIMESTAMP[(M)]
Временная метка. Интервал от ‘1970-01-01 00:00:00’ до некоторого значения времени в 2037 году. MySQL выводит значения TIMESTAMP в форматах YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD или YYMMDD в зависимости от значений M: 14 (или отсутствующее), 12, 8, или 6; но можно также устанавливать значения в столбце TIMESTAMP, используя как строки, так и числа. Столбец TIMESTAMP полезен для записи даты и времени при выполнении операций INSERT или UPDATE, так как при этом автоматически вносятся значения даты и времени самой последней операции, если эти величины не введены программой. Можно также устанавливать текущее значение даты и времени, задавая значение NULL. Параметр M влияет только на способ вывода столбца TIMESTAMP; для хранения его значений всегда используется 4 байта. Следует учитывать, что столбцы TIMESTAMP(M), где M равно 8 или 14, представляют собой числа, в то время, как столбцы TIMESTAMP(M) с иным значением параметра M являются строками. Это убеждает, что можно надежно сделать дамп и восстановить таблицу с этими типами столбцов!
TIMESTAMP эквивалентно TIMESTAMP(14).

TIME
Время. Интервал от ‘-838:59:59’ до ‘838:59:59’. MySQL выводит значения TIME в формате ‘HH:MM:SS’, но можно устанавливать значения в столбце TIME, используя как строки, так и числа.

YEAR[(2|4)]
Год в двухзначном или четырехзначном форматах (по умолчанию формат четырехзначный). Допустимы следующие значения: с 1901 по 2155, 0000 для четырехзначного формата года и 1970-2069 при использовании двухзначного формата (70-69). MySQL выводит значения YEAR в формате YYYY, но можно задавать значения в столбце YEAR, используя как строки, так и числа (тип данных YEAR недоступен в версиях, предшествующих MySQL 3.22).
YEAR эквивалентно YEAR(4).

Символы

CHAR(M) [BINARY]
Строка фиксированной длины, при хранении всегда дополняется пробелами в конце строки до заданного размера. Диапазон параметра M составляет от 0 до 255 символов (от 1 до 255 в версиях, предшествующих MySQL 3.23). Концевые пробелы удаляются при выводе значения. Если не задан атрибут чувствительности к регистру BINARY, то величины CHAR сортируются и сравниваются как независимые от регистра в соответствии с установленным по умолчанию алфавитом. Атрибут NATIONAL CHAR (или его эквивалентная краткая форма NCHAR) представляет собой принятый в ANSI SQL способ указания, что в столбце CHAR должен использоваться установленный по умолчанию набор символов (CHARACTER). В MySQL это принято по умолчанию. CHAR является сокращением от CHARACTER. MySQL позволяет создавать столбец типа CHAR(0). В основном это полезно, если необходимо обеспечить совместимость с некоторыми старыми приложениями, которые зависят от наличия столбца, но реально эту величину не используют. Кроме того, такая возможность может очень пригодиться в случае, если необходим столбец, который может содержать только 2 значения, а именно CHAR(0) (т.е. столбец, который не определен как NOT NULL, занимает только один бит и принимает только 2 значения: NULL или «»).
CHAR эквивалентно CHAR(1).

VARCHAR(M)
Строка переменной длины. С версии 5.0.3 диапазон параметра M составляет от 0 до 65535 символов. Однако, нужно учесть, что это значение распределяется среди всех данных ряда, не считая BLOB и TEXT, которые идут отдельно. Для UTF-8 максимальная длина данных ряда будет приблизительно в три раза меньше, а именно: 21844.

Источник

зМБЧБ 12. фЙРЩ ДБООЩИ

пРЙУБОЙС ФЙРБ ДБООЩИ ЙУРПМШЪХАФ ЬФЙ УПЗМБЫЕОЙС:

12.1. лТБФЛЙК ПВЪПТ ФЙРПЧ ДБООЩИ

12.1.1. лТБФЛЙК ПВЪПТ ЮЙУМПЧЩИ ФЙРПЧ

дМС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ П УЧПКУФЧБИ Й ФТЕВПЧБОЙСИ ИТБОЕОЙС ЮЙУМПЧЩИ ФЙРПЧ УН. ТБЪДЕМЩ 12.2 Й 12.8.

M ХЛБЪЩЧБЕФ ОБ НБЛУЙНБМШОХА ЫЙТЙОХ ПФПВТБЦЕОЙС ДМС ФЙРПЧ ГЕМПЗП ЮЙУМБ. нБЛУЙНБМШОБС ЫЙТЙОБ 255. ыЙТЙОБ ОЕ УЧСЪБОБ У ДЙБРБЪПОПН ЪОБЮЕОЙК, ЛПФПТЩЕ ФЙР НПЦЕФ УПДЕТЦБФШ, ЛБЛ ПРЙУБОП Ч ТБЪДЕМЕ 12.2. дМС ЮЙУЕМ У РМБЧБАЭЕК ЪБРСФПК Й ФЙРПЧ ЖЙЛУЙТПЧБООПК ФПЮЛЙ M ПВЭЕЕ ЛПМЙЮЕУФЧП ГЙЖТ, ЛПФПТЩЕ НПЗХФ ВЩФШ УПИТБОЕОЩ.

еУМЙ чЩ ПРТЕДЕМСЕФЕ ZEROFILL ДМС ЮЙУМПЧПЗП УФПМВГБ, MySQL БЧФПНБФЙЮЕУЛЙ ДПВБЧМСЕФ UNSIGNED УФПМВГХ.

оЕЛПФПТЩЕ ЧЕЭЙ чЩ ДПМЦОЩ ЪОБФШ ПФОПУЙФЕМШОП УФПМВГПЧ BIGINT :

MySQL НПЦЕФ ПВТБВПФБФШ BIGINT Ч УМЕДХАЭЙИ УМХЮБСИ:

M ПВЭЕЕ ЛПМЙЮЕУФЧП ГЙЖТ Й D ЮЙУМП ГЙЖТ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК. еУМЙ M Й D ПРХЭЕОЩ, ЪОБЮЕОЙС УПИТБОЕОЩ Л РТЕДЕМБН, ТБЪТЕЫЕООЩН БРРБТБФОЩНЙ УТЕДУФЧБНЙ. юЙУМП ПДЙОБТОПК ФПЮОПУФЙ У РМБЧБАЭЕК ЪБРСФПК ЙНЕЕФ РТЙВМЙЪЙФЕМШОП 7 ДЕУСФЙЮОЩИ ТБЪТСДПЧ.

M ПВЭЕЕ ЛПМЙЮЕУФЧП ГЙЖТ Й D ЮЙУМП ГЙЖТ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК. еУМЙ M Й D ПРХЭЕОЩ, ЪОБЮЕОЙС УПИТБОЕОЩ Л РТЕДЕМБН, ТБЪТЕЫЕООЩН БРРБТБФОЩНЙ УТЕДУФЧБНЙ. юЙУМП ДЧПКОПК ФПЮОПУФЙ У РМБЧБАЭЕК ЪБРСФПК ЙНЕЕФ РТЙВМЙЪЙФЕМШОП 15 ДЕУСФЙЮОЩИ ТБЪТСДПЧ.

уЙОФБЛУЙУ FLOAT( p ) РТЕДХУНПФТЕО ДМС УПЧНЕУФЙНПУФЙ У ODBC.

12.1.2. лТБФЛЙК ПВЪПТ ФЙРПЧ ДБФЩ Й ЧТЕНЕОЙ

дМС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ П УЧПКУФЧБИ Й ФТЕВПЧБОЙСИ ИТБОЕОЙС ЧТЕНЕООЩИ ФЙРПЧ УН. ТБЪДЕМЩ 12.3 Й 12.8. дМС ПРЙУБОЙК ЖХОЛГЙК, ЛПФПТЩЕ ЧПЪДЕКУФЧХАФ ОБ ЧТЕНЕООЩЕ ЪОБЮЕОЙС УН. ТБЪДЕМ 13.7.

дМС ПРЙУБОЙС ДЙБРБЪПОБ DATE Й DATETIME «РПДДЕТЦЙЧБЕФУС» ПЪОБЮБЕФ, ЮФП, ИПФС ВПМЕЕ ТБООЙЕ ЪОБЮЕОЙС НПЗМЙ ВЩ ТБВПФБФШ, ОЕФ ОЙЛБЛПК ЗБТБОФЙЙ.

мАВПК УФПМВЕГ TIMESTAMP ЙМЙ DATETIME Ч ФБВМЙГЕ НПЦЕФ ЙНЕФШ БЧФПНБФЙЮЕУЛХА ЙОЙГЙБМЙЪБГЙА Й УЧПКУФЧБ ПВОПЧМЕОЙС.

дПРПМОЙФЕМШОПЕ ЪОБЮЕОЙЕ fsp Ч ДЙБРБЪПОЕ ПФ 0 ДП 6 НПЦЕФ ВЩФШ ДБОП, ЮФПВЩ ПРТЕДЕМЙФШ ДТПВОХА ФПЮОПУФШ УЕЛХОД. ъОБЮЕОЙЕ 0 РПЛБЪЩЧБЕФ, ЮФП ОЕФ ОЙЛБЛПК ДТПВОПК ЮБУФЙ. еУМЙ ПРХЭЕОП, ФПЮОПУФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА 0.

дПРПМОЙФЕМШОПЕ ЪОБЮЕОЙЕ fsp Ч ДЙБРБЪПОЕ ПФ 0 ДП 6 НПЦЕФ ВЩФШ ДБОП, ЮФПВЩ ПРТЕДЕМЙФШ ДТПВОХА ФПЮОПУФШ УЕЛХОД. ъОБЮЕОЙЕ 0 РПЛБЪЩЧБЕФ, ЮФП ОЕФ ОЙЛБЛПК ДТПВОПК ЮБУФЙ. еУМЙ ПРХЭЕОП, ФПЮОПУФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА 0.

лБЛ УЕТЧЕТ ПВТБВБФЩЧБЕФ ПРТЕДЕМЕОЙС TIMESTAMP ЪБЧЙУЙФ ПФ ЪОБЮЕОЙС РЕТЕНЕООПК explicit_defaults_for_timestamp (УН. ТБЪДЕМ 6.1.5). рП ХНПМЮБОЙА explicit_defaults_for_timestamp ПФЛМАЮЕОБ, Й УЕТЧЕТ ПВТБВБФЩЧБЕФ TIMESTAMP УМЕДХАЭЙН ПВТБЪПН:

дМС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ П ЖПТНБФЕ Й ЙОФЕТРТЕФБГЙЙ ЧИПДОЩИ ЪОБЮЕОЙК YEAR УН. ТБЪДЕМ 12.3.3.

уПЧПЛХРОЩЕ ЖХОЛГЙЙ SUM() Й AVG() ОЕ ТБВПФБАФ У ЧТЕНЕООЩНЙ ЪОБЮЕОЙСНЙ. пОЙ РТЕПВТБЪПЧЩЧБАФ ЪОБЮЕОЙС Ч ЮЙУМБ, ФЕТСС ЧУЕ РПУМЕ РЕТЧПЗП ОЕЮЙУМПЧПЗП УЙНЧПМБ. юФПВЩ ПВПКФЙ ЬФХ РТПВМЕНХ, РТЕПВТБЪХКФЕ Ч ЮЙУМПЧЩЕ НПДХМЙ, ЧЩРПМОЙФЕ УПЧПЛХРОХА ТБВПФХ Й РТЕПВТБЪХКФЕ ОБЪБД ЧП ЧТЕНЕООПЕ ЪОБЮЕОЙЕ. рТЙНЕТЩ:

12.1.3. лТБФЛЙК ПВЪПТ УФТПЛ

рТЙЪОБЛ CHARACTER SET ПРТЕДЕМСЕФ ОБВПТ УЙНЧПМПЧ, Б COLLATE ПРТЕДЕМСЕФ УПРПУФБЧМЕОЙЕ ДМС ОБВПТБ УЙНЧПМПЧ. оБРТЙНЕТ:

[NATIONAL] CHAR[( M )] [CHARACTER SET charset_name ] [COLLATE collation_name ]

уФТПЛБ ЖЙЛУЙТПЧБООПК ДМЙОЩ, ЛПФПТБС ЧУЕЗДБ ДПРПМОЕОБ УРТБЧБ РТПВЕМБНЙ ДП ХЛБЪБООПК ДМЙОЩ, ЛПЗДБ УПИТБОЕОБ. M РТЕДУФБЧМСЕФ ДМЙОХ УФПМВГБ Ч УЙНЧПМБИ. дЙБРБЪПО M ПФ 0 ДП 255. еУМЙ M ПРХЭЕО, ДМЙОБ 1.

лПОЕЮОЩЕ РТПВЕМЩ ХДБМЕОЩ, ЛПЗДБ ЪОБЮЕОЙС CHAR РПМХЮЕОЩ, ЕУМЙ ТЕЦЙН SQL PAD_CHAR_TO_FULL_LENGTH ЧЩЛМАЮЕО.

MySQL ИТБОЙФ ЪОБЮЕОЙС VARCHAR ЛБЛ РТЕЖЙЛУ Ч 1 ЙМЙ 2 ВБКФБ РМАУ ДБООЩЕ. рТЕЖЙЛУ ДМЙОЩ ХЛБЪЩЧБЕФ ОБ ЮЙУМП ВБКФПЧ Ч ЪОБЮЕОЙЙ. уФПМВЕГ VARCHAR ЙУРПМШЪХЕФ ПДЙО ВБКФ ДМЙОЩ, ЕУМЙ ЪОБЮЕОЙС ФТЕВХАФ ОЕ ВПМШЫЕ 255 ВБКФПЧ, ДЧБ ВБКФБ ДМЙОЩ, ЕУМЙ ЪОБЮЕОЙС НПЗХФ РПФТЕВПЧБФШ ВПМШЫЕ, ЮЕН 255 ВБКФПЧ.

х УФПМВГБ SET НПЦЕФ ВЩФШ НБЛУЙНХН 64 ПФМЙЮОЩИ ХЮБУФОЙЛБ.

12.2. юЙУМПЧЩЕ ФЙРЩ

дМС ЙОЖПТНБГЙЙ П ФПН, ЛБЛ MySQL ПВТБВБФЩЧБЕФ ОБЪОБЮЕОЙЕ ЪОБЮЕОЙК ЙЪ ДЙБРБЪПОБ УФПМВГБН Й РЕТЕРПМОЕОЙЕ ЧП ЧТЕНС ПГЕОЛЙ ЧЩТБЦЕОЙС УН. ТБЪДЕМ 12.2.6.

дМС ЙОЖПТНБГЙЙ П ЮЙУМПЧЩИ ФТЕВПЧБОЙСИ ИТБОЕОЙС ФЙРБ УН. ТБЪДЕМ 12.8.

фЙР ДБООЩИ, ЙУРПМШЪХЕНЩК ДМС ТЕЪХМШФБФБ ЧЩЮЙУМЕОЙС ОБ ЮЙУМПЧЩИ ПРЕТБОДБИ, ЪБЧЙУЙФ ПФ ФЙРПЧ ПРЕТБОДПЧ Й ПРЕТБГЙК, ЧЩРПМОЕООЩИ ОБ ОЙИ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ 13.6.1.

12.2.1. фЙРЩ ГЕМПЗП ЮЙУМБ (ФПЮОПЕ ЪОБЮЕОЙЕ) INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT

фЙРнЕУФПнЙОЙНХНнБЛУЙНХН
(ВБКФПЧ)(Signed/Unsigned)(Signed/Unsigned)
TINYINT1-128127
0255
SMALLINT2-3276832767
065535
MEDIUMINT3-83886088388607
016777215
INT4-21474836482147483647
04294967295
BIGINT8-92233720368547758089223372036854775807
018446744073709551615

12.2.2. фЙРЩ У ЖЙЛУЙТПЧБООПК ФПЮЛПК (ФПЮОПЕ ЪОБЮЕОЙЕ) DECIMAL, NUMERIC

MySQL ИТБОЙФ ЪОБЮЕОЙС DECIMAL Ч ДЧПЙЮОПН ЖПТНБФЕ. уН. ТБЪДЕМ 13.20.

ч ПРТЕДЕМЕОЙЙ УФПМВГБ DECIMAL НПЗХФ ВЩФШ ПРТЕДЕМЕОЩ ФПЮОПУФШ Й НБУЫФБВ (ПВЩЮОП ФБЛ Й ВЩЧБЕФ), ОБРТЙНЕТ:

ч ЬФПН РТЙНЕТЕ 5 ФПЮОПУФШ Й 2 НБУЫФБВ. фПЮОПУФШ РТЕДУФБЧМСЕФ ЮЙУМП УХЭЕУФЧЕООЩИ ГЙЖТ, ЛПФПТЩЕ УПИТБОЕОЩ ДМС ЪОБЮЕОЙК, Б НБУЫФБВ РТЕДУФБЧМСЕФ ЮЙУМП ГЙЖТ, ЛПФПТЩЕ НПЗХФ ВЩФШ УПИТБОЕОЩ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК.

еУМЙ НБУЫФБВ 0, ЪОБЮЕОЙС DECIMAL ОЕ УПДЕТЦБФ ДЕУСФЙЮОПК ЪБРСФПК ЙМЙ ДТПВОПК ЮБУФЙ.

нБЛУЙНБМШОПЕ ЛПМЙЮЕУФЧП ГЙЖТ ДМС DECIMAL 65, ОП ЖБЛФЙЮЕУЛЙК ДЙБРБЪПО ДМС ДБООПЗП УФПМВГБ DECIMAL НПЦЕФ ВЩФШ ПЗТБОЙЮЕО ФПЮОПУФША ЙМЙ НБУЫФБВПН ДМС ДБООПЗП УФПМВГБ. лПЗДБ ФБЛПНХ УФПМВГХ ОБЪОБЮБАФ ЪОБЮЕОЙЕ У ВПМШЫЙН ЛПМЙЮЕУФЧПН ГЙЖТ РПУМЕ ДЕУСФЙЮОПК ЪБРСФПК, ЮЕН ТБЪТЕЫЕОП ХЛБЪБООЩН НБУЫФБВПН, ЪОБЮЕОЙЕ РТЕПВТБЪПЧБОП Ч ФПФ НБУЫФБВ. фПЮОПЕ РПЧЕДЕОЙЕ ТБВПФБЕФ Ч ЪБЧЙУЙНПУФЙ ПФ УЙУФЕНЩ, ОП ЧППВЭЕ ЬЖЖЕЛФПН ВХДЕФ ХУЕЮЕОЙЕ Л ДПРХУФЙНПНХ ЮЙУМХ ГЙЖТ.

12.2.3. фЙРЩ У РМБЧБАЭЕК ЪБРСФПК (РТЙВМЙЪЙФЕМШОБС ФПЮОПУФШ) FLOAT, DOUBLE

фЙРЩ FLOAT Й DOUBLE РТЕДУФБЧМСАФ РТЙВМЙЪЙФЕМШОЩЕ ЪОБЮЕОЙС ЮЙУМПЧЩИ ДБООЩИ. MySQL ЙУРПМШЪХЕФ ЮЕФЩТЕ ВБКФБ ДМС ЪОБЮЕОЙК ПДЙОБТОПК ФПЮОПУФЙ Й ЧПУЕНШ ВБКФПЧ ДМС ЪОБЮЕОЙК ДЧПКОПК ФПЮОПУФЙ.

дМС FLOAT УФБОДБТФ SQL ТБЪТЕЫБЕФ ДПРПМОЙФЕМШОХА УРЕГЙЖЙЛБГЙА ФПЮОПУФЙ (ОП ОЕ ДЙБРБЪПО ЬЛУРПОЕОФЩ) Ч ВЙФБИ РПУМЕ ЛМАЮЕЧПЗП УМПЧБ FLOAT Ч ЛТХЗМЩИ УЛПВЛБИ. MySQL ФБЛЦЕ РПДДЕТЦЙЧБЕФ ЬФХ ДПРПМОЙФЕМШОХА УРЕГЙЖЙЛБГЙА ФПЮОПУФЙ, ОП ЪОБЮЕОЙЕ ФПЮОПУФЙ ЙУРПМШЪХЕФУС ФПМШЛП, ЮФПВЩ ПРТЕДЕМЙФШ ТБЪНЕТ ИТБОЕОЙС. тЕЪХМШФБФЩ ФПЮОПУФША ПФ 0 ДП 23 ИТБОСФУС Ч 4-ВБКФПЧПН УФПМВГЕ FLOAT ПДЙОБТОПК ФПЮОПУФЙ. тЕЪХМШФБФЩ ФПЮОПУФША ПФ 24 ДП 53 ИТБОСФУС Ч 8-ВБКФПЧПН УФПМВГЕ DOUBLE ДЧПКОПК ФПЮОПУФЙ.

рПУЛПМШЛХ ЪОБЮЕОЙС У РМБЧБАЭЕК ЪБРСФПК РТЙВМЙЪЙФЕМШОЩ Й ОЕ УПИТБОЕОЩ ЛБЛ ФПЮОЩЕ ЪОБЮЕОЙС, РПРЩФЛЙ ПВТБВПФБФШ ЙИ ЛБЛ ФПЮОЩЕ Ч УТБЧОЕОЙСИ НПЗХФ РТЙЧЕУФЙ Л РТПВМЕНБН. пОЙ ФБЛЦЕ РПДЧЕТЗБАФУС ЪБЧЙУЙНПУФСН ПФ ЧЩРПМОЕОЙС ЙМЙ РМБФЖПТНЩ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ B.5.4.8.

дМС НБЛУЙНБМШОПК НПВЙМШОПУФЙ ИТБОЕОЙС ЛПД, ФТЕВХАЭЙК РТЙВМЙЪЙФЕМШОЩИ ЪОБЮЕОЙК ЮЙУМПЧЩИ ДБООЩИ, ДПМЦЕО ЙУРПМШЪПЧБФШ FLOAT ЙМЙ DOUBLE PRECISION ВЕЪ УРЕГЙЖЙЛБГЙЙ ФПЮОПУФЙ ЙМЙ ЮЙУМБ ГЙЖТ.

12.2.4. фЙР ВЙФПЧПЗП ЪОБЮЕОЙС BIT

12.2.5. юЙУМПЧЩЕ РТЙЪОБЛЙ ФЙРБ

MySQL РПДДЕТЦЙЧБЕФ ТБУЫЙТЕОЙЕ ДМС ФПЗП, ЮФПВЩ РТПЙЪЧПМШОП ПРТЕДЕМЙФШ ЫЙТЙОХ ФЙРПЧ ДБООЩИ ГЕМПЗП ЮЙУМБ Ч ЛТХЗМЩИ УЛПВЛБИ РПУМЕ ПУОПЧОПЗП ЛМАЮЕЧПЗП УМПЧБ ДМС ФЙРБ. оБРТЙНЕТ, INT(4) ПРТЕДЕМСЕФ INT У ЫЙТЙОПК ПФПВТБЦЕОЙС ЮЕФЩТЕ ГЙЖТЩ. ьФБ ДПРПМОЙФЕМШОБС ЫЙТЙОБ НПЦЕФ ЙУРПМШЪПЧБФШУС РТЙМПЦЕОЙСНЙ, ЮФПВЩ ЧЩЧЕУФЙ ОБ ЬЛТБО ГЕМПЮЙУМЕООЩЕ ЪОБЮЕОЙС, ЙНЕАЭЙЕ ЫЙТЙОХ НЕОШЫЕ ЫЙТЙОЩ, ПРТЕДЕМЕООПК ДМС УФПМВГБ, ДПРПМОСС ЙИ УМЕЧБ РТПВЕМБНЙ. фБЛЙН ПВТБЪПН, ЬФБ ЫЙТЙОБ РТЙУХФУФЧХЕФ Ч НЕФБДБООЩИ, ЧПЪЧТБЭЕООЩИ У ОБВПТБНЙ ТЕЪХМШФБФПЧ. йУРПМШЪХЕФУС МЙ ЬФП ЙМЙ ОЕФ, ЪБЧЙУЙФ ПФ РТЙМПЦЕОЙС.

ч MySQL 8.0 ПФТЙГБФЕМШОЩЕ ЧЕМЙЮЙОЩ ДМС УФПМВГПЧ AUTO_INCREMENT ОЕ РПДДЕТЦБОЩ.

12.2.6. пВТБВПФЛБ РЕТЕРПМОЕОЙС Й ЧЩИПДБ ЙЪ ДЙБРБЪПОБ

лПЗДБ MySQL УПИТБОСЕФ ЪОБЮЕОЙЕ Ч ЮЙУМПЧПН УФПМВГЕ, ЛПФПТПЕ ЧОЕ ДПРХУФЙНПЗП ДЙБРБЪПОБ ФЙРБ ДБООЩИ УФПМВГБ, ТЕЪХМШФБФ ЪБЧЙУЙФ ПФ ТЕЦЙНБ SQL Ч ЬФП ЧТЕНС:

лПЗДБ УФПМВГХ У РМБЧБАЭЕК ЪБРСФПК ЙМЙ УФПМВГХ ЖЙЛУЙТПЧБООПК ФПЮЛЙ ОБЪОБЮБАФ ЪОБЮЕОЙЕ, ЛПФПТПЕ РТЕЧЩЫБЕФ ДЙБРБЪПО, РПДТБЪХНЕЧБЕНЩК ХЛБЪБООЩНЙ (ЙМЙ ЪОБЮЕОЙЕН РП ХНПМЮБОЙА) ФПЮОПУФША Й НБУЫФБВПН, MySQL УПИТБОЙФ ЪОБЮЕОЙЕ, РТЕДУФБЧМСАЭЕЕ УППФЧЕФУФЧХАЭХА ЛПОЕЮОХА ФПЮЛХ ФПЗП ДЙБРБЪПОБ.

рЕТЕРПМОЕОЙЕ ЧП ЧТЕНС ЮЙУМПЧПК ПГЕОЛЙ ЧЩТБЦЕОЙС РТЙЧПДЙФ Л ПЫЙВЛЕ. оБРТЙНЕТ, УБНПЕ ВПМШЫПЕ ЪОБЮЕОЙЕ BIGINT УП ЪОБЛПН 9223372036854775807, ФБЛЙН ПВТБЪПН, УМЕДХАЭЕЕ ЧЩТБЦЕОЙЕ РТПЙЪЧПДЙФ ПЫЙВЛХ:

юФПВЩ РПЪЧПМЙФШ ТБВПФЕ РТЕХУРЕФШ Ч ЬФПН УМХЮБЕ, РТЕПВТБЪХКФЕ ЪОБЮЕОЙЕ Ч ВЕЪЪОБЛПЧПЕ;

рТПЙУИПДЙФ МЙ РЕТЕРПМОЕОЙЕ, ЪБЧЙУЙФ ПФ ДЙБРБЪПОБ ПРЕТБОДПЧ, ФБЛЙН ПВТБЪПН, ДТХЗПК УРПУПВ ПВТБВПФБФШ РТЕДЩДХЭЕЕ ЧЩТБЦЕОЙЕ УПУФПЙФ Ч ФПН, ЮФПВЩ ЙУРПМШЪПЧБФШ БТЙЖНЕФЙЛХ ФПЮОПЗП ЪОБЮЕОЙС, РПФПНХ ЮФП ЪОБЮЕОЙС DECIMAL ЙНЕАФ ВПМШЫЙК ДЙБРБЪПО, ЮЕН ГЕМЩЕ ЮЙУМБ:

еУМЙ ТЕЦЙН SQL NO_UNSIGNED_SUBTRACTION ЧЛМАЮЕО, ТЕЪХМШФБФ ПФТЙГБФЕМЕО:

12.3. фЙРЩ ДБФЩ Й ЧТЕНЕОЙ

йНЕКФЕ Ч ЧЙДХ ЬФЙ ПВЭЙЕ УППВТБЦЕОЙС, ТБВПФБС У ФЙРБНЙ ЧТЕНЕОЙ Й ДБФПК:

фЙР ДБООЩИоХМЕЧПЕ ЪОБЮЕОЙЕ
DATE‘0000-00-00’
TIME’00:00:00′
DATETIME‘0000-00-00 00:00:00’
TIMESTAMP‘0000-00-00 00:00:00’
YEAR0000

12.3.1. фЙРЩ DATE, DATETIME Й TIMESTAMP

фЙР TIMESTAMP ЙУРПМШЪХЕФУС ДМС ЪОБЮЕОЙК, ЛПФПТЩЕ УПДЕТЦБФ ЮБУФЙ ДБФЩ Й ЧТЕНЕОЙ. TIMESTAMP ЙНЕЕФ ДЙБРБЪПО ПФ ‘1970-01-01 00:00:01’ UTC ДП ‘2038-01-19 03:14:07’ UTC.

фЙРЩ ДБООЩИ TIMESTAMP Й DATETIME РТЕДМБЗБАФ БЧФПНБФЙЮЕУЛХА ЙОЙГЙБМЙЪБГЙА Й ПВОПЧМЕОЙЕ Л ФЕЛХЭЕК ДБФЕ Й ЧТЕНЕОЙ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ 12.3.5.

ъОБКФЕ ПВ ПРТЕДЕМЕООЩИ УЧПКУФЧБИ ЙОФЕТРТЕФБГЙЙ ЪОБЮЕОЙС ДБФЩ Ч MySQL:

12.3.2. фЙР TIME

еДЙОУФЧЕООЩК ТБЪДЕМЙФЕМШ, РТЙЪОБООЩК НЕЦДХ ЮБУФША ЧТЕНЕОЙ Й ДТПВОПК ЮБУФША УЕЛХОД, СЧМСЕФУС ДЕУСФЙЮОПК ЪБРСФПК.

12.3.3. фЙР YEAR

фЙР YEAR 1-ВБКФПЧЩК ФЙР, ЙУРПМШЪХЕНЩК, ЮФПВЩ РТЕДУФБЧЙФШ ЪОБЮЕОЙС ЗПДБ. ьФП НПЦЕФ ВЩФШ ПВЯСЧМЕОП ЛБЛ YEAR ЙМЙ YEAR(4) Й ЙНЕЕФ ЫЙТЙОХ ЮЕФЩТЕ УЙНЧПМБ.

чЩ НПЦЕФЕ ПРТЕДЕМЙФШ ЪОБЮЕОЙС YEAR ЧП НОПЦЕУФЧЕ ЖПТНБФПЧ:

12.3.4. нЙЗТБГЙС УФПМВГПЧ ЙЪ YEAR(2) Ч YEAR(4)

хДБМЕОЙЕ РПДДЕТЦЛЙ YEAR(2) Ч MySQL 8.0

MySQL 8.0 ПВТБВБФЩЧБЕФ УФПМВГЩ YEAR(2) УМЕДХАЭЙН ПВТБЪПН:

нЙЗТБГЙС У YEAR(2) ОБ YEAR(4)

рТЕПВТБЪПЧБФШ УФПМВГЩ YEAR(2) Ч YEAR(4) чЩ НПЦЕФЕ УДЕМБФШ ЧТХЮОХА Ч МАВПЕ ЧТЕНС ВЕЪ ПВОПЧМЕОЙС. бМШФЕТОБФЙЧОП чЩ НПЦЕФЕ ПВОПЧЙФШУС ДП ЧЕТУЙЙ MySQL У ХНЕОШЫЕООПК ЙМЙ ХДБМЕООПК РПДДЕТЦЛПК YEAR(2) (MySQL 5.6.6 ЙМЙ РПЪЦЕ), ЪБФЕН УДЕМБФШ, ЮФПВЩ MySQL РТЕПВТБЪПЧБМ УФПМВГЩ YEAR(2) БЧФПНБФЙЮЕУЛЙ. ч РПУМЕДОЕН УМХЮБЕ ЙЪВЕЗБКФЕ ПВОПЧМЕОЙС, ЧЩЧПДС Й РЕТЕЪБЗТХЦБС чБЫЙ ДБООЩЕ, РПФПНХ ЮФП ЬФП НПЦЕФ ЙЪНЕОЙФШ ЪОБЮЕОЙС ДБООЩИ. лТПНЕ ФПЗП, ЕУМЙ чЩ ЙУРПМШЪХЕФЕ ТЕРМЙЛБГЙА, ЕУФШ УППВТБЦЕОЙС ПВОПЧМЕОЙС, ЛПФПТЩЕ чЩ ДПМЦОЩ РТЙОСФШ ЧП ЧОЙНБОЙЕ.

йЪНЕОЙФЕ ЙУРПМШЪПЧБОЙЕ УФПМВГБ ALTER TABLE УМЕДХАЭЙН ПВТБЪПН:

пВОПЧМЕОЙС УЕТЧЕТПЧ ТЕРМЙЛБГЙЙ ПВЩЮОП ПВОПЧМСАФ Л ВПМЕЕ ОПЧПК ЧЕТУЙЙ MySQL ЧЕДПНЩЕ ХУФТПКУФЧБ, ЪБФЕН ПВОПЧМСС ЧЕДХЭЕЕ ХУФТПКУФЧП. оБРТЙНЕТ, ЕУМЙ ЧЕДХЭЕЕ Й ЧЕДПНПЕ ХУФТПКУФЧБ ПВБ ЧЩРПМОСАФ MySQL 5.5, ФЙРЙЮОБС РПУМЕДПЧБФЕМШОПУФШ ПВОПЧМЕОЙС ЧПЧМЕЛБЕФ ПВОПЧМЕОЙЕ ЧЕДПНПЗП ХУФТПКУФЧБ ДП 5.6, Б ХЦЕ ЪБФЕН ЧЕДХЭЕЕ ХУФТПКУФЧП ПВОПЧМСЕФУС ДП 5.6. пФОПУЙФЕМШОП ДТХЗПЗП ПФОПЫЕОЙС YEAR(2) Ч MySQL 5.6.6, РПУМЕДПЧБФЕМШОПУФШ ПВОПЧМЕОЙС РТЙЧПДЙФ Л РТПВМЕНЕ: РТЕДРПМПЦЙФЕ, ЮФП ЧЕДПНПЕ ХУФТПКУФЧП ВЩМП ПВОПЧМЕОП, ОП ЧЕДХЭЕЕ РПЛБ ОЕФ. фПЗДБ УПУФБЧМЕОЙЕ ФБВМЙГЩ, УПДЕТЦБЭЕК УФПМВЕГ YEAR(2) ОБ ЧЕДХЭЕН ХУФТПКУФЧЕ РТЙЧПДЙФ Л ФБВМЙГЕ, УПДЕТЦБЭЕК УФПМВЕГ YEAR(4) ОБ ЧЕДПНПН. уМЕДПЧБФЕМШОП, Х ЬФЙИ ПРЕТБГЙК ВХДЕФ ТБЪМЙЮОЩК ТЕЪХМШФБФ ОБ ЧЕДХЭЕН Й ЧЕДПНПН ХУФТПКУФЧБИ, ЕУМЙ чЩ ВХДЕФЕ ЙУРПМШЪПЧБФШ ПУОПЧБООХА ОБ ЪБРТПУЕ ТЕРМЙЛБГЙА:

рЕТЕНЕЭЕОЙЕ ПФ YEAR(2) Л YEAR(4) ДПМЦОП ФБЛЦЕ ЧПЧМЕЮШ ЛПД РТПЗТБННЩ ДМС ЧПЪНПЦОПУФЙ ЙЪНЕОЕООПЗП ЙУУМЕДПЧБОЙС РПЧЕДЕОЙС РТЙ ХУМПЧЙСИ:

12.3.5. бЧФПНБФЙЮЕУЛБС ЙОЙГЙБМЙЪБГЙС Й ПВОПЧМЕОЙЕ ДМС TIMESTAMP Й DATETIME

уФПМВГЩ TIMESTAMP Й DATETIME НПЗХФ ВЩФШ БЧФПНБФЙЮЕУЛЙ ЙОЙГЙБМЙЪЙТПЧБОЩ Й ПВОПЧМЕОЩ Л ФЕЛХЭЕК ДБФЕ Й ЧТЕНЕОЙ (ФП ЕУФШ, timestamp).

дМС МАВПЗП УФПМВГБ TIMESTAMP ЙМЙ DATETIME Ч ФБВМЙГЕ чЩ НПЦЕФЕ ОБЪОБЮЙФШ ФЕЛХЭЙК timestamp Ч ЛБЮЕУФЧЕ ЪОБЮЕОЙС РП ХНПМЮБОЙА, ЪОБЮЕОЙС БЧФППВОПЧМЕОЙС ЙМЙ ПВПЙИ:

пРТЕДЕМЕОЙС УФПМВГПЧ TIMESTAMP ЙМЙ DATETIME НПЗХФ ПРТЕДЕМЙФШ ФЕЛХЭЙК timestamp ДМС ПВПЙИ ЪОБЮЕОЙК (РП ХНПМЮБОЙА Й БЧФППВОПЧМЕОЙС), ДМС ПДОПЗП, ОП ОЕ ДТХЗПЗП, ЙМЙ ОЙ ДМС ПДОПЗП. х ТБЪМЙЮОЩИ УФПМВГПЧ НПЗХФ ВЩФШ ТБЪМЙЮОЩЕ ЛПНВЙОБГЙЙ БЧФПНБФЙЮЕУЛЙИ УЧПКУФЧ. уМЕДХАЭЙЕ РТБЧЙМБ ПРЙУЩЧБАФ ЧПЪНПЦОПУФЙ:

ъОБЮЕОЙЕ РП ХНПМЮБОЙА ЪБЧЙУЙФ ПФ ФПЗП, ПРТЕДЕМСЕФ МЙ DEFAULT CURRENT_TIMESTAMP ЙМЙ РПУФПСООХА ЧЕМЙЮЙОХ. у CURRENT_TIMESTAMP ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ВХДЕФ ФЕЛХЭЙН timestamp.

тБУУНПФТЙФЕ ЬФЙ ФБВМЙЮОЩЕ ПРТЕДЕМЕОЙС:

х ФБВМЙГ ЕУФШ ЬФЙ УЧПКУФЧБ:

еУМЙ ПРТЕДЕМЕОЙЕ УФПМВГБ TIMESTAMP ЙМЙ DATETIME ЧЛМАЮБЕФ СЧОПЕ ДТПВОПЕ ЪОБЮЕОЙЕ ФПЮОПУФЙ УЕЛХОД ЗДЕ ХЗПДОП, ФП ЦЕ УБНПЕ ЪОБЮЕОЙЕ ДПМЦОП ЙУРПМШЪПЧБФШУС ЧУАДХ РП ПРТЕДЕМЕОЙА УФПМВГБ. ьФП ТБЪТЕЫЕОП:

йОЙГЙБМЙЪБГЙС TIMESTAMP Й БФТЙВХФ NULL

хУФБОПЧЙФШ УФПМВЕГ TIMESTAMP Ч МАВПК ФБВМЙГЕ Л ФЕЛХЭЕНХ timestamp ЧП ЧТЕНС ЧУФБЧЛЙ НПЦОП, СЧОП ОБЪОБЮЙЧ ФБЛПЕ ЪОБЮЕОЙЕ. оБРТЙНЕТ:

12.3.6. дТПВОЩЕ ДПМЙ УЕЛХОД ЧП ЧТЕНЕООЩИ ЪОБЮЕОЙСИ

12.3.7. рТЕПВТБЪПЧБОЙЕ НЕЦДХ ФЙРБНЙ ДБФЩ Й ЧТЕНЕОЙ

рТЕПВТБЪПЧБОЙЕ TIME Й DATETIME Л ЮЙУМПЧПК ЖПТНЕ (ОБРТЙНЕТ, ДПВБЧМСС +0 ) ЪБЧЙУЙФ ПФ ФПЗП, УПДЕТЦЙФ МЙ ЪОБЮЕОЙЕ ДТПВОХА ЮБУФШ УЕЛХОД. TIME( N ) ЙМЙ DATETIME( N ) РТЕПВТБЪПЧБО Ч ГЕМПЕ ЮЙУМП, ЛПЗДБ N = 0 (ЙМЙ ПРХЭЕОП) Й Ч DECIMAL У N ДЕУСФЙЮОЩИ ГЙЖТ, ЛПЗДБ N ВПМШЫЕ 0:

12.3.8. зПДЩ У ДЧХНС ГЙЖТБНЙ Ч ДБФБИ

ъОБЮЕОЙС ДБФЩ У ЗПДБНЙ У ДЧХНС ГЙЖТБНЙ ОЕПДОПЪОБЮОЩ, РПФПНХ ЮФП УФПМЕФЙЕ ОЕЙЪЧЕУФОП. фБЛЙЕ ЪОБЮЕОЙС ДПМЦОЩ ЙОФЕТРТЕФЙТПЧБФШУС Ч ЖПТНХ У ЮЕФЩТШНС ГЙЖТБНЙ, РПФПНХ ЮФП MySQL ИТБОЙФ ЗПДЩ, ЧОХФТЕООЕ ЙУРПМШЪХС ЮЕФЩТЕ ГЙЖТЩ.

рПНОЙФЕ, ЮФП ЬФЙ РТБЧЙМБ ФПМШЛП ЬЧТЙУФЙЛБ, ЛПФПТБС ПВЕУРЕЮЙЧБЕФ ТБЪХНОЩЕ РТЕДРПМПЦЕОЙС ПФОПУЙФЕМШОП ФПЗП, ЮФП ПЪОБЮБАФ чБЫЙ ЪОБЮЕОЙС ДБООЩИ. еУМЙ РТБЧЙМБ, ЙУРПМШЪХЕНЩЕ MySQL, ОЕ РТПЙЪЧПДСФ ЪОБЮЕОЙС, ЛПФПТЩЕ чЩ ФТЕВХЕФЕ, чЩ ДПМЦОЩ ПВЕУРЕЮЙФШ ПДОПЪОБЮОЩК ЧЧПД, УПДЕТЦБЭЙК ЪОБЮЕОЙС ЗПДБ ЙЪ ЮЕФЩТЕИ ЪОБЛПЧ.

жХОЛГЙЙ ЧТПДЕ MIN() Й MAX() ЛПОЧЕТФЙТХЕФ YEAR Л ЮЙУМХ. ьФП ПЪОБЮБЕФ, ЮФП ЪОБЮЕОЙЕ У ЗПДПН У ДЧХНС ГЙЖТБНЙ ОЕ ТБВПФБЕФ ДПМЦОЩН ПВТБЪПН У ЬФЙНЙ ЖХОЛГЙСНЙ. ъБФТХДОЙФЕМШОПЕ РПМПЦЕОЙЕ Ч ЬФПН УМХЮБЕ ДПМЦОП РТЕПВТБЪПЧБФШ YEAR Л ЖПТНБФХ ЗПДБ ЙЪ ЮЕФЩТЕИ ЪОБЛПЧ.

12.4. уФТПЛПЧЩЕ ФЙРЩ

12.4.1. фЙРЩ CHAR Й VARCHAR

фЙРЩ CHAR Й VARCHAR РПДПВОЩ, ОП ПФМЙЮБАФУС РП УРПУПВХ, ЛПФПТЩН ПОЙ УПИТБОЕОЩ Й РПМХЮЕОЩ. пОЙ ФБЛЦЕ ПФМЙЮБАФУС РП НБЛУЙНБМШОПК ДМЙОЕ Й РП ФПНХ, УПИТБОЕОЩ МЙ ЛПОЕЮОЩЕ РТПВЕМЩ.

фЙРЩ CHAR Й VARCHAR ПВЯСЧМЕОЩ У ДМЙОПК, ЛПФПТБС ХЛБЪЩЧБЕФ ОБ НБЛУЙНБМШОПЕ ЛПМЙЮЕУФЧП УЙНЧПМПЧ, ЛПФПТЩЕ чЩ ИПФЙФЕ УПИТБОЙФШ. оБРТЙНЕТ, CHAR(30) НПЦЕФ УПДЕТЦБФШ ДП 30 УЙНЧПМПЧ.

дМС VARCHAR ЛПОЕЮОЩЕ РТПВЕМЩ УЧЕТИ ДМЙОЩ УФПМВГБ ХУЕЮЕОЩ ДП ЧУФБЧЛЙ, Й РТЕДХРТЕЦДЕОЙЕ РТПЙЪЧЕДЕОП, ОЕЪБЧЙУЙНП ПФ ТЕЦЙНБ SQL. дМС CHAR ХУЕЮЕОЙЕ МЙЫОЙИ ЛПОЕЮОЩИ РТПВЕМПЧ ЧУФБЧМЕООЩИ ЪОБЮЕОЙК ЧЩРПМОЕОП ФЙИП, ОЕЪБЧЙУЙНП ПФ ТЕЦЙНБ SQL.

VARCHAR ОЕ ДПРПМОЕОЩ, ЛПЗДБ ПОЙ УПИТБОЕОЩ. лПОЕЮОЩЕ РТПВЕМЩ УПИТБОЕОЩ, ЛПЗДБ ЪОБЮЕОЙС УПИТБОЕОЩ Й РПМХЮЕОЩ, Ч УППФЧЕФУФЧЙЙ УП УФБОДБТФОЩН SQL.

ъОБЮЕОЙЕCHAR(4)оЕПВИПДЙНПЕ НЕУФПVARCHAR(4)оЕПВИПДЙНПЕ НЕУФП
»»4 ВБКФБ»1 ВБКФ
‘ab’‘ab’4 ВБКФБ‘ab’3 ВБКФБ
‘abcd’‘abcd’4 ВБКФБ‘abcd’5 ВБКФ
‘abcdefgh’‘abcd’4 ВБКФБ‘abcd’5 ВБКФ

ъОБЮЕОЙС Ч CHAR Й VARCHAR ПФУПТФЙТПЧБОЩ Й УТБЧОЕОЩ УПЗМБУОП УПРПУФБЧМЕОЙА ОБВПТБ УЙНЧПМПЧ, ОБЪОБЮЕООПНХ ОБ УФПМВЕГ.

ьФП ЙУФЙОБ ДМС ЧУЕИ ЧЕТУЙК MySQL, Й ОЕ ЪБФТПОХФП ТЕЦЙНПН SQL.

дМС ФЕИ УМХЮБЕЧ, ЗДЕ УЙНЧПМЩ-ЪБРПМОЙФЕМЙ ПВТЕЪБОЩ ЙМЙ УТБЧОЕОЙС ЙЗОПТЙТХАФ ЙИ, ЕУМЙ Х УФПМВГБ ВХДЕФ ЙОДЕЛУЙТПЧБОЙЕ, ЛПФПТПЕ ФТЕВХЕФ ХОЙЛБМШОЩИ ЪОБЮЕОЙК, ЧУФБЧМСС Ч ЪОБЮЕОЙС УФПМВГПЧ, ЛПФПТЩЕ ПФМЙЮБАФУС ФПМШЛП РП ЮЙУМХ УЙНЧПМПЧ-ЪБРПМОЙФЕМЕК, ФП РТЙЧЕДЕФ Л ПЫЙВЛЕ ДХВМЙТПЧБОЙС ЛМАЮБ.

12.4.2. фЙРЩ BINARY Й VARBINARY

еУМЙ РПМХЮЕООПЕ ЪОБЮЕОЙЕ ДПМЦОП ВЩФШ ФЕН ЦЕ УБНЩН, ЛБЛ ЪОБЮЕОЙЕ, ПРТЕДЕМЕООПЕ ДМС ИТБОЕОЙС ВЕЪ ДПРПМОЕОЙС, НПЦЕФ ВЩФШ РТЕДРПЮФЙФЕМШОП ЙУРПМШЪПЧБФШ VARBINARY ЙМЙ ПДЙО ЙЪ ФЙРПЧ ДБООЩИ BLOB ЧНЕУФП ЬФПЗП.

12.4.3. фЙРЩ BLOB Й TEXT

хУЕЮЕОЙЕ МЙЫОЙИ ЛПОЕЮОЩИ РТПВЕМПЧ ПФ ЪОБЮЕОЙК, ЛПФПТЩЕ ВХДХФ ЧУФБЧМЕОЩ Ч УФПМВГЩ TEXT ЧУЕЗДБ РТПЙЪЧПДЙФ РТЕДХРТЕЦДЕОЙЕ, ОЕЪБЧЙУЙНП ПФ ТЕЦЙНБ SQL.

дМС УФПМВГПЧ TEXT Й BLOB ОЕФ ОЙЛБЛПЗП ДПРПМОЕОЙС РТЙ ЧУФБЧЛЕ, Й ОЙЛБЛЙЕ ВБКФЩ ОЕ ПФТЕЪБОЩ РТЙ ЧЩВПТЛЕ.

фБЛ ЛБЛ BLOB Й TEXT НПЗХФ ВЩФШ ЮТЕЪЧЩЮБКОП ДМЙООЩНЙ, чЩ НПЦЕФЕ УФПМЛОХФШУС У ОЕЛПФПТЩНЙ ПЗТБОЙЮЕОЙСНЙ Ч ЙИ ЙУРПМШЪПЧБОЙЙ:

лБЦДПЕ ЪОБЮЕОЙЕ BLOB ЙМЙ TEXT РТЕДУФБЧМЕОП ЧОХФТЕООЕ ПФДЕМШОП ЧЩДЕМЕООЩН ПВЯЕЛФПН. ьФП ПФМЙЮЙЕ ПФ ЧУЕИ ДТХЗЙИ ФЙРПЧ ДБООЩИ, ДМС ЛПФПТЩИ ИТБОЕОЙЕ ЧЩДЕМЕОП ПДОБЦДЩ ОБ УФПМВЕГ, ЛПЗДБ ФБВМЙГБ ПФЛТЩФБ.

12.4.4. фЙР ENUM

ENUM УФТПЛПЧЩК ПВЯЕЛФ УП ЪОБЮЕОЙЕН, ЧЩВТБООЩН ЙЪ УРЙУЛБ ТБЪТЕЫЕООЩИ ЪОБЮЕОЙК, ЛПФПТЩЕ РЕТЕЮЙУМЕОЩ СЧОП Ч УРЕГЙЖЙЛБГЙЙ УФПМВГБ РТЙ УПЪДБОЙЙ ФБВМЙГЩ. х ЬФПЗП ЕУФШ РТЕЙНХЭЕУФЧБ:

пВТБФЙФЕ ЧОЙНБОЙЕ ОБ УМЕДХАЭЕЕ:

уПЪДБОЙЕ Й РТЙНЕОЕОЙЕ ENUM

ъОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС ДПМЦОП ВЩФШ ЪБЛМАЮЕООПК Ч ЛБЧЩЮЛЙ ВХЛЧБМШОПК УФТПЛПК. оБРТЙНЕТ, чЩ НПЦЕФЕ УПУФБЧЙФШ ФБВМЙГХ У ENUM ФБЛ:

ъОБЮЕОЙС ЙОДЕЛУБ ДМС МЙФЕТБМПЧ РЕТЕЮЙУМЕОЙС

х ЛБЦДПЗП ЪОБЮЕОЙС РЕТЕЮЙУМЕОЙС ЕУФШ ЙОДЕЛУ:

оБРТЙНЕТ, УФПМВЕГ, ПРТЕДЕМЕООЩК ЛБЛ ENUM(‘Mercury’, ‘Venus’, ‘Earth’) НПЦЕФ ЙНЕФШ МАВПЕ ЙЪ ЪОБЮЕОЙК, РПЛБЪБООЩИ ЪДЕУШ. йОДЕЛУ ЛБЦДПЗП ЪОБЮЕОЙС ФБЛЦЕ РПЛБЪЩЧБАФ.

ъОБЮЕОЙЕValueйОДЕЛУ
NULLNULL
»0
‘Mercury’1
‘Venus’2
‘Earth’3

х УФПМВГБ ENUM НПЦЕФ ВЩФШ НБЛУЙНХН 65535 ТБЪМЙЮОЩИ ЬМЕНЕОФПЧ.

еУМЙ чЩ РПМХЮБЕФЕ ЪОБЮЕОЙЕ ENUM Ч ЮЙУМПЧПН ЛПОФЕЛУФЕ, ЧПЪЧТБЭБЕФУС ЙОДЕЛУ ЪОБЮЕОЙС УФПМВГБ. оБРТЙНЕТ, чЩ НПЦЕФЕ РПМХЮЙФШ ЮЙУМПЧЩЕ ЪОБЮЕОЙС ЙЪ ENUM ФБЛ:

пВТБВПФЛБ МЙФЕТБМПЧ РЕТЕЮЙУМЕОЙС

лПОЕЮОЩЕ РТПВЕМЩ БЧФПНБФЙЮЕУЛЙ ХДБМЕОЩ ЙЪ ЮМЕОПЧ ЪОБЮЕОЙС ENUM Ч ФБВМЙЮОПН ПРТЕДЕМЕОЙЙ, ЛПЗДБ ФБВМЙГБ УПУФБЧМЕОБ.

пРТЕДЕМЙФШ ЧУЕ ЧПЪНПЦОЩЕ ЪОБЮЕОЙС ДМС УФПМВГБ ENUM НПЦОП У РПНПЭША SHOW COLUMNS FROM tbl_name LIKE ‘ enum_col ‘ Й РТПУНПФТБ ПРТЕДЕМЕОЙС ENUM Ч УФПМВГЕ Type ЧЩЧПДБ.

ч C API ЪОБЮЕОЙС ENUM ЧПЪЧТБЭЕОЩ ЛБЛ УФТПЛЙ. дМС ЙОЖПТНБГЙЙ ПВ ЙУРПМШЪПЧБОЙЙ НЕФБДБООЩИ П ОБВПТЕ ТЕЪХМШФБФПЧ, ЮФПВЩ ПФМЙЮЙФШ ЙИ ПФ ДТХЗЙИ УФТПЛ, УН. ТБЪДЕМ 25.8.5.

рХУФЩЕ ЙМЙ NULL ЪОБЮЕОЙС РЕТЕЮЙУМЕОЙС

ъОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС НПЦЕФ ФБЛЦЕ ВЩФШ РХУФПК УФТПЛПК ( » ) ЙМЙ NULL РТЙ ПРТЕДЕМЕООЩИ ПВУФПСФЕМШУФЧБИ:

еУМЙ чЩ ЧУФБЧМСЕФЕ ОЕДПРХУФЙНПЕ ЪОБЮЕОЙЕ Ч ENUM (ФП ЕУФШ, УФТПЛХ, ОЕ УХЭЕУФЧХАЭХА Ч УРЙУЛЕ ТБЪТЕЫЕООЩИ ЪОБЮЕОЙК), РХУФБС УФТПЛБ ЧУФБЧМЕОБ ЧНЕУФП ЬФПЗП ЛБЛ УРЕГЙБМШОПЕ ПЫЙВПЮОПЕ ЪОБЮЕОЙЕ. ьФХ УФТПЛХ НПЦОП ПФМЙЮЙФШ ПФ ОПТНБМШОПК РХУФПК УФТПЛЙ ЖБЛФ, ЮФП Х ЬФПК УФТПЛЙ ЕУФШ ЮЙУМПЧПЕ ЪОБЮЕОЙЕ 0.

уПТФЙТПЧЛБ РЕТЕЮЙУМЕОЙС

рТЕДПФЧТБФЙФШ ОЕПЦЙДБООЩЕ ТЕЪХМШФБФЩ, ЙУРПМШЪХС ORDER BY ОБ УФПМВГЕ ENUM НПЦОП ФБЛ:

пЗТБОЙЮЕОЙС РЕТЕЮЙУМЕОЙС

ъОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС ОЕ НПЦЕФ ВЩФШ ЧЩТБЦЕОЙЕН, ДБЦЕ ФП, ЛПФПТПЕ ПГЕОЙЧБЕФУС ЛБЛ УФТПЛПЧПЕ ЪОБЮЕОЙЕ.

оБРТЙНЕТ, CREATE TABLE ое ТБВПФБЕФ, РПФПНХ ЮФП CONCAT ОЕ НПЦЕФ ЙУРПМШЪПЧБФШУС, ЮФПВЩ УПЪДБФШ ЪОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС:

чЩ ФБЛЦЕ ОЕ НПЦЕФЕ ЙУРПМШЪПЧБФШ РПМШЪПЧБФЕМШУЛХА РЕТЕНЕООХА ЛБЛ ЪОБЮЕОЙЕ РЕТЕЮЙУМЕОЙС. ьФБ РБТБ ЪБРТПУПЧ ое ТБВПФБЕФ:

дЧПКОЩЕ ЪОБЮЕОЙС Ч ПРТЕДЕМЕОЙЙ ЧЩЪЩЧБАФ РТЕДХРТЕЦДЕОЙЕ ЙМЙ ПЫЙВЛХ, ЕУМЙ УФТПЗЙК ТЕЦЙН SQL ЧЛМАЮЕО.

12.4.5. фЙР SET

оБРТЙНЕТ, УФПМВЕГ, ПРТЕДЕМЕООЩК ЛБЛ SET(‘one’, ‘two’) NOT NULL НПЦЕФ ЙНЕФШ МАВПЕ ЙЪ ЬФЙИ ЪОБЮЕОЙК:

х УФПМВГБ SET НПЦЕФ ВЩФШ НБЛУЙНХН 64 ТБЪМЙЮОЩИ ХЮБУФОЙЛБ.

дЧПКОЩЕ ЪОБЮЕОЙС Ч ПРТЕДЕМЕОЙЙ ЧЩЪЩЧБАФ РТЕДХРТЕЦДЕОЙЕ ЙМЙ ПЫЙВЛХ, ЕУМЙ УФТПЗЙК ТЕЦЙН SQL ЧЛМАЮЕО.

лПОЕЮОЩЕ РТПВЕМЩ БЧФПНБФЙЮЕУЛЙ ХДБМЕОЩ ЙЪ ЮМЕОПЧ SET Ч ФБВМЙЮОПН ПРТЕДЕМЕОЙЙ, ЛПЗДБ ФБВМЙГБ УПУФБЧМЕОБ.

MySQL ИТБОЙФ ЪОБЮЕОЙС SET Ч ГЙЖТПЧПК ЖПТНЕ, У ВЙФПН НМБДЫЕЗП ТБЪТСДБ ИТБОЙНПЗП ЪОБЮЕОЙС, УППФЧЕФУФЧХАЭЕЗП РЕТЧПНХ ХЮБУФОЙЛХ ОБВПТБ. еУМЙ чЩ РПМХЮБЕФЕ ЪОБЮЕОЙЕ SET Ч ЮЙУМПЧПН ЛПОФЕЛУФЕ, РПМХЮЕООПЕ ЪОБЮЕОЙЕ ЕУФШ ОБВПТ ВЙФПЧ, УППФЧЕФУФЧХАЭЙК ХЮБУФОЙЛБН ОБВПТБ, ЛПФПТЩЕ УПУФБЧМСАФ ЪОБЮЕОЙЕ УФПМВГБ. оБРТЙНЕТ, чЩ НПЦЕФЕ РПМХЮЙФШ ЮЙУМПЧЩЕ ЪОБЮЕОЙС ЙЪ SET ФБЛ:

юМЕО SETдЕУСФЙЮОПЕ ЪОБЮЕОЙЕдЧПЙЮОПЕ ЪОБЮЕОЙЕ
‘a’10001
‘b’20010
‘c’40100
‘d’81000

фПЗДБ ЧУЕ ЬФЙ ЪОБЮЕОЙС РПСЧМСАФУС ЛБЛ ‘a,d’ :

еУМЙ чЩ ХУФБОБЧМЙЧБЕФЕ УФПМВЕГ SET Л ОЕРПДДЕТЦБООПНХ ЪОБЮЕОЙА, ЪОБЮЕОЙЕ РТПЙЗОПТЙТПЧБОП, Й РТЕДХРТЕЦДЕОЙЕ УПЪДБОП:

еУМЙ УФТПЗЙК ТЕЦЙН SQL ЧЛМАЮЕО, РПРЩФЛЙ ЧУФБЧЙФШ ОЕДПРХУФЙНПЕ ЪОБЮЕОЙЕ SET РТЙЧПДСФ Л ПЫЙВЛЕ.

уМЕДХАЭЙЕ ЪБРТПУЩ ФБЛЦЕ ТБЪТЕЫЕОЩ:

пРТЕДЕМЙФШ ЧУЕ ЧПЪНПЦОЩЕ ЪОБЮЕОЙС ДМС SET НПЦОП, РТЙНЕОЙЧ SHOW COLUMNS FROM tbl_name LIKE set_col Й ЙЪХЮЙЧ ПРТЕДЕМЕОЙЕ SET Ч УФПМВГЕ Type ЧЩЧПДБ.

ч C API ЪОБЮЕОЙС SET ЧПЪЧТБЭЕОЩ ЛБЛ УФТПЛЙ. дМС ЙОЖПТНБГЙЙ ПВ ЙУРПМШЪПЧБОЙЙ НЕФБДБООЩИ П ОБВПТЕ ТЕЪХМШФБФПЧ, ЮФПВЩ ПФМЙЮЙФШ ЙИ ПФ ДТХЗЙИ УФТПЛ, УН. ТБЪДЕМ 25.8.5.

12.5. тБУЫЙТЕОЙС ДМС РТПУФТБОУФЧЕООЩИ ДБООЩИ

Open Geospatial Consortium (OGC) СЧМСЕФУС НЕЦДХОБТПДОЩН ЛПОУПТГЙХНПН ВПМЕЕ 250 ЛПНРБОЙК, БЗЕОФУФЧ Й ХОЙЧЕТУЙФЕФПЧ, ХЮБУФЧХАЭЙИ Ч ТБЪЧЙФЙЙ РХВМЙЮОП ДПУФХРОЩИ ЛПОГЕРФХБМШОЩИ ТЕЫЕОЙК, ЛПФПТЩЕ НПЗХФ ВЩФШ РПМЕЪОЩНЙ УП ЧУЕНЙ ЧЙДБНЙ РТЙМПЦЕОЙК, ЛПФПТЩЕ ХРТБЧМСАФ РТПУФТБОУФЧЕООЩНЙ ДБООЩНЙ.

рТПУФТБОУФЧЕООЩЕ ТБУЫЙТЕОЙС MySQL ЧЛМАЮБАФ РТПЙЪЧПДУФЧП, ИТБОЕОЙЕ Й БОБМЙЪ ЗЕПЗТБЖЙЮЕУЛЙИ ПУПВЕООПУФЕК:

зЕПЗТБЖЙЮЕУЛБС ПУПВЕООПУФШ ЬФП ЮФП-МЙВП Ч НЙТЕ, Х ЮЕЗП ЕУФШ НЕУФПРПМПЦЕОЙЕ. пУПВЕООПУФШ НПЦЕФ ВЩФШ:

зЕПНЕФТЙС ДТХЗПЕ УМПЧП, ЛПФПТПЕ ПВПЪОБЮБЕФ ЗЕПЗТБЖЙЮЕУЛХА ПУПВЕООПУФШ. рЕТЧПОБЮБМШОП УМПЧП «ЗЕПНЕФТЙС» ПЪОБЮБМП ЙЪНЕТЕОЙЕ ЪЕНМЙ. дТХЗПЕ ЪОБЮЕОЙЕ РТЙВЩЧБЕФ ЙЪ ЛБТФПЗТБЖЙЙ, ПВТБЭБСУШ Л ЗЕПНЕФТЙЮЕУЛЙН ЖХОЛГЙСН, ЛПФПТЩЕ ЛБТФПЗТБЖЩ ЙУРПМШЪХАФ, ЮФПВЩ ПФПВТБЪЙФШ НЙТ.

уМЕДХАЭЙК НБФЕТЙБМ ЪБФТБЗЙЧБЕФ ЬФЙ ФЕНЩ:

уППФЧЕФУФЧЙЕ Й УПЧНЕУФЙНПУФШ MySQL GIS

MySQL ОЕ ТЕБМЙЪХЕФ УМЕДХАЭЙЕ ПРГЙЙ GIS:

дПРПМОЙФЕМШОЩЕ РТЕДУФБЧМЕОЙС НЕФБДБООЩИ.

дПРПМОЙФЕМШОЩЕ ТЕУХТУЩ

12.5.1. рТПУФТБОУФЧЕООЩЕ ФЙРЩ ДБООЩИ

х MySQL ЕУФШ ФЙРЩ ДБООЩИ, ЛПФПТЩЕ УППФЧЕФУФЧХАФ ЛМБУУБН OpenGIS. оЕЛПФПТЩЕ ЙЪ ЬФЙИ ФЙРПЧ УПДЕТЦБФ ЕДЙОУФЧЕООЩЕ ЪОБЮЕОЙС ЗЕПНЕФТЙЙ:

дТХЗЙЕ ФЙРЩ ДБООЩИ УПДЕТЦБФ ОБВПТЩ ЪОБЮЕОЙК:

х РТПУФТБОУФЧЕООЩИ ФЙРПЧ ДБООЩИ MySQL ЕУФШ УЧПС ПУОПЧБ Ч НПДЕМЙ ЗЕПНЕФТЙЙ OpenGIS, ПРЙУБООПК Ч ТБЪДЕМЕ 12.5.2. дМС РТЙНЕТПЧ, РПЛБЪЩЧБАЭЙИ, ЛБЛ ЙУРПМШЪПЧБФШ РТПУФТБОУФЧЕООЩЕ ФЙРЩ ДБООЩИ Ч MySQL, УН. ТБЪДЕМ 12.5.3.

12.5.2. нПДЕМШ ЗЕПНЕФТЙЙ OpenGIS

12.5.2.1. йЕТБТИЙС ЛМБУУПЧ ЗЕПНЕФТЙЙ

лМБУУЩ ЗЕПНЕФТЙЙ ПРТЕДЕМСАФ ЙЕТБТИЙА УМЕДХАЭЙН ПВТБЪПН:

оЕЧПЪНПЦОП УПЪДБФШ ПВЯЕЛФЩ Ч noninstantiable ЛМБУУБИ. чПЪНПЦОП УПЪДБФШ ПВЯЕЛФЩ Ч instantiable ЛМБУУБИ. х ЧУЕИ ЛМБУУПЧ ЕУФШ УЧПКУФЧБ, Х instantiable ЛМБУУПЧ НПЗХФ ФБЛЦЕ ВЩФШ ХФЧЕТЦДЕОЙС (РТБЧЙМБ, ЛПФПТЩЕ ПРТЕДЕМСАФ ДПРХУФЙНЩЕ ЬЛЪЕНРМСТЩ ЛМБУУБ).

Geometry ВБЪПЧЩК ЛМБУУ. ьФП БВУФТБЛФОЩК ЛМБУУ. instantiable РПДЛМБУУЩ Geometry ПЗТБОЙЮЕОЩ 0, 1 Й 2-НЕТОЩНЙ ЗЕПНЕФТЙЮЕУЛЙНЙ ПВЯЕЛФБНЙ, ЛПФПТЩЕ УХЭЕУФЧХАФ Ч ДЧХНЕТОПН ЛППТДЙОБФОПН РТПУФТБОУФЧЕ. чУЕ instantiable ЛМБУУЩ ЗЕПНЕФТЙЙ ПРТЕДЕМЕОЩ ФБЛ, ЮФПВЩ ДПРХУФЙНЩЕ ЬЛЪЕНРМСТЩ ЛМБУУБ ЗЕПНЕФТЙЙ ВЩМЙ ФПРПМПЗЙЮЕУЛЙ ЪБЛТЩФЩ (ФП ЕУФШ, ЧУЕ ПРТЕДЕМЕООЩЕ ЛПОЖЙЗХТБГЙЙ ЧЛМАЮБАФ УЧПА ЗТБОЙГХ).

12.5.2.2. лМБУУ ЗЕПНЕФТЙЙ

уЧПКУФЧБ ЗЕПНЕФТЙЙ

х ЪОБЮЕОЙС ЗЕПНЕФТЙЙ ЕУФШ УМЕДХАЭЙЕ УЧПКУФЧБ:

12.5.2.3. лМБУУ Point

Point ЗЕПНЕФТЙС, ЛПФПТБС РТЕДУФБЧМСЕФ ЕДЙОУФЧЕООПЕ НЕУФПРПМПЦЕОЙЕ Ч ЛППТДЙОБФОПН РТПУФТБОУФЧЕ.

12.5.2.4. лМБУУ Curve

Curve ПДОПНЕТОБС ЗЕПНЕФТЙС, ПВЩЮОП РТЕДУФБЧМСЕНБС РПУМЕДПЧБФЕМШОПУФША РХОЛФПЧ. пУПВЩЕ РПДЛМБУУЩ Curve ПРТЕДЕМСАФ ФЙР ЙОФЕТРПМСГЙЙ НЕЦДХ РХОЛФБНЙ. Curve noninstantiable ЛМБУУ.

12.5.2.5. лМБУУ LineString

LineString ЬФП Curve У МЙОЕКОПК ЙОФЕТРПМСГЙЕК НЕЦДХ РХОЛФБНЙ.

12.5.2.6. лМБУУ Surface

12.5.2.7. лМБУУ Polygon

оБ ЛБТФЕ ПВМБУФЙ ПВЯЕЛФЩ Polygon НПЗХФ РТЕДУФБЧЙФШ МЕУБ, ТБКПОЩ Й ФБЛ ДБМЕЕ.

рТЕДЩДХЭЙЕ ХФЧЕТЦДЕОЙС ДЕМБАФ Polygon РТПУФПК ЗЕПНЕФТЙЕК.

12.5.2.8. лМБУУ GeometryCollection

GeometryCollection ЗЕПНЕФТЙС, ЛПФПТБС СЧМСЕФУС ОБВПТПН ЙЪ ПДОПК ЙМЙ ВПМЕЕ ЛПОЖЙЗХТБГЙК МАВПЗП ЛМБУУБ.

12.5.2.9. лМБУУ MultiPoint

12.5.2.10. лМБУУ MultiCurve

12.5.2.11. лМБУУ MultiLineString

оБ ЛБТФЕ ПВМБУФЙ MultiLineString НПЦЕФ РТЕДУФБЧЙФШ ТЕЮОХА ЙМЙ НБЗЙУФТБМШОХА УЙУФЕНХ.

12.5.2.12. лМБУУ MultiSurface

12.5.2.13. лМБУУ MultiPolygon

оБ ЛБТФЕ ПВМБУФЙ MultiPolygon НПЦЕФ РТЕДУФБЧЙФШ УЙУФЕНХ ПЪЕТ.

12.5.3. йУРПМШЪПЧБОЙЕ РТПУФТБОУФЧЕООЩИ ДБООЩИ

ьФПФ ТБЪДЕМ ПРЙУЩЧБЕФ, ЛБЛ УПУФБЧЙФШ ФБВМЙГЩ, ЛПФПТЩЕ ЧЛМАЮБАФ УФПМВГЩ У ФЙРБНЙ РТПУФТБОУФЧЕООЩИ ДБООЩИ, Й ЛБЛ ХРТБЧМСФШ РТПУФТБОУФЧЕООПК ЙОЖПТНБГЙЕК.

12.5.3.1. рПДДЕТЦБООЩЕ РТПУФТБОУФЧЕООЩЕ ЖПТНБФЩ ДБООЩИ/h4>

дЧБ УФБОДБТФОЩИ РТПУФТБОУФЧЕООЩИ ЖПТНБФБ ДБООЩИ ЙУРПМШЪХАФУС, ЮФПВЩ РТЕДУФБЧЙФШ ПВЯЕЛФЩ ЗЕПНЕФТЙЙ Ч ЪБРТПУБИ:

чОХФТЕООЕ MySQL ИТБОЙФ ЪОБЮЕОЙС ЗЕПНЕФТЙЙ Ч ЖПТНБФЕ, ЛПФПТЩК ОЕ ЙДЕОФЙЮЕО ОЙ ПДОПНХ ЙЪ ОЙИ.

еУФШ ЖХОЛГЙЙ, ДПУФХРОЩЕ, ЮФПВЩ РТЕПВТБЪПЧБФШ НЕЦДХ ТБЪМЙЮОЩНЙ ЖПТНБФБНЙ ДБООЩИ, УН. ТБЪДЕМ 13.15.6.

12.5.3.1.1. жПТНБФ Well-Known Text (WKT)

Well-Known Text (WKT) ТБЪТБВПФБО ДМС ФПЗП, ЮФПВЩ ПВНЕОСФШУС ЙОЖПТНБГЙСНЙ ЗЕПНЕФТЙЙ Ч ЖПТНЕ ASCII. уРЕГЙЖЙЛБГЙС OpenGIS ПВЕУРЕЮЙЧБЕФ ЗТБННБФЙЛХ Backus-Naur, ЛПФПТБС ПРТЕДЕМСЕФ ЖПТНБМШОЩЕ РТПЙЪЧПДУФЧЕООЩЕ РТБЧЙМБ ДМС ФПЗП, ЮФПВЩ ОБРЙУБФШ ЪОБЮЕОЙС WKT (УН. ТБЪДЕМ 12.5).

рТЙНЕТЩ РТЕДУФБЧМЕОЙК WKT ПВЯЕЛФПЧ ЗЕПНЕФТЙЙ:

LineString У ЮЕФЩТШНС РХОЛФБНЙ:

12.5.3.1.2. жПТНБФ Well-Known Binary (WKB)

WKB ЙУРПМШЪХЕФ 1-ВБКФПЧЩЕ unsigned integer, 4-ВБКФПЧЩЕ unsigned integer Й 8-ВБКФПЧЩЕ ЮЙУМБ ДЧПКОПК ФПЮОПУФЙ (ЖПТНБФ IEEE 754). вБКФ УПУФБЧМСЕФ ЧПУЕНШ ВЙФПЧ.

оБРТЙНЕТ, ЪОБЮЕОЙЕ WKB, ЛПФПТПЕ УППФЧЕФУФЧХЕФ POINT(1 1) УПУФПЙФ ЙЪ ЬФПК РПУМЕДПЧБФЕМШОПУФЙ 21 ВБКФБ, ЛБЦДЩК РТЕДУФБЧМЕО ДЧХНС ЫЕУФОБДГБФЕТЙЮОЩНЙ ГЙЖТБНЙ:

рПУМЕДПЧБФЕМШОПУФШ УПУФПЙФ ЙЪ ЬФЙИ ЛПНРПОЕОФПЧ:

уПУФБЧМСАЭЕЕ РТЕДУФБЧМЕОЙЕ УМЕДХАЭЙЕ:

х ЪОБЮЕОЙК WKB ДМС ВПМЕЕ УМПЦОЩИ ЪОБЮЕОЙК ЗЕПНЕФТЙЙ ЕУФШ ВПМЕЕ УМПЦОЩЕ УФТХЛФХТЩ ДБООЩИ, ЛБЛ ДЕФБМЙЪЙТПЧБОП Ч УРЕГЙЖЙЛБГЙЙ OpenGIS.

12.5.3.2. уПЪДБОЙЕ РТПУФТБОУФЧЕООЩИ УФПМВГПЧ

12.5.3.3. ъБРПМОЕОЙЕ РТПУФТБОУФЧЕООЩИ УФПМВГПЧ

рПУМЕ ФПЗП, ЛБЛ чЩ УПЪДБМЙ РТПУФТБОУФЧЕООЩЕ УФПМВГЩ, чЩ НПЦЕФЕ ЪБРПМОЙФШ ЙИ РТПУФТБОУФЧЕООЩНЙ ДБООЩНЙ.

ъОБЮЕОЙС ДПМЦОЩ ВЩФШ УПИТБОЕОЩ ЧП ЧОХФТЕООЕН ЖПТНБФЕ ЗЕПНЕФТЙЙ, ОП чЩ НПЦЕФЕ РТЕПВТБЪПЧБФШ ЙИ Ч ЬФПФ ЖПТНБФ ЙЪ Well-Known Text (WKT) ЙМЙ Well-Known Binary (WKB). уМЕДХАЭЙЕ РТЙНЕТЩ ДЕНПОУФТЙТХАФ, ЛБЛ ЧУФБЧЙФШ ЪОБЮЕОЙС ЗЕПНЕФТЙЙ Ч ФБВМЙГХ, РТЕПВТБЪПЧЩЧБС ЪОБЮЕОЙС WKT ЧП ЧОХФТЕООЙК ЖПТНБФ ЗЕПНЕФТЙЙ:

уМЕДХАЭЙЕ РТЙНЕТЩ ЧУФБЧМСАФ ВПМЕЕ УМПЦОЩЕ ЛПОЖЙЗХТБГЙЙ Ч ФБВМЙГХ:

рТПЗТБННБ РТЙМПЦЕОЙС-ЛМЙЕОФБ, ЛПФПТБС ИПЮЕФ ЙУРПМШЪПЧБФШ РТЕДУФБЧМЕОЙС ЪОБЮЕОЙК ЗЕПНЕФТЙЙ WKB, ПФЧЕФУФЧЕООБ ЪБ РПУЩМЛХ РТБЧЙМШОП УЖПТНЙТПЧБООЩИ WKB Ч ЪБРТПУБИ Л УЕТЧЕТХ. еУФШ ОЕУЛПМШЛП УРПУПВПЧ ХДПЧМЕФЧПТЙФШ ЬФП ФТЕВПЧБОЙЕ. оБРТЙНЕТ:

12.5.3.4. хУФБОПЧЛБ РТПУФТБОУФЧЕООЩИ ДБООЩИ

ъОБЮЕОЙС ЗЕПНЕФТЙЙ, УПИТБОЕООЩЕ Ч ФБВМЙГЕ, НПЗХФ ВЩФШ РПМХЮЕОЩ ЧП ЧОХФТЕООЕН ЖПТНБФЕ. чЩ НПЦЕФЕ ФБЛЦЕ РТЕПВТБЪПЧБФШ ЙИ Ч ЖПТНБФ WKB ЙМЙ WKT.

хУФБОПЧЛБ РТПУФТБОУФЧЕООЩИ ДБООЩИ ЧП ЧОХФТЕООЕН ЖПТНБФЕ:

12.5.3.5. пРФЙНЙЪБГЙС РТПУФТБОУФЧЕООПЗП БОБМЙЪБ

MySQL ЙУРПМШЪХЕФ R-Trees У ЛЧБДТБФОЩН ТБЪДЕМЕОЙЕН ДМС ЙОДЕЛУПЧ SPATIAL ОБ РТПУФТБОУФЧЕООЩИ УФПМВГБИ. йОДЕЛУ SPATIAL УПЪДБО, ЙУРПМШЪХС НЙОЙНБМШОЩК ПЗТБОЙЮЙФЕМШОЩК РТСНПХЗПМШОЙЛ (MBR) ЗЕПНЕФТЙЙ. дМС ВПМШЫЙОУФЧБ ЛПОЖЙЗХТБГЙК MBR НЙОЙНБМШОЩК РТСНПХЗПМШОЙЛ, ЛПФПТЩК ПЛТХЦБЕФ ЛПОЖЙЗХТБГЙЙ. дМС ЗПТЙЪПОФБМШОПЗП ЙМЙ ЧЕТФЙЛБМШОПЗП linestring MBR РТСНПХЗПМШОЙЛ, ДЕЗТБДЙТПЧБЧЫЙК Ч linestring. дМС point MBR РТСНПХЗПМШОЙЛ, ДЕЗТБДЙТПЧБЧЫЙК Ч point.

12.5.3.6. рТПУФТБОУФЧЕООПЕ УПЪДБОЙЕ ЙОДЕЛУПЧ

SPATIAL INDEX УПЪДБЕФ R-ДЕТЕЧП. дМС НЕИБОЙЪНПЧ ИТБОЕОЙС, ЛПФПТЩЕ РПДДЕТЦЙЧБАФ ОЕРТПУФТБОУФЧЕООХА ЙОДЕЛУБГЙА РТПУФТБОУФЧЕООЩИ УФПМВГПЧ, НЕИБОЙЪН УПЪДБЕФ B-ДЕТЕЧП. B-ДЕТЕЧП ЙОДЕЛУБ ОБ РТПУФТБОУФЧЕООЩИ ЪОБЮЕОЙСИ РПМЕЪОП ДМС РПЙУЛПЧ ФПЮОПЗП ЪОБЮЕОЙС, ОП ОЕ ДМС РТПУНПФТПЧ ДЙБРБЪПОБ.

юФПВЩ ХДБМЙФШ РТПУФТБОУФЧЕООЩК ЙОДЕЛУ, ОБДП ЙУРПМШЪПЧБФШ ALTER TABLE ЙМЙ DROP INDEX :

12.5.3.7. йУРПМШЪПЧБОЙЕ РТПУФТБОУФЧЕООПЗП ЙОДЕЛУБ

рТПЧЕТШФЕ ФП, ЮФП РТПЙЪПЫМП ВЩ ВЕЪ РТПУФТБОУФЧЕООПЗП ЙОДЕЛУБ:

чЩРПМОЕОЙЕ SELECT ВЕЪ РТПУФТБОУФЧЕООПЗП ЙОДЕЛУБ ЧЩДБУФ ФПФ ЦЕ УБНЩК ТЕЪХМШФБФ, ОП ЧТЕНС ЧЩРПМОЕОЙС РПЧЩЫБЕФУС У 0.00 ДП 0.46 УЕЛХОДЩ:

12.6. фЙР ДБООЩИ JSON

уФПМВГЩ JSON ОЕ НПЗХФ ЙНЕФШ ЪОБЮЕОЙС РП ХНПМЮБОЙА.

пРФЙНЙЪБФПТ MySQL ФБЛЦЕ ЙЭЕФ УПЧНЕУФЙНЩК ЙОДЕЛУ ОБ ЧЙТФХБМШОЩИ УФПМВГБИ У ЧЩТБЦЕОЙЕН JSON.

уМЕДХАЭЕЕ ПВУХЦДЕОЙЕ ЪБФТБЗЙЧБЕФ ЬФЙ ФЕНЩ:

оБТСДХ У ФЙРПН ДБООЩИ, ТСД ЖХОЛГЙК SQL ДПУФХРЕО, ЮФПВЩ ЧЛМАЮЙФШ ПРЕТБГЙЙ ОБ ЪОБЮЕОЙСИ JSON ФБЛЙИ, ЛБЛ УПЪДБОЙЕ, НБОЙРХМСГЙС Й РПЙУЛ. рПУМЕДХАЭЕЕ ПВУХЦДЕОЙЕ РПЛБЪЩЧБЕФ РТЙНЕТЩ ЬФЙИ ПРЕТБГЙК. дМС ДЕФБМЕК ПВ ПФДЕМШОЩИ ЖХОЛГЙСИ УН. ТБЪДЕМ 13.16.

тСД РТПУФТБОУФЧЕООЩИ ЖХОЛГЙК ДМС ФПЗП, ЮФПВЩ ЧПЪДЕКУФЧПЧБФШ ОБ ЪОБЮЕОЙС GeoJSON ФБЛЦЕ ДПУФХРЕО. уН. ТБЪДЕМ 13.15.11.

уПЪДБОЙЕ ЪОБЮЕОЙК JSON

нБУУЙЧ JSON УПДЕТЦЙФ УРЙУПЛ ЪОБЮЕОЙК, ПФДЕМЕООЩИ ЪБРСФЩНЙ Й РТЙМПЦЕООЩК Ч РТЕДЕМБИ УЙНЧПМПЧ [ Й ] :

пВЯЕЛФ JSON УПДЕТЦЙФ ТСД РБТ ЛМАЮБ/ЪОБЮЕОЙС, ПФДЕМЕООЩИ ЪБРСФЩНЙ Й РТЙМПЦЕООЩК Ч РТЕДЕМБИ УЙНЧПМПЧ < Й >:

нБУУЙЧЩ Й ПВЯЕЛФЩ JSON НПЗХФ УПДЕТЦБФШ УЛБМСТОЩЕ ЪОБЮЕОЙС, ЛПФПТЩЕ СЧМСАФУС УФТПЛБНЙ ЙМЙ ЮЙУМБНЙ, МЙФЕТБМПН JSON null ЙМЙ МЙФЕТБМБНЙ JSON boolean true ЙМЙ false. лМАЮЙ Ч ПВЯЕЛФБИ JSON ДПМЦОЩ ВЩФШ УФТПЛБНЙ. чТЕНЕООЩЕ (date, time ЙМЙ datetime) УЛБМСТОЩЕ ЪОБЮЕОЙС ФБЛЦЕ ТБЪТЕЫЕОЩ:

чМПЦЕОЙЕ ТБЪТЕЫЕОП Ч РТЕДЕМБИ ЬМЕНЕОФПЧ НБУУЙЧБ Й ЪОБЮЕОЙК ЛМАЮБ ПВЯЕЛФБ JSON:

ч MySQL ЪОБЮЕОЙС JSON ОБРЙУБОЩ ЛБЛ УФТПЛЙ. MySQL ТБЪВЙТБЕФ МАВХА УФТПЛХ, ЙУРПМШЪХЕНХА Ч ЛПОФЕЛУФЕ, ЛПФПТЩК ФТЕВХЕФ ЪОБЮЕОЙС JSON, Й РТПЙЪЧПДЙФ ПЫЙВЛХ, ЕУМЙ ЬФП ОЕ ДПРХУФЙНП ЛБЛ JSON. ьФЙ ЛПОФЕЛУФЩ ЧЛМАЮБАФ ЧУФБЧЛХ ЪОБЮЕОЙС Ч УФПМВЕГ, ЛПФПТЩК ЙНЕЕФ ФЙР JSON Й РТПИПЦДЕОЙЕ РБТБНЕФТБ Ч ЖХОЛГЙА, ЛПФПТБС ПЦЙДБЕФ ЪОБЮЕОЙЕ JSON, ЛБЛ УМЕДХАЭЙЕ РТЙНЕТЩ ДЕНПОУФТЙТХАФ:

рПРЩФЛБ ЧУФБЧЙФШ ЪОБЮЕОЙЕ Ч УФПМВЕГ JSON РТЕХУРЕЧБЕФ, ЕУМЙ ЪОБЮЕОЙЕ ДПРХУФЙНПЕ ЪОБЮЕОЙЕ JSON, ОП ФЕТРЙФ ОЕХДБЮХ, ЕУМЙ ЬФП ОЕ ФБЛ:

лБЛ БМШФЕТОБФЙЧБ ОБРЙУБОЙА ЪОБЮЕОЙК JSON, ЙУРПМШЪХС ВХЛЧБМШОЩЕ УФТПЛЙ, УХЭЕУФЧХАФ ЖХОЛГЙЙ ДМС ФПЗП, ЮФПВЩ УПУФБЧЙФШ ЪОБЮЕОЙС JSON ЙЪ УПУФБЧМСАЭЙИ ЬМЕНЕОФПЧ. JSON_ARRAY() ВЕТЕФ (ЧПЪНПЦОП РХУФПК) УРЙУПЛ ЪОБЮЕОЙК Й ЧПЪЧТБЭБЕФ НБУУЙЧ JSON, УПДЕТЦБЭЙК ФЕ ЪОБЮЕОЙС:

JSON_OBJECT() ВЕТЕФ (ЧПЪНПЦОП РХУФПК) УРЙУПЛ РБТ ЛМАЮБ/ЪОБЮЕОЙС Й ЧПЪЧТБЭБЕФ ПВЯЕЛФ JSON, УПДЕТЦБЭЙК ФЕ РБТЩ:

JSON_MERGE() ВЕТЕФ ДЧБ ЙМЙ ВПМШЫЕ ДПЛХНЕОФБ JSON Й ЧПЪЧТБЭБЕФ ПВЯЕДЙОЕООЩК ТЕЪХМШФБФ:

ъОБЮЕОЙС JSON НПЗХФ ВЩФШ ОБЪОБЮЕОЩ ОБ ПРТЕДЕМСЕНЩЕ РПМШЪПЧБФЕМЕН РЕТЕНЕООЩЕ:

х УФТПЛ, РТПЙЪЧЕДЕООЩИ, РТЕПВТБЪПЧЩЧБС ЪОБЮЕОЙС JSON, ЕУФШ ОБВПТ УЙНЧПМПЧ utf8mb4 Й УПРПУФБЧМЕОЙЕ utf8mb4_bin :

рПУЛПМШЛХ utf8mb4_bin ДЧПЙЮОПЕ УПРПУФБЧМЕОЙЕ, УТБЧОЕОЙЕ ЪОБЮЕОЙК JSON СЧМСЕФУС ЮХЧУФЧЙФЕМШОЩН Л ТЕЗЙУФТХ.

оПТНБМЙЪБГЙС, УМЙСОЙЕ Й БЧФППВЕТФЩЧБОЙЕ ЪОБЮЕОЙК JSON

оПТНБМЙЪБГЙС, ЧЩРПМОЕООБС MySQL, ФБЛЦЕ УПТФЙТХЕФ ЛМАЮЙ ПВЯЕЛФБ JSON (У ГЕМША УПЪДБОЙС ВПМЕЕ ЬЖЖЕЛФЙЧОЩИ РПЙУЛПЧ). тЕЪХМШФБФ ЬФПЗП ХРПТСДПЮЙЧБОЙС РПДЧЕТЦЕО ЙЪНЕОЕОЙСН Й ОЕ ЗБТБОФЙТХЕФУС, ЮФП ВХДЕФ РПУМЕДПЧБФЕМШОЩН. лТПНЕ ФПЗП, ПФ ДПРПМОЙФЕМШОЩИ РТПВЕМПЧ НЕЦДХ ЛМАЮБНЙ, ЪОБЮЕОЙСНЙ ЙМЙ ЬМЕНЕОФБНЙ Ч ПТЙЗЙОБМЕ ДПЛХНЕОФБ ПФЛБЪЩЧБАФУС.

жХОЛГЙЙ MySQL, ЛПФПТЩЕ РТПЙЪЧПДСФ ЪОБЮЕОЙС JSON (УН. ТБЪДЕМ 13.16.2) ЧУЕЗДБ ЧПЪЧТБЭБАФ ОПТНБМЙЪПЧБООЩЕ ЪОБЮЕОЙС.

ч ЛПОФЕЛУФБИ, ЛПФПТЩЕ ЛПНВЙОЙТХАФ НОПЗПЛТБФОЩЕ НБУУЙЧЩ, НБУУЙЧЩ УМЙФЩ Ч ЕДЙОУФЧЕООЩК НБУУЙЧ, ДПВБЧМСС НБУУЙЧЩ, ОБЪЧБООЩЕ РПЪЦЕ, Ч ЛПОЕГ РЕТЧПЗП НБУУЙЧБ. ч УМЕДХАЭЕН РТЙНЕТЕ JSON_MERGE() УМЙЧБЕФ РБТБНЕФТЩ Ч ЕДЙОУФЧЕООЩК НБУУЙЧ:

нОПЗП ПВЯЕЛФЩ ЛПЗДБ УМЙФЩ РТПЙЪЧПДСФ ЕДЙОУФЧЕООЩК ПВЯЕЛФ. еУМЙ Х НОПЗЙИ ПВЯЕЛФПЧ ЕУФШ ФПФ ЦЕ УБНЩК ЛМАЮ, ЪОБЮЕОЙЕ ДМС ФПЗП ЛМАЮБ Ч РПМХЮБАЭЕНУС УМЙФПН ПВЯЕЛФЕ СЧМСЕФУС НБУУЙЧПН, УПДЕТЦБЭЙН ЪОБЮЕОЙС ЛМАЮБ:

ъОБЮЕОЙС НБУУЙЧБ Й ПВЯЕЛФБ УМЙФЩ, БЧФППВЕТФЩЧБС ПВЯЕЛФ ЛБЛ НБУУЙЧ Й УМЙЧБС ДЧБ НБУУЙЧБ:

рПЙУЛ Й НПДЙЖЙЛБГЙС ЪОБЮЕОЙК JSON

чЩТБЦЕОЙЕ РХФЙ JSON ЧЩВЙТБЕФ ЪОБЮЕОЙЕ Ч РТЕДЕМБИ ДПЛХНЕОФБ JSON.

чЩТБЦЕОЙС РХФЙ РПМЕЪОЩ У ЖХОЛГЙСНЙ, ЛПФПТЩЕ ЙЪЧМЕЛБАФ ЮБУФЙ ЙМЙ ЙЪНЕОСАФ ДПЛХНЕОФ JSON, ЮФПВЩ ПРТЕДЕМЙФШ, ЗДЕ ТБВПФБФШ Ч РТЕДЕМБИ ЬФПЗП ДПЛХНЕОФБ. оБРТЙНЕТ, УМЕДХАЭЙК ЪБРТПУ ЙЪЧМЕЛБЕФ ЙЪ ДПЛХНЕОФБ JSON ЪОБЮЕОЙЕ ХЮБУФОЙЛБ У ЛМАЮПН name :

$ УУЩМБЕФУС ОБ ЬФПФ НБУУЙЧ JSON У ФТЕНС ЬМЕНЕОФБНЙ:

лМАЮЙ УПДЕТЦБФ РТПВЕМ Й ДПМЦОЩ ВЩФШ ЪБЛМАЮЕОЩ Ч ЛБЧЩЮЛЙ:

рХФЙ, ЛПФПТЩЕ ЙУРПМШЪХАФ РПДУФБОПЧПЮОЩЕ ЪОБЛЙ, ПГЕОЙЧБАФУС Л НБУУЙЧХ, ЛПФПТЩК НПЦЕФ УПДЕТЦБФШ НОПЗП ЪОБЮЕОЙК:

тБУУНПФТЙФЕ ЬФПФ ДПЛХНЕОФ:

JSON_SET() ЪБНЕОСЕФ ЪОБЮЕОЙС ДМС РХФЕК, ЛПФПТЩЕ УХЭЕУФЧХАФ Й ДПВБЧМСЕФ ЪОБЮЕОЙС ДМС РХФЕК, ЛПФПТЩЕ ОЕ УХЭЕУФЧХАФ:

JSON_INSERT() ДПВБЧМСЕФ ОПЧЩЕ ЪОБЮЕОЙС, ОП ОЕ ЪБНЕОСЕФ УХЭЕУФЧХАЭЙЕ:

JSON_REPLACE() ЪБНЕОСЕФ УХЭЕУФЧХАЭЙЕ ЪОБЮЕОЙС Й ЙЗОПТЙТХЕФ ОПЧЩЕ:

рБТЩ РХФЙ/ЪОБЮЕОЙС ПГЕОЕОЩ УМЕЧБ ОБРТБЧП. дПЛХНЕОФ, РТЕДУФБЧМЕООЩК, ПГЕОЙЧБС ПДОХ РБТХ, УФБОПЧЙФУС ОПЧЩН ЪОБЮЕОЙЕН, РТПФЙЧ ЛПФПТПЗП ПГЕОЕОБ УМЕДХАЭБС РБТБ.

JSON_REMOVE() ВЕТЕФ ДПЛХНЕОФ JSON Й ПДЙО ЙМЙ ВПМЕЕ РХФЕК, ЛПФПТЩЕ ПРТЕДЕМСАФ ЪОБЮЕОЙС, ЛПФПТЩЕ ВХДХФ ХДБМЕОЩ ЙЪ ДПЛХНЕОФБ. чПЪЧТБЭБЕНПЕ ЪОБЮЕОЙЕ: ПТЙЗЙОБМ ДПЛХНЕОФБ НЙОХУ ЪОБЮЕОЙС, ЧЩВТБООЩЕ РХФСНЙ, ЛПФПТЩЕ УХЭЕУФЧХАФ Ч РТЕДЕМБИ ДПЛХНЕОФБ:

рХФЙ ЙНЕАФ ЬФЙ ЬЖЖЕЛФЩ:

уТБЧОЕОЙЕ Й ХРПТСДПЮЙЧБОЙЕ ЪОБЮЕОЙК JSON

уМЕДХАЭЙЕ ПРЕТБФПТЩ УТБЧОЕОЙС Й ЖХОЛГЙЙ ЕЭЕ ОЕ РПДДЕТЦБОЩ УП ЪОБЮЕОЙСНЙ JSON:

пВИПД ДМС ПРЕТБФПТПЧ УТБЧОЕОЙС Й ЖХОЛГЙК: ЛПОЧЕТФЙТПЧБФШ ЪОБЮЕОЙС JSON Ч ЮЙУМБ MySQL ЙМЙ РТЕДУФБЧЙФШ ФЙР ДБООЩИ Ч ЧЙДЕ УФТПЛЙ, ФБЛЙН ПВТБЪПН, Х ОЙИ ЕУФШ РПУМЕДПЧБФЕМШОЩК ОЕ-JSON УЛБМСТОЩК ФЙР.

уТБЧОЕОЙЕ ЪОБЮЕОЙК JSON ЙНЕЕФ НЕУФП ОБ ДЧХИ ХТПЧОСИ. рЕТЧЩК ХТПЧЕОШ УТБЧОЕОЙС ПУОПЧБО ОБ ФЙРБИ JSON УТБЧОЕООЩИ ЪОБЮЕОЙК. еУМЙ ФЙРЩ ПФМЙЮБАФУС, ТЕЪХМШФБФ УТБЧОЕОЙС ПРТЕДЕМЕО ЙУЛМАЮЙФЕМШОП ФЕН, Х ЛБЛПЗП ФЙРБ ЕУФШ ВПМЕЕ ЧЩУПЛЙК РТЙПТЙФЕФ. еУМЙ ДЧБ ЪОБЮЕОЙС ЙНЕАФ ФПФ ЦЕ УБНЩК ФЙР JSON, ЧФПТПК ХТПЧЕОШ УТБЧОЕОЙС РТПЙУИПДЙФ, ЙУРПМШЪХС ПРТЕДЕМЕООЩЕ ДМС ФЙРБ РТБЧЙМБ.

дМС ЪОБЮЕОЙК JSON ФПЗП ЦЕ УБНПЗП РТЙПТЙФЕФБ РТБЧЙМБ УТБЧОЕОЙС ПРТЕДЕМЕОЩ ДМС ФЙРБ:

дЧБ НБУУЙЧБ JSON ТБЧОЩ, ЕУМЙ Х ОЙИ ЕУФШ ФБ ЦЕ УБНБС ДМЙОБ, Й ЪОБЮЕОЙС Ч УППФЧЕФУФЧХАЭЙИ РПЪЙГЙСИ Ч НБУУЙЧБИ ТБЧОЩ.

еУМЙ НБУУЙЧЩ ОЕ ТБЧОЩ, ЙИ РПТСДПЛ ПРТЕДЕМЕО ЬМЕНЕОФБНЙ Ч РЕТЧПК РПЪЙГЙЙ, ЗДЕ ЕУФШ ТБЪМЙЮЙЕ. нБУУЙЧ У НЕОШЫЙН ЪОБЮЕОЙЕН Ч ЬФПК РПЪЙГЙЙ УПТФЙТХЕФУС РЕТЧЩН. еУМЙ ЧУЕ ЪОБЮЕОЙС Ч ВПМЕЕ ЛПТПФЛПН НБУУЙЧЕ ТБЧОЩ УППФЧЕФУФЧХАЭЙН ЪОБЮЕОЙСН Ч ВПМЕЕ ДМЙООПН НБУУЙЧЕ, ВПМЕЕ ЛПТПФЛЙК НБУУЙЧ УПТФЙТХЕФУС РЕТЧЩН.

дЧБ ПВЯЕЛФБ JSON ТБЧОЩ, ЕУМЙ Х ОЙИ ЕУФШ ФПФ ЦЕ УБНЩК ОБВПТ ЛМАЮЕК, Й Х ЛБЦДПЗП ЛМАЮБ ЕУФШ ФП ЦЕ УБНПЕ ЪОБЮЕОЙЕ Ч ПВПЙИ ПВЯЕЛФБИ.

уФТПЛЙ ХРПТСДПЮЕОЩ МЕЛУЙЮЕУЛЙ ОБ РЕТЧЩИ N ВБКФБИ РТЕДУФБЧМЕОЙС utf8mb4 ДЧХИ УТБЧОЙЧБЕНЩИ УФТПЛ, ЗДЕ N ДМЙОБ ВПМЕЕ ЛПТПФЛПК УФТПЛЙ. еУМЙ РЕТЧЩЕ N ВБКФ ДЧХИ УФТПЛ ЙДЕОФЙЮОЩ, ВПМЕЕ ЛПТПФЛХА УФТПЛХ УЮЙФБАФ НЕОШЫЕК ЮЕН ВПМЕЕ ДМЙООБС УФТПЛБ.

ъОБЮЕОЙС JSON НПЗХФ УПДЕТЦБФШ ЮЙУМБ ФПЮОПЗП ЪОБЮЕОЙС Й ЮЙУМБ РТЙВМЙЪЙФЕМШОПК ФПЮОПУФЙ. дМС ПВЭЕЗП ПВУХЦДЕОЙС ЬФЙИ ФЙРПЧ ЮЙУЕМ УН. ТБЪДЕМ 10.1.2.

рТБЧЙМБ ДМС ФПЗП, ЮФПВЩ УТБЧОЙФШ ЮЙУМПЧЩЕ ФЙРЩ MySQL ПВУХЦДЕОЩ Ч ТБЪДЕМЕ 13.2, ОП РТБЧЙМБ ДМС ФПЗП, ЮФПВЩ УТБЧОЙФШ ЮЙУМБ Ч РТЕДЕМБИ ЪОБЮЕОЙК JSON ОЕУЛПМШЛП ПФМЙЮБАФУС:

еУМЙ УТБЧОЕОЙС JSON ЙУРПМШЪХАФ ЮЙУМПЧЩЕ РТБЧЙМБ УТБЧОЕОЙС ОЕ-JSON, ОЕРПУМЕДПЧБФЕМШОПЕ ХРПТСДПЮЙЧБОЙЕ НПЗМП РТПЙЪПКФЙ. пВЩЮОЩЕ РТБЧЙМБ УТБЧОЕОЙС MySQL ДМС ЮЙУЕМ РТЙЧПДСФ Л ЬФЙН ХРПТСДПЮЙЧБОЙСН:

дМС УТБЧОЕОЙС МАВЩИ JSON Й ОЕ-JSON ЪОБЮЕОЙК, ОЕ-JSON РТЕПВТБЪПЧБОП Ч JSON УПЗМБУОП РТБЧЙМБН Ч УМЕДХАЭЕК ФБВМЙГЕ, ФПЗДБ ЪОБЮЕОЙС УТБЧОЕОЩ ЛБЛ ПРЙУБОП ТБОЕЕ.

рТЕПВТБЪПЧБОЙЕ НЕЦДХ ЪОБЮЕОЙСНЙ JSON Й ОЕ-JSON. уМЕДХАЭБС ФБВМЙГБ ПВЕУРЕЮЙЧБЕФ ТЕЪАНЕ РТБЧЙМ, ЛПФПТЩН MySQL УМЕДХЕФ, УТБЧОЙЧБС ЪОБЮЕОЙС JSON Й ДТХЗЙИ ФЙРПЧ:

фБВМЙГБ 12.1. рТБЧЙМБ ЛПОЧЕТФБГЙЙ JSON

ORDER BY Й GROUP BY ДМС JSON ТБВПФБАФ УПЗМБУОП ЬФЙН РТЙОГЙРБН:

дМС ФПЗП, ЮФПВЩ УПТФЙТПЧБФШ, НПЦЕФ ВЩФШ ЧЩЗПДОП, РТЕПВТБЪПЧБФШ УЛБМСТ JSON Л ОЕЛПФПТПНХ ДТХЗПНХ ФЙРХ MySQL. оБРТЙНЕТ, ЕУМЙ УФПМВЕГ jdoc УПДЕТЦЙФ ПВЯЕЛФЩ JSON, ЙНЕАЭЙЕ ХЮБУФОЙЛБ, УПУФПСЭЕЗП ЙЪ ЛМАЮБ id Й ОЕПФТЙГБФЕМШОПЗП ЪОБЮЕОЙС, ЙУРПМШЪХКФЕ ЬФП ЧЩТБЦЕОЙЕ ДМС УПТФЙТПЧЛЙ РП ЪОБЮЕОЙСН id :

бЗТЕЗЙТПЧБОЙЕ ЪОБЮЕОЙК JSON

12.7. ъОБЮЕОЙС РП ХНПМЮБОЙА

рТЕДРПМПЦЙФЕ ЮФП ФБВМЙГБ t ПРТЕДЕМЕОБ УМЕДХАЭЙН ПВТБЪПН:

ч ЬФПН УМХЮБЕ i ОЕ ЙНЕЕФ ОЙЛБЛПЗП СЧОПЗП ЪОБЮЕОЙС РП ХНПМЮБОЙА, ФБЛЙН ПВТБЪПН, Ч УФТПЗПН ТЕЦЙНЕ ЛБЦДЩК ЙЪ УМЕДХАЭЙИ ЪБРТПУПЧ РТПЙЪЧПДЙФ ПЫЙВЛХ, Й ОЙЛБЛБС УФТПЛБ ОЕ ЧУФБЧМЕОБ. еУМЙ ОЕ ЙУРПМШЪХЕФУС УФТПЗЙК ТЕЦЙН, ФПМШЛП ФТЕФЙК ЪБРТПУ РТПЙЪЧПДЙФ ПЫЙВЛХ: ОЕСЧОПЕ ЪОБЮЕОЙЕ РП ХНПМЮБОЙА ЧУФБЧМЕОП ДМС РЕТЧЩИ ДЧХИ ЪБРТПУПЧ, ОП ФТЕФЙК ФЕТРЙФ ОЕХДБЮХ, РПФПНХ ЮФП DEFAULT(i) ОЕ НПЦЕФ РТПЙЪЧЕУФЙ ЪОБЮЕОЙЕ:

оЕСЧОЩЕ ЪОБЮЕОЙС РП ХНПМЮБОЙА ПРТЕДЕМЕОЩ УМЕДХАЭЙН ПВТБЪПН:

12.8. фТЕВПЧБОЙС ИТБОЕОЙС ФЙРПЧ ДБООЩИ

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ФБВМЙЮОЩИ ДБООЩИ ЪБЧЙУСФ ПФ ОЕУЛПМШЛЙИ ЖБЛФПТПЧ. тБЪМЙЮОЩЕ НЕИБОЙЪНЩ ИТБОЕОЙС РТЕДУФБЧМСАФ ФЙРЩ ДБООЩИ Й ИТБОСФ ОЕПВТБВПФБООЩЕ ДБООЩЕ РП-ДТХЗПНХ. фБВМЙЮОЩЕ ДБООЩЕ НПЗМЙ ВЩ ВЩФШ УЦБФЩ ДМС УФПМВГБ ЙМЙ ДМС ЧУЕК УФТПЛЙ, ХУМПЦОСС ЧЩЮЙУМЕОЙЕ ФТЕВПЧБОЙК ИТБОЕОЙС ДМС ФБВМЙГЩ ЙМЙ УФПМВГБ.

оЕУНПФТС ОБ ТБЪМЙЮЙС Ч ТБУРПМПЦЕОЙЙ ИТБОЕОЙС ОБ ДЙУЛЕ, ЧОХФТЕООЙЕ MySQL API, ЛПФПТЩЕ УППВЭБАФ Й ПВНЕОЙЧБАФУС ЙОЖПТНБГЙЕК П УФТПЛБИ ФБВМЙГЩ, ЙУРПМШЪХАФ РПУМЕДПЧБФЕМШОХА УФТХЛФХТХ ДБООЩИ, ЛПФПТБС РТЙНЕОСЕФУС ЧУЕНЙ НЕИБОЙЪНБНЙ ИТБОЕОЙС.

ьФПФ ТБЪДЕМ ЧЛМАЮБЕФ ЙОЖПТНБГЙА ДМС ФТЕВПЧБОЙК ИТБОЕОЙС ДМС ЛБЦДПЗП ФЙРБ ДБООЩИ, РПДДЕТЦБООПЗП MySQL, ЧЛМАЮБС ЧОХФТЕООЙК ЖПТНБФ Й ТБЪНЕТ ДМС НЕИБОЙЪНПЧ ИТБОЕОЙС, ЛПФПТЩЕ ЙУРПМШЪХАФ РТЕДУФБЧМЕОЙЕ ЖЙЛУЙТПЧБООПЗП ТБЪНЕТБ ДМС ФЙРПЧ ДБООЩИ. йОЖПТНБГЙС РЕТЕЮЙУМЕОБ РП ЛБФЕЗПТЙСН ЙМЙ НЕИБОЙЪНБН ИТБОЕОЙС.

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ФБВМЙГ InnoDB

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ЮЙУМПЧЩИ ФЙРПЧ

ъОБЮЕОЙС ДМС УФПМВГПЧ DECIMAL (Й NUMERIC ) РТЕДУФБЧМЕОЩ, ЙУРПМШЪХС ДЧПЙЮОЩК ЖПТНБФ, ЛПФПТЩК ХРБЛПЧЩЧБЕФ 9 ДЕУСФЙЮОЩИ ГЙЖТ Ч ЮЕФЩТЕ ВБКФБ. иТБОЕОЙЕ ДМС ГЕМПЗП ЮЙУМБ Й ДТПВОЩИ ЮБУФЕК ЛБЦДПЗП ЪОБЮЕОЙС ПРТЕДЕМЕОП ПФДЕМШОП. лБЦДЩЕ 9 ГЙЖТ ФТЕВХАФ ЮЕФЩТЕИ ВБКФПЧ, Й ЛТБКОЙЕ УМЕЧБ ГЙЖТЩ ФТЕВХАФ ЛБЛПК-ФП ЮБУФЙ ЮЕФЩТЕИ ВБКФПЧ. иТБОЕОЙЕ, ФТЕВХЕНПЕ ДМС ЬФЙИ МЙЫОЙИ ГЙЖТ, ДБОП УМЕДХАЭЕК ФБВМЙГЕК.

лТБКОЙЕ УМЕЧБ ГЙЖТЩюЙУМП ВБКФ
00
11
21
32
42
53
63
74
84

фТЕВПЧБОЙС ИТБОЕОЙС ДМС ФЙРПЧ ДБФЩ Й ЧТЕНЕОЙ

фЙР ДБООЩИуЛПМШЛП ОБДП НЕУФБ ДП MySQL 5.6.4уЛПМШЛП ОБДП НЕУФБ Ч MySQL 5.6.4 Й ЧЩЫЕ
YEAR1 byte1 ВБКФ
DATE3 bytes3 ВБКФБ
TIME3 bytes3 ВБКФБ + ДТПВОПЕ ИТБОЕОЙЕ УЕЛХОД
DATETIME8 bytes5 ВБКФ + ДТПВОПЕ ИТБОЕОЙЕ УЕЛХОД
TIMESTAMP4 bytes4 ВБКФБ + ДТПВОПЕ ИТБОЕОЙЕ УЕЛХОД
фПЮОПУФЙ ДТПВОПК ЮБУФЙ УЕЛХОДуЛПМШЛП ОБДП НЕУФБ
0оЕ ОБДП
1, 21 ВБКФ
3, 42 ВБКФБ
5, 63 ВБКФБ

дМС ДЕФБМЕК П ЧОХФТЕООЕН РТЕДУФБЧМЕОЙЙ ЧТЕНЕООЩИ ЪОБЮЕОЙК УН. MySQL Internals: Important Algorithms and Structures.

фТЕВПЧБОЙС ИТБОЕОЙС ДМС УФТПЛПЧЩИ ФЙРПЧ

ч УМЕДХАЭЕК ФБВМЙГЕ M РТЕДУФБЧМСЕФ ЪБСЧМЕООХА ДМЙОХ УФПМВГБ Ч УЙНЧПМБИ ДМС ОЕДЧПЙЮОЩИ УФТПЛПЧЩИ ФЙРПЧ Й Ч ВБКФБИ ДМС ДЧПЙЮОЩИ УФТПЛПЧЩИ ФЙРПЧ. L РТЕДУФБЧМСЕФ ЖБЛФЙЮЕУЛХА ДМЙОХ Ч ВБКФБИ ДБООПЗП УФТПЛПЧПЗП ЪОБЮЕОЙС.

уФТПЛПЧЩЕ ФЙРЩ РЕТЕНЕООПК ДМЙОЩ УПИТБОЕОЩ, ЙУРПМШЪХС РТЙУФБЧЛХ ДМЙОЩ РМАУ ДБООЩЕ. рТЙУФБЧЛБ ДМЙОЩ ФТЕВХЕФ ПФ ПДОПЗП ДП ЮЕФЩТЕИ ВБКФПЧ Ч ЪБЧЙУЙНПУФЙ ПФ ФЙРБ ДБООЩИ, Й ЪОБЮЕОЙЕ РТЙУФБЧЛЙ L (ВБКФ ДМЙОЩ УФТПЛЙ). оБРТЙНЕТ, ИТБОЕОЙЕ ДМС MEDIUMTEXT ФТЕВХЕФ L ВБКФ, ЮФПВЩ УПИТБОЙФШ ЪОБЮЕОЙЕ РМАУ ФТЙ ВБКФБ, ЮФПВЩ УПИТБОЙФШ ДМЙОХ ЪОБЮЕОЙС.

тБЪНЕТ ПВЯЕЛФБ ENUM ПРТЕДЕМЕО ЮЙУМПН ТБЪМЙЮОЩИ ЪОБЮЕОЙК РЕТЕЮЙУМЕОЙС. пДЙО ВБКФ ЙУРПМШЪХЕФУС ДМС РЕТЕЮЙУМЕОЙК У 255 ЧПЪНПЦОЩНЙ ЪОБЮЕОЙСНЙ. дЧБ ВБКФБ ЙУРПМШЪХАФУС ДМС ОБМЙЮЙС РЕТЕЮЙУМЕОЙК НЕЦДХ 256 Й 65535 ЧПЪНПЦОЩНЙ ЪОБЮЕОЙСНЙ. уН. ТБЪДЕМ 12.4.4.

12.9. чЩВПТ РТБЧЙМШОПЗП ФЙРБ ДМС УФПМВГБ

PROCEDURE ANALYSE НПЦЕФ ЙУРПМШЪПЧБФШУС, ЮФПВЩ РПМХЮЙФШ РТЕДМПЦЕОЙС ДМС ПРФЙНБМШОЩИ ФЙРПЧ ДБООЩИ УФПМВГБ. дМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ УН. ТБЪДЕМ 9.4.2.4.

12.10. рТЙНЕОЕОЙЕ ФЙРПЧ ДБООЩИ ЙЪ ДТХЗЙИ ВБЪ ДБООЩИ

юФПВЩ ПВМЕЗЮЙФШ ЙУРПМШЪПЧБОЙЕ ЛПДБ, ОБРЙУБООПЗП ДМС ЧЩРПМОЕОЙС SQL ДТХЗЙИ РТПЙЪЧПДЙФЕМЕК, MySQL ПФПВТБЦБЕФ ФЙРЩ ДБООЩИ ЛБЛ РПЛБЪБОП Ч УМЕДХАЭЕК ФБВМЙГЕ. ьФЙ ПФПВТБЦЕОЙС ПВМЕЗЮБАФ ЙНРПТФ ФБВМЙЮОЩИ ПРТЕДЕМЕОЙК ЙЪ ДТХЗЙИ УЙУФЕН ВБЪ ДБООЩИ Ч MySQL.

фЙР ЙЪ ДТХЗПК ухвдфЙР Ч MySQL
BOOL TINYINT
BOOLEAN TINYINT
CHARACTER VARYING( M )VARCHAR( M )
FIXED DECIMAL
FLOAT4 FLOAT
FLOAT8 DOUBLE
INT1 TINYINT
INT2 SMALLINT
INT3 MEDIUMINT
INT4 INT
INT8 BIGINT
LONG VARBINARY MEDIUMBLOB
LONG VARCHAR MEDIUMTEXT
LONG MEDIUMTEXT
MIDDLEINT MEDIUMINT
NUMERIC DECIMAL
оБКДЙ УЧПЙИ ЛПММЕЗ!

чЩ НПЦЕФЕ ОБРТБЧЙФШ РЙУШНП БДНЙОЙУФТБФПТХ ЬФПК УФТБОЙЮЛЙ, бМЕЛУЕА рБХФПЧХ. Unsigned sql что это. Смотреть фото Unsigned sql что это. Смотреть картинку Unsigned sql что это. Картинка про Unsigned sql что это. Фото Unsigned sql что это

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *