Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

SQL Server инструкция SELECT (продолжение 1)

FOR XML

Используется для извлечения результирующего набора в виде документа XML только в клиент SQL Server 2000. Далее вы должны определить результирующий XML-документ как RAW, AUTO или EXPLICIT. Предложение RAW преобразует каждую полученную запись во внутренний элемент XML с тегом . При указании предложения AUTO результаты преобразуются в простое вложенное дерево XML. При указании предложения EXPLICIT дерево XML преобразуется в явно определенную форму. Однако запрос должен быть написан таким образом, чтобы необходимая информация о вложенности была указана явно. При желании вы можете использовать еще несколько управляющих опций.

XMLDATA

Возвращается схема, прикрепленная к документу XML. Предложение ELEMENTS возвращает столбцы в виде подэлементов, а не соответствующие им атрибуты XML.

BINARY BASE64

Возвращаются двоичные данные, закодированные в формат base64. (Двоичный формат установлен по умолчанию для режима A UTO, но его нужно специально указать для режимов RAW и EXPLICIT) Предложение FOR XML нельзя использовать в любых подзапросах, нельзя применять совместно с предложением COMPUTE и BROWSE, в определениях представлений, в результирующем наборе пользовательской функции или в курсоре. Предложение FOR XML AUTO и агрегаты, а также предложения GROUP Выявляются взаимоисключающими.

OPTION ( [, …])

Элементы плана обработки запроса, заданные по умолчанию, заменяются указанными элементами. Поскольку оптимизатор обычно подбирает самый лучший план обработки запроса, мы не рекомендуем помещать в запросы подсказки оптимизатору.

Ниже приводится пример инструкции SELECT … INTO в SQL Server. В этом примере с помощью SELECT … INTO создается таблица non_mgr_employees. Таблица содержит идентификатор (emp_id), имя (fname) и фамилию (lname) всех сотрудников, которые не являются менеджерами. Эти данные берутся из таблицы employee и соединяются с описанием их должности, взятым из таблицы jobs.

Предложение SELECT…INTO следует использовать только при разработке базы или в нерабочей базе, поскольку эта операция не регистрируется в журнале и не может быть отменена.

Многие из расширений, которые добавляет платформа SQL Server к стандарту ANSI, касаются предложения GROUP BY. Например, предложение GROUP BY ALL заставляет включить в агрегаты пустые значения, которые в противном случае не были бы включены. Следующие два запроса, по сути, являются одинаковыми, за исключением ключевого словак!!, но они создают разные результирующие наборы.

В предложении COMPUTE существует несколько изменений, которые могут повлиять на результирующий набор запроса. В следующем примере показана сумма цен книг (price), разделенных по типам книг и отсортированных по типу, а потом по цене.

Если вы не укажете ключевое слово BY, то предложение COMPUTE будет работать по-другому. Следующий запрос получает общую сумму по ценам и авансам за книги, стоимость которых превышает 16$.

Вы даже можете использовать COMPUTE BY и COMPUTE в одном запросе, вычисляя промежуточные и общие итоги. (Для краткости мы покажем пример запроса, но не будем приводить результирующий набор.) В этом примере мы найдем сумму цен и авансов по типам книг (бизнес и психология), для которых цена превышает 16$.

SELECT
type,
price,
advance
FROM titles
WHERE price>16 AND type IN (‘business’, ‘psychology’)
ORDER BY type, price COMPUTE SUM(price), SUM(advance) BY type COMPUTE SUM(price), SUM(advance)

Не забывайте, что при наличии предложения COMPUTE BY вы должны также указать предложение ORDER BY (Если используется предложение COMPUTE, без ключевого слова BY, то нет необходимости указывать предложение ORDER BY.) В одном запросе вы можете использовать множество комбинаций — несколько предложений COMPUTE и COMPUTE BY, предложение GROUP BY с предложением COMPUTE BY, и даже с предложением ORDER BY. Забавно будет попробовать различные способы создания запросов с предложениями COMPUTE и COMPUTE BY. Это, конечно, не развлечение, но что вы хотите? Это же программистская книга!

Платформа SQL Server также включает предложение FOR XML, которое преобразует стандартный результирующий набор в документ XML. Это очень полезная возможность для баз данных в WEB. Вы можете посылать запросы с предложением FOR XML прямо к базе данных или из хранимой процедуры. Например, мы можем получить результат одного из наших приведенных ранее примеров запросов в виде документа XML.

SELECT
type,
price,
advance
FROM titles
WHERE price>16 AND type IN (‘business’, ‘psychology’)
ORDER BY type, price FOR XML AUTO

Если вы хотите, чтобы схема XML и/или элементы XML были представлены в виде тегов на выходе, вы можете просто добавить к предложению FOR XML ключевые слова XMLDATA и ELEMENTS. Такой запрос будет выглядеть следующим образом.

SELECT
type,
price,
advance
FROM titles
WHERE price>16 AND type IN (‘business’, ‘psychology’)
ORDER BY type, price FOR XML AUTO, XMLDATA, ELEMENTS

В SQL Server также реализованы еще несколько дополнительных возможностей для поддержки XML. Например, функцию для работы с наборами строк OPENXML можно использовать для того, чтобы вставить документ XML в таблицу SQL Server. Также SQL Server включает системные хранимые процедуры, которые помогают подготавливать документы XML и манипулировать ими.

Источник