Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Глава 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

Источник: https://studfile.net/preview/16418473/