Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lect4.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
173.06 Кб
Скачать

Формирование выводов запросов

Большинство основанных на SQL баз данных предоставляют специальные средства, позволяющие совершенствовать вывод запросов.

=========== СТРОКИ И ВЫРАЖЕНИЯ ============

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

SELECT snum, sname, city, comm * 100

FROM Salespeople;

============СТОЛБЦЫ ВЫВОДА====================

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

=======ПОМЕЩЕНИЕ ТЕКСТА В ВАШЕМ ВЫВОДЕ ЗАПРОСА=======

Вы можете вставлять константы в предложение SELECT запроса, включая и текст. Однако символьные константы, в отличие от числовых констант, не могут использоваться в выражениях. Вы можете иметь выражение 1 + 2 в вашем предложении SELECT, но вы не можете использовать выражение типа 'A' + 'B'; это приемлемо, только если мы имеем в виду что 'A' и 'B' это просто буквы, а не переменные и не символы. Тем ни менее, можно вставлять текст в вывод запросов. Вы можете усовершенствовать предыдущий пример, представив комиссионные как проценты со знаком процента(%). Это даст вам возможность помещать в вывод такие единицы, как символы и комментарии:

SELECT snum, sname, city, ' % ', comm * 100

FROM Salespeople;

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

SELECT ' For ', odate, ', there are ',

COUNT ( DISTINCT onum ), 'orders.'

FROM Orders

GROUP BY odate;

Как вы можете видеть, одиночный неизменный комментарий для каждой строки таблицы может быть очень полезен, но имеет ограничения. Иногда изящнее и полезнее, произвести один комментарий для всего вывода в целом, или производить свой собственный комментарии для каждой строки. Различные программы, использующие SQL, часто обеспечивают специальные средства типа генератора отчетов, которые разработаны, чтобы форматировать и совершенствовать вывод.

======= УПОРЯДОЧЕНИЕ ВЫВОДА ПОЛЕЙ ========

Как мы подчеркивали, таблицы - это неупорядоченные наборы данных, и данные, которые выходят из них, не обязательно появляются в какой-то определенной последовательности. SQL использует команду ORDER BY, чтобы упорядочивать вывод. Эта команда упорядочивает вывод запроса согласно значениям в том или ином количестве выбранных столбцов. Многочисленные столбцы упорядочиваются один внутри другого, также как с GROUP BY, и вы можете определять возрастание (ASC) или убывание (DESC) для каждого столбца. По умолчанию установлено - возрастание. Давайте рассмотрим таблицу заказа, приводимую в порядок с помощью номера:

SELECT *

FROM Orders

ORDER BY cnum DESC;

УПОРЯДОЧЕНИЕ С ПОМОЩЬЮ МНОГОЧИСЛЕНЫХ СТОЛБЦОВ

Мы можем также упорядочивать таблицу с помощью другого столбца, например, с помощью поля amt внутри упорядочения поля cnum:

SELECT *

FROM Orders

ORDER BY cnum DESC, amt DESC;

Вы можете использовать ORDER BY таким же способом сразу с любым числом столбцов. Обратите внимание что, во всех случаях, столбцы, которые упорядочиваются, должны быть указаны в выборе SELECT.

УПОРЯДОЧЕНИЕ АГРЕГАТНЫХ ГРУПП

ORDER BY может, кроме того, использоваться с GROUP BY для упорядочения групп. Если это так, то ORDER BY всегда должен стоять после ORDER BY. Перед группированием вывода, порядок групп был произвольным; а теперь заставим группы размещаться в последовательности:

SELECT snum, odate, MAX (amt)

FROM Orders

GROUP BY snum, odate

ORDER BY snum;

Так как мы не указывали на возрастание или убывание заказа, возрастание используется по умолчанию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]