IBM стремится реализовать важные для наших клиентов функции SQL на всех платформах таким образом, чтобы они были общими, переносимыми и поддерживали SQL-стандарты ANSI/ISO. Даты появления конкретных функций в разных продуктах DB2 могут быть различны. В некоторых случаях единственной причиной этого являются разные графики поставок продуктов DB2. В других случаях причиной являются требования клиентов по ускорению разработки функциональности SQL для конкретного продукта DB2.
Многие пользователи баз данных IBM и независимые поставщики программного обеспечения проявляют интерес к написанию переносимых приложений. Другие предпочитают разрабатывать, скажем, приложение DB2 для Windows, а затем развертывать его на DB2 для z/OS. Эти разработчики приложений просили нас предоставить список общих возможностей языка SQL в качестве краткого справочника.
Данная сводная версия общих функциональных возможностей SQL-приложений предназначена быть кратким справочником и содержит часто используемые возможности и функции на разных платформах. Более подробная информация приводится в книге "Справочник по SQL для кросс-платформенной разработки" (PDF 9,1 МБ) и соответствующих справочных книгах по SQL для продуктов DB2 (EN).
Перед использованием этих таблиц прочтите предупреждение в конце статьи.
- DB2 Version 9.5 для Linux, UNIX и Windows
- DB2 Version 9.1 для z/OS
- DB2 Version 6.1 для IBM i
- Основные элементы
- Типы данных
- Специальные регистры
- Предикаты
- Агрегатные функции
- Скалярные функции
- Запросы
- Основные выражения
- Выражения для изменения данных
- Операции, ориентированные на использование курсоров
- Управление соединением и транзакциями
- Динамические функции
- Управляющие выражения
- Определение данных
- Авторизация
- Различные выражения
- Хост-языки
Обозначения
| Y | Продукт полностью поддерживает данную функциональность. |
| P | Продукт частично поддерживает данную функциональность; обратитесь к информации о продукте. |
Основные элементы
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Идентификаторы - простые | Y | Y | Y | |
| Идентификаторы - с разделителями | Y | Y | Y | |
| Идентификаторы с поддержкой символов в нижнем регистре и завершающих подчеркиваний | Y | Y | Y | |
| Приведение типов данных - неявное | Y | Y | Y | |
| Автоматическое преобразование данных, основанное на кодовой странице | Y | Y | Y | |
| Константы | Y | Y | Y | |
| Шестнадцатеричная спецификация символьных констант | Y | Y | Y | |
| Null-значения | Y | Y | Y | |
| Ссылки на столбцы | Y | Y | Y | |
| Ссылки на хост-переменные | Y | Y | Y | |
| Переменные-индикаторы | Y | Y | Y | |
| Хост-структуры | Y | Y | Y | |
| "Дружественная" арифметика и преобразование | Y | Y | Y | |
| Арифметические операторы | Y | Y | Y | |
| Конкатенация строк | Y | Y | Y | |
| Скалярная внедренная выборка (subselect) в качестве выражения | Y | Y | Y | |
| Скалярная полная выборка (fullselect) в качестве выражения | Y | Y | Y | |
| Арифметика даты/времени | Y | Y | Y | |
| Выражение CASE | Y | Y | Y | |
| Спецификация CAST | Y | Y | Y | |
| Выражение ROW CHANGE | Y | Y | Y | |
| Ссылка в последовательности (NEXT VALUE и PREVIOUS VALUE) | Y | Y | Y | |
| Спецификация ранжирования OLAP (RANK, DENSE_RANK) | Y | Y | Y | |
| Спецификация нумерации OLAP (ROW_NUMBER) | Y | Y | Y | |
| Диагностическая область | Y | Y | Y |
Типы данных
| Элемент языка | LUW | z/OS | i | |
|---|---|---|---|---|
| SMALLINT | Y | Y | Y | |
| INTEGER | Y | Y | Y | |
| BIGINT | Y | Y | Y | |
| DECIMAL | Y | Y | Y | |
| NUMERIC | Y | Y | Y | NUMERIC определяется как зональное десятичное число на DB2 для i и как упакованное десятичное число на других платформах. |
| REAL | Y | Y | Y | Для переносимости не используйте FLOAT(n). |
| DOUBLE или FLOAT | Y | Y | Y | Для переносимости не используйте FLOAT(n). |
| DECFLOAT | Y | Y | Y | |
| CHARACTER | Y | Y | Y | |
| VARCHAR | Y | Y | Y | |
| FOR BIT DATA с CHAR или VARCHAR | Y | Y | Y | |
| CLOB | Y | Y | Y | |
| FOR SBCS или MIXED DATA с CHAR, VARCHAR или CLOB | P | Y | Y | |
| BLOB | Y | Y | Y | |
| GRAPHIC | Y | Y | Y | |
| VARGRAPHIC | Y | Y | Y | |
| DBCLOB | Y | Y | Y | |
| DATE | Y | Y | Y | |
| TIME | Y | Y | Y | |
| TIMESTAMP | Y | Y | Y | |
| Специфические типы, определяемые пользователем | Y | Y | Y |
Специальные регистры
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| CURRENT CLIENT_ACCTNG | Y | Y | Y | |
| CURRENT CLIENT_APPLNAME | Y | Y | Y | |
| CURRENT CLIENT_USERID | Y | Y | Y | |
| CURRENT CLIENT_WRKSTNNAME | Y | Y | Y | |
| CURRENT DATE | Y | Y | Y | |
| CURRENT_DATE | Y | Y | Y | |
| CURRENT DECFLOAT ROUNDING MODE | Y | Y | Y | |
| CURRENT DEGREE | Y | Y | Y | |
| CURRENT PATH | Y | Y | Y | |
| CURRENT_PATH | Y | Y | Y | |
| CURRENT SCHEMA | Y | Y | Y | |
| CURRENT_SCHEMA | Y | Y | Y | |
| CURRENT SERVER | Y | Y | Y | |
| CURRENT TIME | Y | Y | Y | |
| CURRENT_TIME | Y | Y | Y | |
| CURRENT TIMESTAMP | Y | Y | Y | |
| CURRENT_TIMESTAMP | Y | Y | Y | |
| CURRENT TIMEZONE | Y | Y | Y | |
| SESSION_USER | Y | Y | Y | |
| USER | Y | Y | Y |
Предикаты
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Основные ( = <> < > <= >= ), за исключением LOB-типов | Y | Y | Y | |
| Основные со скалярным правым подзапросом оператора сравнения | Y | Y | Y | |
| Кванторы (ALL, ANY или SOME) с одиночным выражением (без подзапроса) с левой стороны и частичная выборка с правой стороны | Y | Y | Y | |
| BETWEEN (не скалярные подзапросы) | Y | Y | Y | |
| EXISTS (внедренная выборка) | Y | Y | Y | |
| IN, сопровождаемый списком выражений | Y | Y | Y | |
| IN, сопровождаемый внедренной выборкой одного столбца | Y | Y | Y | |
| IS NULL (не скалярный подзапрос) | Y | Y | Y | |
| LIKE с хост-переменной или строковой константой в качестве шаблона | Y | Y | Y | |
| LIKE с выражением для шаблона и escape | Y | Y | Y |
Агрегатные функции
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| AVG | Y | Y | Y | |
| COUNT | Y | Y | Y | |
| COUNT_BIG | Y | Y | Y | |
| MAX | Y | Y | Y | |
| MIN | Y | Y | Y | |
| STDDEV | Y | Y | Y | |
| SUM | Y | Y | Y | |
| VARIANCE или VAR | Y | Y | Y |
Скалярные функции
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| ABSVAL или ABS | Y | Y | Y | |
| ACOS | Y | Y | Y | |
| ASCII | Y | Y | Y | |
| ASIN | Y | Y | Y | |
| ATAN | Y | Y | Y | |
| ATANH | Y | Y | Y | |
| ATAN2 | Y | Y | Y | |
| BIGINT | Y | Y | Y | |
| BLOB | Y | Y | Y | |
| CEIL или CEILING | Y | Y | Y | |
| CHAR (не строковые модули) | Y | Y | Y | |
| CHARACTER_LENGTH или CHAR_LENGTH (не строковые модули) | P | P | Y | В LUW и z/OS для достижения эквивалентной функциональности для большинства данных требуется аргумент. |
| CLOB (не строковые модули) | Y | Y | Y | |
| COALESCE (или VALUE) | Y | Y | Y | |
| COMPARE_DECFLOAT | Y | Y | Y | |
| CONCAT | Y | Y | Y | |
| CONTAINS | Y | Y | Y | |
| COS | Y | Y | Y | |
| COSH | Y | Y | Y | |
| DATE | Y | Y | Y | |
| DAY | Y | Y | Y | |
| DAYNAME | Y | P | Y | z/OS поддерживает функцию как образец в схеме DSN8. |
| DAYOFWEEK | Y | Y | Y | |
| DAYOFWEEK_ISO | Y | Y | Y | |
| DAYOFYEAR | Y | Y | Y | |
| DAYS | Y | Y | Y | |
| DBCLOB (не строковые модули) | Y | Y | Y | |
| DECFLOAT | Y | Y | Y | |
| DECIMAL или DEC | Y | Y | Y | |
| DECRYPT_BIT | P | Y | Y | LUW поддерживает функцию с названием DECRYPT_BIN. |
| DECRYPT_CHAR | Y | Y | Y | |
| DEGREES | Y | Y | Y | |
| DIFFERENCE | Y | Y | Y | |
| DIGITS | Y | Y | Y | |
| DOUBLE или DOUBLE_PRECISION | Y | Y | Y | |
| ENCRYPT | Y | Y | Y | Синтаксис функции ENCRYPT одинаков, но z/OS будет использовать для результата формат ENCRYPT_TDES вместо ENCRYPT_RC2. |
| EXP | Y | Y | Y | |
| FLOAT | Y | Y | Y | |
| FLOOR | Y | Y | Y | |
| GENERATE_UNIQUE | Y | Y | Y | |
| GETHINT | Y | Y | Y | |
| GRAPHIC (не строковые модули) | P | Y | Y | |
| HEX | Y | Y | Y | |
| HOUR | Y | Y | Y | |
| IDENTITY_VAL_LOCAL | Y | Y | Y | |
| INSERT (не строковые модули) | Y | Y | Y | |
| INTEGER или INT | Y | Y | Y | |
| JULIAN_DAY | Y | Y | Y | |
| LCASE | Y | Y | Y | |
| LEFT (не строковые модули) | P | Y | Y | |
| LENGTH (не строковые модули) | Y | Y | Y | |
| LN | Y | Y | Y | |
| LOCATE (не строковые модули) | Y | Y | Y | |
| LOG10 | Y | Y | Y | |
| LOWER | Y | Y | Y | |
| LTRIM | P | P | Y | LUW не поддерживает аргумент CLOB. z/OS не поддерживает аргумент. |
| MAX | Y | Y | Y | |
| MICROSECOND | Y | Y | Y | |
| MIDNIGHT_SECONDS | Y | Y | Y | |
| MIN | Y | Y | Y | |
| MINUTE | Y | Y | Y | |
| MOD | P | Y | Y | |
| MONTH | Y | Y | Y | |
| MONTHNAME | Y | P | Y | z/OS поддерживает функцию как образец в схеме DSN8. |
| MULTIPLY_ALT | Y | Y | Y | |
| NORMALIZE_DECFLOAT | Y | Y | Y | |
| NULLIF | P | P | Y | LUW не поддерживает аргументы LOB. z/OS не поддерживает аргументы LOB. |
| POSITION (не строковые модули) | P | P | Y | В LUW и z/OS для достижения эквивалентной функциональности для большинства данных требуется аргумент CODEUNITS16. |
| POSSTR | Y | Y | Y | |
| POWER | Y | Y | Y | |
| QUANTIZE | Y | Y | Y | |
| QUARTER | Y | Y | Y | |
| RADIANS | Y | Y | Y | |
| RAISE_ERROR | Y | Y | Y | |
| RAND | Y | Y | Y | |
| REAL | Y | Y | Y | |
| REPEAT | P | P | Y | LUW не поддерживает графические типы. z/OS не поддерживает аргументы LOB. |
| REPLACE | P | P | Y | LUW не поддерживает графические типы. z/OS не поддерживает аргументы LOB. |
| RID | Y | Y | Y | |
| RIGHT (не строковые модули) | P | Y | Y | LUW не поддерживает графические типы. |
| ROUND | Y | Y | Y | |
| RTRIM | P | P | Y | LUW не поддерживает аргумент CLOB. z/OS не поддерживает аргумент CLOB. |
| SCORE | Y | Y | Y | |
| SECOND | Y | Y | Y | |
| SIGN | Y | Y | Y | |
| SIN | Y | Y | Y | |
| SINH | Y | Y | Y | |
| SMALLINT | Y | Y | Y | |
| SOUNDEX | Y | Y | Y | |
| SPACE | P | Y | Y | |
| SQRT | P | Y | Y | |
| STRIP | Y | Y | Y | |
| SUBSTR | Y | Y | Y | |
| SUBSTRING (не строковые модули) | P | P | Y | В LUW и z/OS для достижения эквивалентной функциональности для большинства данных требуется аргумент. |
| TAN | Y | Y | Y | |
| TANH | Y | Y | Y | |
| TIME | Y | Y | Y | |
| TIMESTAMP | Y | Y | Y | |
| TIMESTAMP_ISO | Y | Y | Y | |
| TIMESTAMP_FORMAT или TO_DATE | Y | Y | Y | |
| TIMESTAMPDIFF | Y | Y | Y | |
| TOTALORDER | Y | Y | Y | |
| TRANSLATE | Y | Y | Y | |
| TRUNCATE или trUNC | Y | Y | Y | |
| UCASE или UPPER | Y | Y | Y | |
| VALUE | Y | Y | Y | |
| VARCHAR (не строковые модули) | P | Y | Y | |
| VARCHAR_FORMAT или TO_CHAR | Y | Y | Y | |
| VARGRAPHIC (не строковые модули) | Y | Y | Y | |
| WEEK | Y | Y | Y | |
| WEEK_ISO | Y | Y | Y | |
| YEAR | Y | Y | Y |
Запросы
| Элемент данных | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Выражение SELECT | Y | Y | Y | |
| Подвыражение AS в выражении SELECT | Y | Y | Y | |
| Квалифицированный * или неквалифицированный * в выражении SELECT | Y | Y | Y | |
| Выражения, отличные от скалярного подзапроса, в выражении SELECT | Y | Y | Y | |
| Агрегатные функции, разрешенные в выражении SELECT, даже если таблица результата унаследована от группового представления (grouped view) | Y | Y | Y | |
| Выражение FROM со ссылкой на одну таблицу или представление | Y | Y | Y | |
| Выражение FROM с неявным внутренним соединением (implicit inner join) (несколько ссылок на таблицы, разделенные запятыми) | Y | Y | Y | |
| Выражение FROM с вложенным табличным выражением, содержащим внедренную выборку | Y | Y | Y | |
| Выражение FROM с вложенным табличным выражением, идущим после ключевого слова TABLE | Y | Y | Y | |
| Выражение FROM с явным соединением INNER JOIN | Y | Y | Y | |
| Выражение FROM с LEFT OUTER JOIN | Y | Y | Y | |
| Выражение FROM с RIGHT OUTER JOIN | Y | Y | Y | |
| Выражение FROM с FULL OUTER JOIN с равенством в условии соединения | Y | Y | Y | |
| Выражение FROM с оператором INSERT | Y | Y | Y | |
| Оператор WHERE | Y | Y | Y | |
| GROUP BY со ссылками на названия столбцов | Y | Y | Y | |
| GROUP BY со ссылками на группирующие выражения | Y | Y | Y | |
| Оператор HAVING | Y | Y | Y | |
| Полная выборка с UNION или UNION ALL | Y | Y | Y | |
| Полная выборка с INTERSECT или INTERSECT ALL | Y | Y | P | DB2 для i не поддерживает INTERSECT ALL. |
| Полная выборка с EXCEPT или EXCEPT ALL | Y | Y | P | DB2 для i не поддерживает EXCEPT ALL. |
| Select-выражение, начинающееся с общего табличного выражения | Y | Y | Y | |
| Select-выражение, использующее рекурсивное общее табличное выражение | Y | Y | Y | |
| Оператор ORDER BY с квалифицированными названиями столбцов | Y | Y | Y | |
| Оператор ORDER BY с выражениями ключа сортировки | Y | Y | Y | |
| Оператор ORDER BY с выражениями не в списке SELECT | Y | Y | Y | |
| ORDER BY ORDER OF | Y | Y | Y | |
| Оператор FOR UPDATE со списком названий столбцов | Y | Y | Y | |
| Оператор FOR UPDATE с неявным списком столбцов | Y | Y | Y | |
| Оператор FOR READ ONLY | Y | Y | Y | |
| Оператор OPTIMIZE с целым числом строк | Y | Y | Y | |
| Select-выражение с изолирующим оператором (isolation clause) с CS, RR или RS | Y | Y | Y | |
| Select-выражение с изолирующим оператором с UR в выражении select, доступным только по чтению | Y | Y | Y | |
| Оператор FETCH FIRST | Y | Y | Y |
Основные выражения
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Статическое выражение CALL | Y | Y | Y | |
| Статическое выражение CALL с названием переменной для имени процедуры | Y | Y | Y | |
| Выражение SELECT INTO с необязательными операторами WHERE, GROUP BY или HAVING | Y | Y | Y | |
| Выражение SELECT INTO с оператором FETCH FIRST | Y | Y | Y | |
| Выражение SELECT INTO с изолирующим оператором | Y | Y | Y | |
| Выражение VALUES INTO | Y | Y | Y |
Выражения для изменения данных
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Поисковое выражение DELETE | Y | Y | Y | |
| Выражение INSERT с однострочным оператором VALUES | Y | Y | Y | |
| Выражение INSERT с внедренной выборкой | Y | Y | Y | |
| Поисковое выражение UPDATE | Y | Y | Y |
Операции, ориентированные на использование курсоров
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Выражение CLOSE | Y | Y | Y | |
| Выражение DECLARE CURSOR (см. другие элементы курсора) | Y | Y | Y | |
| Объявление курсора INSENSITIVE SCROLL | P | Y | Y | LUW поддерживает эту функциональность только через CLI или JDBC. |
| Объявление курсора WITH HOLD | Y | Y | Y | |
| Объявление курсора WITH RETURN (неявный возврат в вызывающую процедуру) | Y | Y | Y | |
| Объявление курсора WITH RETURN TO CALLER | Y | Y | Y | |
| Позиционированное выражение DELETE | Y | Y | Y | |
| Выражение FETCH без ориентации курсора (неявный NEXT) | Y | Y | Y | |
| Выражение FETCH с NEXT, PRIOR, FIRST, LAST, BEFORE, AFTER, CURRENT или RELATIVE | P | Y | Y | LUW поддерживает эту функциональность только через CLI или JDBC. |
| Выражение FETCH с ABSOLUTE | P | Y | P | |
| Выражение OPEN | Y | Y | Y | |
| Позиционированное выражение UPDATE | Y | Y | Y |
Управление соединением и транзакциями
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Спецификация уровня изоляции на уровне пакетов | Y | Y | Y | |
| Спецификация уровня изоляции на уровне выражений | Y | Y | Y | |
| RR (SERIALIZABLE в стандарте SQL2003) | Y | Y | Y | |
| RS (REPEATABLE READ в стандарте SQL2003) | Y | Y | Y | |
| CS (READ COMMITTED в стандарте SQL2003) | Y | Y | Y | |
| UR (READ UNCOMMITTED в стандарте SQL2003 Core) | Y | Y | Y | |
| Изолирующее выражение с USE AND KEEP EXCLUSIVE LOCKS | P | P | Y | |
| Выражение COMMIT | Y | Y | Y | |
| Выражение CONNECT (1 сайт на транзакцию) | Y | Y | Y | |
| Выражение CONNECT (2 и более сайта на транзакцию) (называется также двухфазным завершением (Two Phase Commit)) | Y | Y | Y | |
| Выражение DISCONNECT | Y | Y | Y | |
| Выражение RELEASE для соединения | Y | Y | Y | |
| Выражение RELEASE SAVEPOINT | Y | Y | Y | |
| Выражение ROLLBACK для единицы работы | Y | Y | Y | |
| Выражение ROLLBACK TO SAVEPOINT | Y | Y | Y | |
| Выражение SAVEPOINT - не вложенное | Y | Y | Y | |
| Выражение SAVEPOINT - вложенное | Y | Y | Y | |
| Выражение SET CONNECTION | Y | Y | Y |
Динамические функции
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Выражение DESCRIBE output без оператора USING | Y | Y | Y | |
| Выражение DESCRIBE INPUT | Y | Y | Y | |
| Выражение EXECUTE | Y | Y | Y | |
| Выражение EXECUTE IMMEDIATE | Y | Y | Y | |
| Выражение PREPARE | Y | Y | Y | |
| Выражение PREPARE, определяющее параметры курсора (оператор ATTRIBUTES) | P | Y | Y | LUW поддерживает эту функциональность только через CLI или JDBC. |
Управляющие выражения
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Управляющие выражения в SQL-процедурах | Y | Y | Y | |
| Управляющие выражения в SQL-функциях | P | P | Y | Частичная поддержка допускает одно выражение RETURN в SQL-функциях. |
| Выражение присваивания | Y | Y | Y | |
| Выражение CASE | Y | Y | Y | |
| Составное выражение | Y | Y | Y | |
| Вложенное не атомарное составное выражение | Y | Y | Y | |
| Выражение FOR | Y | Y | Y | |
| Выражение GET DIAGNOSTICS для ROW_COUNT | Y | Y | Y | |
| Выражение GET DIAGNOSTICS для RETURN_STATUS | Y | Y | Y | |
| Выражение GET DIAGNOSTICS для MESSAGE_TEXT | Y | Y | Y | |
| Выражение GOTO | Y | Y | Y | |
| Выражение IF | Y | Y | Y | |
| Выражение ITERATE | Y | Y | Y | |
| Выражение LEAVE | Y | Y | Y | |
| Выражение LOOP | Y | Y | Y | |
| Выражение REPEAT | Y | Y | Y | |
| Выражение RESIGNAL | Y | Y | Y | |
| Выражение RETURN из SQL-процедуры | Y | Y | Y | |
| Выражение RETURN из SQ-функции | Y | Y | Y | |
| Выражение SIGNAL | Y | Y | Y | |
| Выражение WHILE | Y | Y | Y |
Определение данных
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Разрешение DDL-выражений в SQL-программах | Y | Y | Y | |
| Поддержка семантики транзакций для DDL | Y | Y | Y | |
| Поддержка 18-байтных имен объектов (за исключением имени схемы) | Y | Y | Y | Некоторые платформы поддерживают более длинные имена объектов. |
| Поддержка 10-байтных имен схем | Y | Y | Y | Некоторые платформы поддерживают более длинные имена схем. |
| Выражение ALTER function | P | P | Y | |
| Выражение ALTER PROCEDURE | P | Y | Y | |
| Выражение ALTER SEQUENCE | Y | Y | Y | |
| Выражение ALTER TABLE (см. другие элементы, отмеченные ALTAB) | Y | P | Y | z/OS не позволяет указывать один и тот же оператор более одного раза. |
| ALTER COLUMN (ALTAB) | P | P | Y | |
| Выражение COMMENT | Y | Y | Y | |
| Выражение CREATE ALIAS | Y | Y | Y | |
| Выражение CREATE DISTINCT TYPE | Y | Y | Y | |
| Выражение CREATE FUNCTION (External Scalar) | Y | Y | Y | |
| Выражение CREATE FUNCTION (Sourced) | Y | Y | Y | |
| Выражение CREATE FUNCTION (SQL Scalar) | P | P | Y | Некоторые функциональные возможности поддерживаются не на всех платформах. |
| Выражение CREATE FUNCTION (External Table) | Y | Y | Y | |
| Выражение CREATE INDEX по списку столбцов | Y | Y | Y | |
| Выражение CREATE UNIQUE INDEX по списку столбцов | Y | Y | Y | |
| Выражение CREATE PROCEDURE для внешней процедуры | Y | Y | Y | |
| Выражение CREATE PROCEDURE для SQL-процедуры | Y | Y | Y | |
| CREATE SCHEMA | Y | P | Y | z/OS требует, чтобы выражение обрабатывалось специальным процессором схем. |
| Выражение CREATE TABLE, использующее определения столбцов (см. другие элементы, отмеченные CRTAB) | Y | Y | Y | |
| Выражение CREATE TABLE LIKE другая таблица/представление (см. другие элементы, отмеченные CRTAB) | Y | Y | Y | |
| Выражение CREATE TABLE LIKE другая таблица/представление, включая тождественность (см. другие элементы, отмеченные CRTAB) | Y | Y | Y | |
| Выражение CREATE TABLE AS запрос (см. другие элементы, отмеченные CRTAB) | Y | Y | Y | |
| Оператор ограничения CHECK (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор DATA CAPTURE (ALTAB, CRTAB) | Y | Y | P | Таблицы DB2 для i всегда следят за изменениями - оператор не поддерживается. |
| Оператор DEFAULT без определенного значения (ALTAB, CRTAB, DGTTAB) | Y | Y | Y | |
| Оператор DEFAULT с определенным значением (ALTAB, CRTAB, DGTTAB) | Y | Y | Y | |
| Оператор IMPLICITLY HIDDEN (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор VOLATILE (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор IDENTITY (ALTAB, CRTAB, DGTTAB) | Y | Y | Y | |
| Оператор ROW CHANGE TIMESTAMP (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор ограничения PRIMARY KEY (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор ограничения UNIQUE (ALTAB, CRTAB) | Y | Y | Y | |
| Автоматическая генерация индекса для ограничений unique (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор ограничения по ссылке (referential) (ALTAB, CRTAB) | Y | Y | Y | |
| Оператор REFERENCES, определяющий ON DELETE (ALTAB, CRTAB) | P | P | Y | LUW не поддерживает ON DELETE SET DEFAULT. z/OS не поддерживает ON DELETE SET DEFAULT. |
| Таблицы с обратными ссылками (self referencing) могут указываться без необходимости использования ALTER TABLE | Y | P | Y | |
| Обслуживаемые пользователем MQT (CRTAB,ALTAB) | Y | Y | Y | |
| Выражение CREATE SEQUENCE | Y | Y | Y | |
| Выражение CREATE TRIGGER - триггер BEFORE или AFTER для таблицы | Y | Y | Y | |
| Выражение CREATE TRIGGER - триггер INSTEAD OF для представления | Y | P | Y | |
| Выражение CREATE VIEW, использующее внедренную выборку без оператора CHECK OPTION | Y | Y | Y | |
| CREATE VIEW WITH CASCADED CHECK OPTION | Y | Y | Y | |
| CREATE VIEW WITH LOCAL CHECK OPTION | Y | Y | Y | |
| Выражение DECLARE GLOBAL TEMPORARY TABLE (см. другие элементы, отмеченные DGTTAB) | P | Y | Y | |
| Выражение DROP с определенным поведением RESTRICT или CASCADE | P | P | Y | |
| Выражение DROP ALIAS | Y | Y | Y | |
| Выражение DROP DISTINCT TYPE | Y | Y | Y | |
| Выражение DROP FUNCTION | Y | Y | Y | |
| Выражение DROP INDEX | Y | Y | Y | |
| Выражение DROP PACKAGE | Y | Y | Y | |
| Выражение DROP PROCEDURE | Y | P | Y | |
| Выражение DROP SEQUENCE | Y | Y | Y | |
| Выражение DROP TABLE | Y | Y | Y | |
| Выражение DROP TRIGGER | Y | Y | Y | |
| Выражение DROP VIEW | Y | Y | Y | |
| Выражение RENAME TABLE | P | P | Y |
Авторизация
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Выражение GRANT Function или Procedure Privileges | Y | Y | Y | |
| Выражение GRANT Package Privileges, не имеющее оператора WITH GRANT OPTION | Y | Y | Y | |
| Выражение GRANT Package Privileges, имеющее оператор WITH GRANT OPTION | Y | Y | Y | |
| Выражение GRANT Sequence Privileges | Y | Y | Y | |
| Выражение GRANT Table Privileges | Y | Y | Y | |
| Выражение REVOKE Function Privileges | Y | Y | Y | |
| Выражение REVOKE Procedure Privileges | Y | P | Y | |
| Выражение REVOKE Package Privileges | Y | Y | Y | |
| Выражение REVOKE Sequence Privileges | Y | Y | Y | |
| Выражение REVOKE Table Privileges | Y | Y | Y |
Различные выражения
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| Выражение BEGIN и END DECLARE SECTION | Y | Y | Y | |
| Выражение DECLARE STATEMENT | P | Y | Y | LUW поддерживает это выражение только в хранимых процедурах SQL. |
| Выражение FREE LOCATOR | Y | Y | Y | |
| Выражение INCLUDE | Y | Y | Y | |
| Выражение LOCK TABLE | Y | Y | Y | |
| Выражение REFRESH TABLE | Y | Y | Y | |
| Выражение SET CURRENT DECFLOAT ROUNDING MODE | Y | Y | Y | |
| Выражение SET CURRENT DEGREE | P | Y | Y | |
| Выражение SET ENCRYPTION PASSWORD | Y | Y | Y | |
| Выражение SET PATH | Y | Y | Y | |
| Выражение SET SCHEMA | Y | Y | Y | |
| Выражение WHENEVER | Y | Y | Y |
Хост-языки
| Элемент языка | LUW | z/OS | i | Примечания |
|---|---|---|---|---|
| C или C++ | Y | Y | Y | |
| COBOL | Y | Y | Y | |
| FORTRAN | Y | Y | Y | |
| Java (SQLJ) | Y | Y | Y | |
| PL/I | Y | Y | Y | |
| REXX | Y | Y | Y |
Полнота данного списка не гарантируется. Функциональные возможности выбирались исходя из того, насколько часто клиенты проявляют к ним интерес. Подробная информация о дополнительных распространенных функциях приводится в справочниках по языку SQL для наших продуктов.
Данный список не является списком возможностей и функций ни для одного из наших продуктов DB2. Функциональность уже может быть реализована на одной платформе и быть в процессе разработки на других платформах DB2, поскольку мы постоянно реализуем новые функции. Из-за различий в требованиях клиентов и рыночных ниш не для всех платформ требуется одновременная реализация одинакового набора функциональных возможностей.
- Оригинал статьи Selected common SQL features for developers of portable DB2 applications (EN).
- Предыдущая версия этих таблиц (EN).
- Справочник по SQL для кросс-платформенной разработки (EN).