[ UNION СПЕЦИФИКАЦИЯ_ЗАПРОСА ]
[ ORDER BY СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]
[INTO TEMP TABLE [WITH NO LOG ]]
Как вы уже, наверное, заметили, синтаксис операторов по сути одинаков. Везде присутствуют ключевые слова SELECT, FROM, WHERE, GROUP BY, HAVING, UNION и ORDER BY. В каждом случае эти ключевые слова выполняют одни и те же задачи, но имеют различные опции в зависимости от реализации. Эти опции и называются
Производители стараются соответствовать стандарту ANSI SQL. но ни один из их продуктов не соответствует стандарту на 100%. Некоторые производители добавит к стандартным свои команды, и многие из этих команд и функций были приняты стандартом ANSI SQL. Для производителя соответствие стандарту выгодно по многим причинам. Например, в случае соответствия стандарту реализацию соответствующего производителя легко освоить, а создаваемый в рамках данной реализации программный код SQL будет легко переносим от одной реализации к другой. Переносимость, очевидно, оказывается важным фактором, когда приходится переводить базу данных из одной системы управления базами данных в другую. Какая причина может sacia-вить компанию потратить кучу денег на переход к реализации, которая не согласуется со стандартами? Компания не станет этого делать, если переход потребует внесения слишком больших изменений в программное обеспечение, а освоение языка новой реализации потребует слишком больших усилий. ПОЭТОМУ соответствие стандарту ANSI SQL в большинстве случаев проблемой не является.
Практически все известные производители имеют свои расширения SQL Каждое расширение SQL по-своему уникально и, вообще говоря, не предполагает переносимости от одной реализации к другой. Однако самые популярные расширения отмечаются стандартом ANSI, а иногда со временем становятся частью нового стандарта.
Примерами расширений стандартного SQL являются PL/SQL, используемый продуктами Oracle, и Transact-SQL, используемый Sybase и Microsoft SQL Server. Оба эги расширения обсуждаются достаточно подробно в примерах следующих разделов.
И PL/SQL, и Transact-SQL считаются языками программирования четвертого поколения. Оба, в отличие от стандартного SQL, являются процедурно-ориентированными языками. Кроме них, мы рассмотрим также другую реализацию SQL, называемую MySQL, которую можно найти в Internet.
Непроцедурный язык SQL включает следующие операторы.
• INSERT
• UPDATE
• DELETE
• SELECT
• COMMIT
• ROLLBACK
Любое расширение SQL, являющееся процедурным языком, должно включать все операторы, команды и функции стандартного SQL. Кроме того, такое расширение включает операторы следующего вида.
• Объявления переменных
• Объявления курсоров
• Условные операторы
• Циклы
• Обработчики ошибок
• Различные приращения
• Преобразования данных
• Знаки подстановки
• Триггеры
• Сохраненные процедуры
Эти операторы в рамках процедурного языка дают пользователю более широкие возможности для управления данными.
Стандартный SQL по своей сути является
Transact-SQL является процедурным языком, позволяющим указать базе данных, как и где искать и обрабатывать данные. Стандартный SQL не является процедурным языком, поэтому при его использовании способы извлечения и обработки данных база данных выбирает сама. В Transact-SQL имеются, в частности, возможности объявлять локальные и глобальные переменные, курсоры, программно обрабатывать ошибки, создавать и сохранять триггеры и другие процедуры, использовать циклы, знаки подстановки, преобразовывать одни типы данных в другие, создавать итоговые отчеты.
Вот пример оператора Transact-SQL:
IF (SELECT AVG(COST) FROM PRODUCTSJTBL) > 50
BEGIN
PRINT "ПОНИЗИТЬ ВСЕ ЦЕНЫ НА 10 ПРОЦЕНТОВ."
END
ELSE
PRINT "ЦЕНЫ ПРИЕМЛЕМЫ."
END
Это очень простой оператор Transact-SQL. В результате его выполнения, ••''
Обратите внимание на использование здесь оператора IF.. .ELSE для оценки условий, накладываемых на получаемые данные. Новой здесь является и команда PRINT. Эти дополнительные возможности не составят даже капли в море всех возможностей Transact-SQL.