19 июня 2023

Что нового в стандарте SQL:2023?

    Международная организация по стандартизации (ISO, International Organization for Standardization) в начале июня 2023 года приняла новую версию стандарта ISO/IEC 9075 "Information technology - Database languages - SQL" – SQL:2023. Этот стандарт определяет требования к синтаксису языка SQL, которые, хоть немного, но обеспечивают совместимость реляционных СУБД. Его первая версия вышла в 1986 году и была основана на стандарте ANSI SQL. Я считаю, что основополагающим стандартом для SQL был SQL-92. Он заложил фундамент, а остальные редакции его просто "достраивали" функционалом не совсем связанным с SQL: регулярные выражения, массивы, XML, JSON, элементы объектно-ориентированного программирования... Исключением можно считать только SQL:2003, который дал нам то, без чего сегодня трудно представить реляционную базу данных: оконные функции, генераторы последовательностей, автоинкрементные столбцы, MERGE, CREATE TABLE AS. А, что нового в стандарте SQL:2023?
ISO/IEC 9075-2:2023 Information technology — Database languages SQL — Part 2: Foundation (SQL/Foundation)
    Новшества стандарта SQL:2023 можно разделить на четыре основные группы:
  • Ряд новых функций:
    • GREATEST и LEAST (T054);
    • функции заполнения строки RPAD и LPAD (T055);
    • многосимвольные варианты функции TRIM (T056; LTRIM, RTRIM и BTRIM);
    • ANY_VALUE (T626);
  • Различные изменения в языке SQL:
    • обработка NULL в ограничении уникальности (F292);
    • ORDER BY по столбцу, который не отображается в списке SELECT сгруппированной таблицы (F868);
    • необязательность указания максимальной длины для строковых типов полей (T081);
    • упрощение CYCLE в рекурсивных запросах (T133);
    • шестнадцатеричные, восьмеричные и двоичные целочисленные литералы (T661);
    • подчеркивание в числовых литералах для визуальной группировки цифр (T662; прямо, как в Delphi 11);
  • Новые функции, связанные с JSON:
    • тип данных JSON (T801);
    • расширенный тип данных JSON (T802);
    • JSON на основе строк (T803, был добавлен еще в SQL:2016);
    • целые шестнадцатеричные литералы в языке путей JSON (T840);
    • функции упрощенного доступа к частям значений JSON с использованием синтаксиса точек и массивов (T860–T864);
    • методы элементов данных JSON (T865–T878; bigint, boolean, date, decimal, decimal() with precision and scale, integer, number, string, time, time_tz, time precision, timestamp, timestamp_tz, timestamp precision);
    • сравнение, сортировка и использование в операциях группировки (T879–T882);
  • Подязык Property Graph Queries (PGQ), который стандартизует для РСУБД графовые запросы (новая часть стандарта "Part 16: Property Graph Queries (SQL/PGQ)").
    Меня SQL:2023 не впечатлил. Основное внимание уделено JSON и PGQ. С JSON все понятно. Это "погоня за модой". Куда сейчас без JSON? Он везде. Напоминает ситуацию с XML в начале XXI века: XML модно, XML везде, основная тема SQL:2006 – XML... А вот то, что целый новый раздел посвящен PGQ – это я не понимаю. С чем связаны эти шаги в сторону нереляционных баз данных?


    На текущий момент в магазине ISO опубликованы и доступны для покупки 11 частей стандарта SQL:2023 на английском языке в PDF-формате:

2 комментария:

  1. Анонимный19 июня, 2023 11:48

    >Исключением можно считать только SQL:2023
    Наверное SQL:2003

    ОтветитьУдалить