Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Строки и выражения

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

СКАЛЯРНОЕ ВЫРАЖЕНИЕ С ПОМОЩЬЮ ВЫБРАННЫХ ПОЛЕЙ

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

SELECT snum, sname, city, comm * 100 FROM Salespeople;

Вывод из этого запроса показывается в Рисунке 7.1.

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

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

SQL Execution Log
SELECT snum, sname, city, comm * 100 FROM Salespeople;
snum sname city  
1001 Peel London 12.000000
1002 Serres San Jose 13.000000
1004 Motika London 11.000000
1007 Rifkin Barcelona 15.000000
1003 Axelrod New York 10.000000

Рисунок 7.1: Помещение выражения в вашем запросе

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

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

SELECT snum, sname, city, ' % ', comm * 100 FROM Salespeople;

SQL Execution Log
SELECT snum, sname, city, '%' comm * 100 FROM Salespeople;
snum sname city    
1001 Peel London % 12.000000
1002 Serres San Jose % 13.000000
1004 Motika London % 11.000000
1007 Rifkin Barcelona % 15.000000
1003 Axelrod New York % 10.000000

Рисунок 7.2: Вставка символов в ваш вывод

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

SELECT ' For ', odate, ', there are ', COUNT ( DISTINCT onum ), 'orders.' FROM Orders GROUP BY odate;

Грамматической некорректности вывода, на 5 Октября, невозможно избежать не создав запроса, еще более сложного чем этот. ( Вы будете должны использовать два запроса с UNION ) Как вы можете видеть, одиночный неизменный комментарий для каждой строки таблицы может быть очень полезен, но имеет ограничения. Иногда изящнее и полезнее, произвести один комментарий для всего вывода в целом, или производить свой собственный комментарии для каждой строки. Различные программы исполяьзующие SQL часто обеспечивают специальные средства типа генератора отчетов( например Report Writer), которые разработаны чтобы форматировать и совершенствовать вывод. Вложенный SQL может также эксплуатировать возможности того языка в который он вложен. SQL сам по себе интересен прежде всего при операциях с данными. Вывод, по существу, это информация, и программа исполяьзующая SQL может часто использовать эту информацию и помещать ее в более привлекательную форму. Это, однако, вне сферы самой SQL.