Введение в стандарты языка баз данных SQL

       

Вводный SQL


В этом разделе мы перечисляем некоторые дополнительные свойства полного SQL, которые отсутствуют во вводном SQL в дополнение к тем, которых нет в промежуточном SQL:

  • идентификаторы длиннее, чем из 18 символов;
  • малые буквы в идентификаторах;
  • оператор SETSESSIONAUTHORIZATION;
  • символьные строки переменного размера;
  • определяемые в реализации наборы символов, включая строки национальных символов;
  • все конструкции, связанные с datetime и interval;
  • все, что связано с доменами;
  • явные именованные ограничения;
  • константы CURRENT_USER, SESSION_USER, SYSTEM_USER (однако USER поддерживается);
  • CHARACTER_LENGHT, OCTET_LENGHT;
  • функции SUBSTRING, TRIM, EXTRACT;
  • операция конкатенации символьных строк;
  • выражения с переключателем;
  • оператор явного преобразования типов (CAST);
  • раздел DEFAULT в операторах INSERT и UPDATE;
  • явный оператор JOIN;
  • операции EXCEPT и INTERSECT;
  • элементы выборки в форме "R.*";
  • условие UNIQUE;
  • оператор DROPSCHEMA;
  • оператор DROPTABLE;
  • задание действия ONDELETE в определениях внешнего ключа;
  • оператор ALTERTABLE;
  • оператор DROPVIEW;
  • оператор REVOKE;
  • оператор SETTRANSACTION;
  • динамический SQL;
  • прокручиваемые курсоры;
  • раздел FORUPDATE в определении курсора;
  • преобразования между точными и приблизительными численными значениями при присваивании;
  • информационная схема;
  • оператор GETDIAGNOSTICS.

Вот список дополнительных ограничений:

  • конструктор строки должен включать в точности один компонент, за исключением специального случая, когда конструктор строки является компонентом конструктора таблицы (в этом случае он должен быть единственным таким компонентом), и случая, когда конструктор строки используется для определения источника в операторе INSERT;
  • табличное выражение в круглых скобках не может включать UNION;
  • если в разделе FROM выражения выборки присутствует ссылка на представление, определение которого включает разделы GROUPBY или HAVING, то

(а) в этом разделе FROM не должны упоминаться другие таблицы;

(b) это выражение выборки не должно включать разделы WHERE, GROUPBY и HAVING;


(c) раздел SELECT этого выражения выборки не должен включать ссылок на какие-либо агрегатные функции;

  • одиночный оператор SELECT не может включать разделы GROUPBY и ORDERBY и не может ссылаться на представление, в определении которого использованы разделы GROUPBY и ORDERBY;
  • если какое-либо значение в условии сравнения представляет собой выражение выборки в круглых скобках, это выражение выборки не может содержать разделы GROUPBY и HAVING и не должно ссылаться на представление, в определении которого использованы разделы GROUPBY и ORDERBY;
  • для UNION типы данных соответствующих столбцов должны быть в точности одними и теми же (и NOTNULL должно прилагаться ко всем или ни к кому);
  • в условии LIKE первый операнд должен быть ссылкой на столбец, и "pattern" и "escape" должны быть литералами, параметрами или переменными основной программы;
  • в проверке на неопределенное значение операнд должен быть ссылкой на столбец;
  • оператор CREATESCHEMA должен включать раздел AUTHIRIZATION и не должен включать имени схемы;
  • определение модуля должно включать раздел AUTHIRIZATION и не должен включать раздела SCHEMA;
  • каждый столбец, упомянутый в определении возможного ключа, должен быть явно определен как NOTNULL;
  • ключевое слово TABLE не должно появляться в операторе GRANT;
  • операторы COMMIT и ROLLBACK должны включать паразитное слово WORK.



  • Содержание раздела