Spec-Zone.ru › MySQL 5.7

1.6 Соответствие стандартам MySQL

  • 1.6.1 Расширения MySQL для стандарта SQL
  • 1.6.2 Отличия MySQL от стандарта SQL
  • 1.6.3 Как MySQL обрабатывает ограничения

В этом разделе описывается соответствие MySQL стандартам ANSI/ISO SQL. Сервер MySQL имеет множество расширений стандарта SQL, и здесь вы можете узнать о них и как их использовать. Также здесь вы найдете информацию о функциональности, отсутствующей в сервере MySQL, и о способах работы с некоторыми отличиями.

Стандарт SQL развивался с 1986 года и существует в нескольких версиях. В этом руководстве “SQL-92” относится к стандарту, выпущенному в 1992 году. “SQL:1999”, “SQL:2003”, “SQL:2008” и “SQL:2011” относятся к версиям стандарта, выпущенным в соответствующие годы, последняя из которых является наиболее актуальной версией. Мы используем фразу “стандарт SQL” для обозначения текущей версии стандарта SQL в любое время.

Одной из наших основных целей является дальнейшее стремление к соответствию стандарту SQL, но без ущерба для скорости или надежности. Мы не боимся добавлять расширения к SQL или поддержку не-SQL функций, если это значительно повышает удобство использования сервера MySQL для большой части нашей пользовательской базы. Интерфейс HANDLER является примером этой стратегии. См. Раздел 13.2.4, «HANDLER Statement».

Мы продолжаем поддерживать транзакционные и не транзакционные базы данных, чтобы удовлетворить как критически важные 24/7 использования, так и интенсивные веб- или логические потребности.

Сервер MySQL изначально был разработан для работы со средними базами данных (10-100 миллионов строк или около 100 МБ на таблицу) на небольших компьютерных системах. Сегодня сервер MySQL обрабатывает базы данных размером в терабайты, но код также может быть скомпилирован в уменьшенной версии, подходящей для портативных и встроенных устройств. Компактная структура сервера MySQL позволяет разрабатывать в обоих направлениях без конфликтов в дереве исходного кода.

Мы не ориентируемся на поддержку в реальном времени, хотя возможности репликации MySQL предлагают значительную функциональность.

MySQL поддерживает уровни ODBC от 0 до 3.51.

MySQL поддерживает кластеризацию баз данных высокой доступности с помощью движка хранения NDBCLUSTER. См. Главу 21, MySQL NDB Cluster 7.5 и NDB Cluster 7.6.

Мы реализуем функциональность XML, которая поддерживает большую часть стандарта W3C XPath. См. Раздел 12.11, «XML-функции».

MySQL (5.7.8 и более поздние версии) поддерживает родной тип данных JSON, как определено в RFC 7159 и на основе стандарта ECMAScript (ECMA-262). См. Раздел 11.5, «Тип данных JSON». MySQL также реализует подмножество функций SQL/JSON, указанных в предварительной публикации черновика стандарта SQL:2016; см. Раздел 12.17, «JSON-функции» для получения дополнительной информации.

Выбор режимов SQL

Сервер MySQL может работать в различных режимах SQL и может применять эти режимы по-разному для разных клиентов в зависимости от значения системной переменной sql_mode. Администраторы баз данных могут установить глобальный режим SQL, чтобы соответствовать требованиям работы сервера сайта, а каждое приложение может установить свой сессионный режим SQL в соответствии со своими требованиями.

Режимы влияют на синтаксис SQL, поддерживаемый MySQL, и проверки валидности данных, которые он выполняет. Это упрощает использование MySQL в разных средах и совместное использование MySQL с другими серверами баз данных.

Дополнительную информацию об установке режима SQL см. в Разделе 5.1.10, «Режимы SQL сервера».

Запуск MySQL в режиме ANSI

Для запуска сервера MySQL в режиме ANSI, запустите mysqld с параметром --ansi. Запуск сервера в режиме ANSI эквивалентен запуску с следующими параметрами:

--transaction-isolation=SERIALIZABLE --sql-mode=ANSI

Для достижения такого же эффекта во время выполнения выполните эти два оператора:

SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'ANSI';

Вы можете увидеть, что установка системной переменной sql_mode на значение 'ANSI' включает все параметры режима SQL, соответствующие режиму ANSI следующим образом:

mysql> SET GLOBAL sql_mode='ANSI';
mysql> SELECT @@GLOBAL.sql_mode;
        -> 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI'

Запуск сервера в режиме ANSI с параметром --ansi не совсем эквивалентен установке режима SQL на 'ANSI', потому что параметр --ansi также устанавливает уровень изоляции транзакций.

См. Раздел 5.1.6, «Параметры командной строки сервера».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/compatibility.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API