Читаем SQL за 24 часа полностью

[ UNION СПЕЦИФИКАЦИЯ_ЗАПРОСА ]

[ ORDER BY СТОЛБЕЦ1 [, СТОЛБЕЦ2 ]

[INTO TEMP TABLE [WITH NO LOG ]]

Как вы уже, наверное, заметили, синтаксис операторов по сути одинаков. Везде присутствуют ключевые слова SELECT, FROM, WHERE, GROUP BY, HAVING, UNION и ORDER BY. В каждом случае эти ключевые слова выполняют одни и те же задачи, но имеют различные опции в зависимости от реализации. Эти опции и называются усовершенствованиями.


Соответствие стандарту ANSI SQL

Производители стараются соответствовать стандарту ANSI SQL. но ни один из их продуктов не соответствует стандарту на 100%. Некоторые производители добавит к стандартным свои команды, и многие из этих команд и функций были приняты стандартом ANSI SQL. Для производителя соответствие стандарту выгодно по многим причинам. Например, в случае соответствия стандарту реализацию соответствующего производителя легко освоить, а создаваемый в рамках данной реализации программный код SQL будет легко переносим от одной реализации к другой. Переносимость, очевидно, оказывается важным фактором, когда приходится переводить базу данных из одной системы управления базами данных в другую. Какая причина может sacia-вить компанию потратить кучу денег на переход к реализации, которая не согласуется со стандартами? Компания не станет этого делать, если переход потребует внесения слишком больших изменений в программное обеспечение, а освоение языка новой реализации потребует слишком больших усилий. ПОЭТОМУ соответствие стандарту ANSI SQL в большинстве случаев проблемой не является.


Расширения 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


Transact-SQL является процедурным языком, позволяющим указать базе данных, как и где искать и обрабатывать данные. Стандартный SQL не является процедурным языком, поэтому при его использовании способы извлечения и обработки данных база данных выбирает сама. В Transact-SQL имеются, в частности, возможности объявлять локальные и глобальные переменные, курсоры, программно обрабатывать ошибки, создавать и сохранять триггеры и другие процедуры, использовать циклы, знаки подстановки, преобразовывать одни типы данных в другие, создавать итоговые отчеты.

Вот пример оператора Transact-SQL:

IF (SELECT AVG(COST) FROM PRODUCTSJTBL) > 50

BEGIN

PRINT "ПОНИЗИТЬ ВСЕ ЦЕНЫ НА 10 ПРОЦЕНТОВ."

END

ELSE

PRINT "ЦЕНЫ ПРИЕМЛЕМЫ."

END

Это очень простой оператор Transact-SQL. В результате его выполнения, ••'' •"*-"" если средняя стоимость товаров в таблице PRODUCTSJTBL оказывается выше 50, печатается текст "понизить ВСЕ ЦЕНЫ НА 10 ПРОЦЕНТОВ", а если средняя стоимость товаров не превышает 50, печатается текст "ЦЕНЫ ПРИЕМЛЕМЫ".

Обратите внимание на использование здесь оператора IF.. .ELSE для оценки условий, накладываемых на получаемые данные. Новой здесь является и команда PRINT. Эти дополнительные возможности не составят даже капли в море всех возможностей Transact-SQL.


PL/SQL

Перейти на страницу:

Похожие книги

Adobe InDesign CS3
Adobe InDesign CS3

Книга посвящена верстке и макетированию в программе Adobe InDesign CS3. Помимо того что в ней описываются возможности программы, рассматриваются также принципы и традиции верстки, приводятся примеры решения типичных задач. Все это позволит читателю не только овладеть богатым инструментарием программы, но и грамотно применять его.Материал книги разделен на логические части: теоретические сведения, инструментарий программы, решение задач, – а также рассчитан на два уровня подготовки читателей – начинающих и опытных пользователей, что выгодно отличает книгу от других изданий. Это позволит применять ее как новичкам для знакомства с программой, так и пользователям со стажем для пополнения своих знаний.

Владимир Гавриилович Завгородний , Владимир Завгородний

Программирование, программы, базы данных / Программное обеспечение / Книги по IT