Совместимость с ANSI¶
Приведенные в таблице возможности Picodata SQL соответствуют требованиям стандарта SQL:2016, а именно ISO/IEC 9075:2016 «Информационные технологии — Языки баз данных — SQL».
Mandatory features¶
Идентификатор | Наименование | Описание |
---|---|---|
E011 | Числовые типы данных | |
E011-01 | Типы данных INTEGER и SMALLINT (включая все варианты написания) | Подпункт 5.3, Установка знака для беззнакового целого |
E011-02 | Типы данных REAL, DOUBLE PRECISION и FLOAT | Подпункт 5.3, Установка знака для приблизительного числового литерала Подпункт 6.1, Округление числового типа |
E011-03 | Типы данных DECIMAL и NUMERIC | Подпункт 5.3, Литералы точных чисел |
E011-05 | Числовые сравнения | Подпункт 8.2, Поддержка числовых типов данных, без учета табличного подзапроса и без поддержки функции F131, «Групповые операции» |
E011-06 | Неявное приведение числовых типов данных | Подпункт 8.2, Значения любых числовых типов данных можно сравнивать друг с другом; такие значения сравниваются по отношению к их алгебраическим значениям Подпункт 9.1, «Назначение получения» и Подпункт 9.2, «Назначение хранения»: Значение одного числового типа можно назначать другому типу с возможным округлением, отсечением и учетом условий вне диапазона |
E021 | Типы символьных строк | |
E021-01 | Тип данных CHARACTER (включая все варианты написания) | Подпункт 6.1, Соответствие типа CHARACTER лишь одному символьному типу Подпункт 13.5, Использование символьного типа CHARACTER для всех поддерживаемых языков |
E021-02 | CHARACTER VARYING data type (including all its spellings) | Subclause 5.2, “<token> and <separator>”: The <reserved word>s VARCHAR and VARYING Subclause 6.1, “<data type>”: The CHARACTER VARYING <character string type> Subclause 6.31, “<string value expression>”: For values of type CHARACTER VARYING Subclause 13.5, “Data type correspondences”: Type correspondences for CHARACTER VARYING for all supported languages |
E021-03 | Символьные литералы | Подпункт 5.3, “<literal>”: <quote> [<character representation>... ]<quote> |
E021-07 | Конкатенация символов | Подпункт 6.29, Выражение конкатенации |
E021-09 | TRIM function | Subclause 6.32, “<string value function>”: The <trim function> |
E021-12 | Сравнение символов | Подпункт 8.2, Поддержка типов CHARACTER и CHARACTER VARYING, не включая поддержку табличных подзапросов и без поддержки функции F131, «Групповые операции» |
E031 | Идентификаторы | |
E031-02 | Идентификаторы в нижнем регистре | Подпункт 5.2, Алфавитный символ в обычном идентификаторе может быть как строчным, так и прописным (т. е. идентификаторы без разделителей не обязательно должны содержать только буквы верхнего регистра) |
E031-03 | Символ нижнего подчеркивания в конце | Подпункт 5.2, Последний символ в обычном идентификаторе может быть символом подчеркивания |
E051 | Спецификация базовых запросов | |
E051-01 | SELECT DISTINCT | Subclause 7.16, “<query specification>”: With a <set quantifier> of DISTINCT, but without subfeatures E051-02 through E051-09 |
E051-02 | GROUP BY clause | Subclause 7.4, “<table expression>”: <group by clause>, but without subfeatures E051-04 through E051-09 Subclause 7.13, “<group by clause>”: With the restrictions that the <group by clause> shall contain a <column reference> equivalent to each group-invariant column reference in the <select list> and that any <column reference> in the <group by clause> shall also have an equivalent <column reference> in the <select list> |
E051-05 | Элементы в списке выборки можно переименовывать | Подпункт 7.12, «Спецификация запросов»: как в заголовке пункта |
E051-06 | HAVING clause | Subclause 7.4, “<table expression>”: <having clause> Subclause 7.14, “<having clause>” |
E051-07 | Допускается использование * в квалификаторе для списка выборки | Подпункт 7.12, «Спецификация запросов»: символ умножения |
E051-08 | Корреляционные имена в предложении FROM | Подпункт 7.6, «Ссылка на таблицу»: [ AS ] в качестве корреляционного имени |
E061 | Базовые предикаты и условия поиска | |
E061-01 | Предикат сравнения | Подпункт 8.2, «Предикат сравнения»: Для поддерживаемых типов данных, без поддержки табличных подзапросов |
E061-02 | Предикат BETWEEN | Подпункт 8.3, «Предикат BETWEEN» |
E061-03 | Предикат IN со списком значений | Подпункт 8.4, «Предикат IN»: Без поддержки табличных подзапросов |
E061-06 | Предикат NULL | Подпункт 8.8, «Предикат NULL»: Не включая функцию F481, «Расширенный предикат NULL» |
E061-08 | EXISTS predicate | Subclause 8.10, “<exists predicate>” |
E061-09 | Подзапросы в предикате сравнения | Подпункт 8.2, «Предикат сравнениe»: Включая поддержку табличных подзапросов |
E061-11 | Подзапросы в предикате IN | Подпункт 8.4, «Предикат IN»: Включая поддержку табличных подзапросов |
E061-14 | Условие поиска | Подпункт 8.21, «Условие поиска» |
E071 | Базовые выражения с запросами | |
E071-02 | Табличный оператор UNION ALL | Подпункт 7.13, «Выражение с запросом»: Включая поддержку UNION ALL |
E071-03 | Табличный оператор EXCEPT DISTINCT | Подпункт 7.13, «Выражение с запросом»: Включая поддержку EXCEPT [ DISTINCT ] |
E071-05 | Столбцы, совмещенные с помощью табличных операторов, необязательно должны иметь идентичный тип данных | Подпункт 7.13, «Выражение с запросом»: Столбцы, совмещенные с помощью UNION и EXCEPT, необязательно должны иметь идентичный тип данных |
E071-06 | Табличные операторы в подзапросах | Подпункт 7.13, «Выражение с запросом»: В табличных подзапросах можно указывать UNION и EXCEPT |
E091 | Set functions | |
E091-01 | AVG | Subclause 6.9, “<set function specification>”: With <computational operation> of AVG |
E091-02 | COUNT | Subclause 6.9, “<set function specification>”: With <computational operation> of COUNT |
E091-03 | MAX | Subclause 6.9, “<set function specification>”: With <computational operation> of MAX |
E091-04 | MIN | Subclause 6.9, “<set function specification>”: With <computational operation> of MIN |
E091-05 | SUM | Subclause 6.9, “<set function specification>”: With <computational operation> of SUM |
E091-07 | DISTINCT quantifier | Subclause 6.9, “<set function specification>”: With <set quantifier> of DISTINCT |
E101 | Базовая обработка данных | |
E101-01 | Инструкция INSERT | Подпункт 14.11, «Инструкция INSERT»: Когда конструктор контекстно типизированного табличного значения может состоять не более чем из одного контекстно типизированного выражения значения строки |
E101-03 | Searched UPDATE statement | Subclause 14.14, “<update statement: searched>”: Without support either of Feature E153, “Updatable queries with subqueries”, or Feature F221, “Explicit defaults” |
E101-04 | Searched DELETE statement | Subclause 14.9, “<delete statement: searched>” |
E111 | Инструкция SELECT, возвращающая одну строку | Подпункт 14.7, «Инструкция SELECT: одна строка»: Не включая поддержку функции F131, «Групповые операции» |
E131 | Поддержка значения NULL (NULL вместо значений) | Подпункт 4.13, «Столбцы, поля и атрибуты»: Способность обнуления Подпункт 6.5, «Спецификация контекстно типизированного значения»: Спецификация нулевого значения |
E141 | Basic integrity constraints | Subclause 11.6, “<table constraint definition>”: As specified by the subfeatures of this feature in this table |
E141-01 | NOT NULL constraints | Subclause 11.4, “<column definition>”: With <column constraint> of NOT NULL |
E141-03 | PRIMARY KEY constraints | Subclause 11.4, “<column definition>”: With <unique specification> of PRIMARY KEY for columns specified as NOT NULL Subclause 11.7, “<unique constraint definition>”: With <unique specification> of PRIMARY KEY |
F031 | Basic schema manipulation | |
F031-01 | CREATE TABLE statement to create persistent base tables | Subclause 11.3, “<table definition>”: Not in the context of a <schema definition> |
F031-03 | GRANT statement | Subclause 12.1, “<grant statement>”: Not in the context of a <schema definition> |
F031-13 | DROP TABLE statement: RESTRICT clause | Subclause 11.31, “<drop table statement>”: With a <drop behavior> of RESTRICT |
F031-19 | REVOKE statement: RESTRICT clause | Subclause 12.7, “<revoke statement>”: With a <drop behavior> of RESTRICT, only where the use of this statement can be restricted to the owner of the table being dropped |
F041 | Базовое объединение таблиц | |
F041-01 | Внутреннее соединение, но необязательно с ключевым словом INNER | Подпункт 7.6, «Ссылка на таблицу»: Раздел про объединения таблиц, но не включая поддержки подфункций с F041-02 по F041-08 |
F041-02 | Ключевое слово INNER | Подпункт 7.7, «Объединенная таблица»: тип объединения INNER |
F041-03 | LEFT OUTER JOIN | Subclause 7.10, “<joined table>”: <outer join type> of LEFT |
F041-05 | Внешние соединения могут быть вложенными | Подпункт 7.7, «Объединенная таблица»: Подфункция F041-01 расширена таким образом, что ссылка на таблицу в соединенной таблице сама может быть соединенной таблицей |
F041-07 | The inner table in a left or right outer join can also be used in an inner join | Subclause 7.10, “<joined table>”: Subfeature F041-01 extended so that a <table name> within a nested <joined table> can be the same as a <table name> in an outer <joined table> |
F041-08 | Все операторы сравнения поддерживаются (помимо обычного = ) |
Подпункт 7.7, «Объединенная таблица»: Подфункция F041-01 расширена таким образом, что условие соединения не ограничивается предикатом сравнения с оператором сравнения |
F201 | Функция CAST | Подпункт 6.13, «Спецификация CAST» для всех типов данных Подпункт 6.26, «Выражение значения» для спецификации CAST |
F471 | Скалярные значения подзапросов | Подпункт 6.26, «Выражение значения»: Первичное выражение значения может быть скалярным подзапросом |
T321 | Basic SQL-invoked routines | |
T321-02 | User-defined stored procedures with no overloading | Subclause 11.60, “<SQL-invoked routine>”: With <SQL-invoked procedure> |
T321-04 | CALL statement | Subclause 10.4, “ Subclause 16.1, “<call statement>” |
T631 | Предикат IN с одним элементом списка | Подпункт 8.4, «Предикат IN»: Список значений 'in' содержит ровно одно выражение значения строки |
Optional features¶
Идентификатор | Наименование | Описание |
---|---|---|
F321 | User authorization | |
T031 | BOOLEAN data type | |
T331 | Basic roles |
См. также: Работа с данными SQL.