Глава 3. Использование SQL для выборки данных из таблиц
Рис. 3. 7. SELECT с числовым полем в предикате
Ип~оги
Мы выяснили, что существует несколько способов получения представленной в таблице информации в том виде, который вас интересует. Например, можно перестав лять или исключать столбцы таблицы, а также сохранять или исключать повторяю
щиеся строки.
И, наконец, наиболее важно то, что можно задать предикат, который определяет, вклю
чается ли некоторая строка из множества строк в состав результирующих данных. Преди
каты являются очень полезным инструментом, открывающим широкие возможности
управления строками, которые должны войти в результат запроса. Именно это свойство предикатов и делает запросы SQL столь мощными. В следующих нескольких главах мы рассмотрим характерные черты и возможности предикатов. Глава 4 посвящена операто
рам сравнения, отличным от равенства, которые можно использовать в условиях предика
та, и способам комбинирования множества условий в единственный предикат.
26
Работаем на SQL
l.Запишите команду SELECT, которая выводит порядковый номер (ordernumber), количество (amount) и дату (date) для всех строк таблицы Order.
2.Запишите запрос, который выдает все строки таблицы Customers, где продавец
имеет номер l 001.
3.Запишите запрос, который выдает строки таблицы salesperson в таком порядке:
city, sname, snum, comm.
4.Запишите команду SELECT, которая выдает rating и следом за ним name каждого покупателя (customer), проживающего в San Jose.
5.Запишите запрос, позволяющий получить значения столбца snum для всех про давцов (salespeople), номера (orders) которых находятся в настоящее время в таб лице Orders, причем повторения требуется исключить.
(Ответы представлены в прило:жении А.)
27
Использование
реляционных
и булевых операторов
для создания более
слоJ1Сных предикатов
Глава 4. Использованиереляционных и булевых операторов
Из главы 3 выяснилось, что предикаты могут приписывать предложениям с ра
венством значения "истина" или "ложь", а также оценивать операторы сравнения от личные от равенства. В этой главе рассмотрены и другие операторы сравнения, применяемые в SQL, и показано, как можно использовать булевы операторы для из менения и комбинирования значений предиката. В булевом выражении единственный предикат может содержать любое количество условий, что позволяет получить очень мощные предикаты. Здесь также объясняется применение круглых скобок для струк
турирования сложных предикатов.
Реляционные операторы
Реляционный оператор - это математический символ, который задает определен ный тип сравнения между двумя значениями. Уже известно как применяются равенст ва, такие как 2 + 3 = 5 или city = 'London'. Однако существуют и другие операторы сравнения. Предположим, необходимо вычислить продавцов (Salespeople), комисси онные (commissioпs) которых превышают заданное значение. В этом случае следует воспользоваться сравнением типа "больше или равно". SQL распознает следующие
операторы сравнения:
Равно
>Больше, чем
<Меньше, чем
>= Больше и.1и равно
<= Меньше или равно
<> Неравно
Эти операторы имеют стандартное значение для числовых величин. Их определе ние для символьных значений зависит от используемого формата представления (ASCII или EBCDIC). SQL сравнивает символьные значения в терминах соответст вующих чисел, определенных в формате преобразования. Символьные значения, представляющие числа, например, 'l', необязательно равны тому числу, которое они
представляют.
Операторы сравнения можно применять для того, чтобы представить алфавитный порядок; например, 'а' < 'п' означает, что 'а' предшествует 'п' в алфавитном порядке, но эта процедура ограничена параметрами формата преобразования. Как в ASCII, так и в EBCDIC, сохранен алфавитный порядок предшествования символов, представленных в одном и том же регистре. В ASCII все заглавные символы меньше, чем все строчные, значит 'Z' <'а', а все цифры меньше, чем все символы, значит 'l' < 'Z'. В EBCDIC все наоборот. Для простоты рассмотрения, предположим, что используется формат ASCII. Если точно неизвестно, с каким форматом идет работа или как работает формат, то следует обратиться к документации.
30
Реляционные операторы
Значения, которые здесь сравниваются, называются скалярными зиачеиия.11и. Ска лярные значения получаются из скалярных выражений: 1 + 2 является скалярным вы ражением, которое дает скалярное значение 3. Скалярные значения могут быть символами или числами, хотя только числа используются с арифметическими опера торами, такими как + или *. Предикаты обычно сравнивают скалярные значения, ис пользуя операторы сравнения или специальные SQL-операторы, для того, чтобы проверить является ли результат сравнения истинным. Некоторые SQL-операторы рассмотрены в главе 5.
Предположим, необходимо увидеть всех покупателей (Customeгs) с рейтингом (rating) более 200. Поскольку 200 - это скалярное значение, как и все значения столб ца rating, для их сравнения можно использовать оператор отношения:
SELECT •
FROM Customers
WHERE rating > 200;
Выходные данные для этого запроса представлены на рис. 4.1.
При необходимости увидеть всех покупателей, рейтинг (гating) которых больше или равен 200, следовало бы использовать предикат:
rating >= 200
Рис. 4.1. Использование "больше, чем" (>}
31