Spec-Zone.ru › MySQL 8.4

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

  • 1.7.1 Расширения MySQL для стандартного SQL
  • 1.7.2 Отличия MySQL от стандартного SQL
  • 1.7.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 или поддержку функций, не относящихся к SQL, если это значительно повысит удобство использования сервера MySQL для большой части нашей пользовательской базы. Интерфейс HANDLER является примером такой стратегии. См. Раздел 15.2.5, «HANDLER Statement».

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации о настройке режима SQL см. Раздел 7.1.11, «Режимы 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 также устанавливает уровень изоляции транзакций.

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

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

Spec-Zone.ru

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