Скачиваний:
60
Добавлен:
01.04.2014
Размер:
627.71 Кб
Скачать

8.3. Обработка данных: операции выборки

Теперь перейдем к операторам SQL языка обработки данных (data manipulation language— DML). Основные операторы DML— это select, insert, update и delete. Вначале рассматриваются операции выборки (select), а далее — операции обновле­ния (insert, update, delete). Для простоты будем предполагать, что все операторы вво­дятся интерактивно; отдельные соображения, касающиеся встроенных в прикладные программы выражений SQL, приведены ниже в этой главе.

Операция выборки в SQL — это, по существу, табличное выражение, которое мо­жет быть сколь угодно сложным. Не углубляясь в детали, просто приведем несколько примеров в надежде, что они послужат иллюстрацией наиболее важных моментов.

(Чтобы облегчить сравнение с реляционной алгеброй и реляционным исчислением, мы также дадим ссылки на аналогичные примеры в главах 6 и 7.) Более полная и более формальная трактовка табличных выражений приведена ниже в этой главе.

8.3.1. Получить цвета и города для деталей "не из Парижа" с весом, большим десяти

SELECT P.COLOR, P.CITY

FROM P

WHERE P.CITY <> 'Paris'

AND P.WEIGHT>10;

Прежде всего, обратите внимание на использование в этом примере символа <> (не равно). Обычные скалярные операторы сравнения записываются в SQL так: =, <>, <, >, <= и >=.

Затем (что еще важнее) обратите внимание, что для используемых нами пример­ных данных (эти значения приводились ранее в книге) этот запрос будет возвращать четыре строки, а не две, несмотря на то, что три из этих четырех строк идентичны и имеют вид (Red, London). Язык SQL не удаляет лишних дублирующих строк из ре­зультата оператора select, пока пользователь явно не потребует этого с помощью ключевого слова DISTINCT, как показано ниже:

SELECT DISTINCT P.COLOR, P.CITY

FROM Р

WHERE P.CITY <> "Paris'

AND P.WEIGHT > 10 ;

Этот запрос будет возвращать только две строки.

Между прочим, в этом примере можно было прекрасно обойтись и без уточните­лей "р.". Согласно общему правилу относительно уточнения имени в SQL неуточ­ненные имена допускаются, если они не вызывают неоднозначности. Однако в наших примерах будут использоваться все уточнители, даже если они формально излишни. (К сожалению, в определенных контекстах явно требуется, чтобы имена столбцов были неуточнены! Например, это требуется в инструкции order by— см. ниже.)

И, наконец, заметьте, что последовательность строк в данной результирующей таблице в общем непредсказуема, пока пользователь не задаст некоторую определен­ную последовательность, как в этом примере:

SELECT DISTINCT P.COLOR, P.CITY

FROM Р

WHERE P.CITY <> 'Paris'

AND P.WEIGHT > 10

ORDER BY CITY DESC ;

В общем виде инструкция order by записывается так:

ORDER BY order-item-comma list

Здесь список commalist не должен быть пустым и каждый элемент order-item должен содержать неуточненное имя столбца, за которым (не обязательно) следуют ключе­вые слова asc или desc (которые означают возрастающий или убывающий порядок со­ответственно); по умолчанию принимается asc.

8.3.2. Для всех деталей получить номер детали и ее вес в граммах

SELECT P.P#, P.WEIGHT * 454 AS gmwt

FROM Р ;

Спецификация as gmwt вводит соответствующее имя результирующего столбца. Таким образом, два столбца результирующей таблицы будут называться Р# и GMWT соот­ветственно. Если бы спецификация as gmwt была опущена, то соответствующий стол­бец был бы фактически безымянным. Обратите внимание, что хотя SQL на самом де­ле не требует от пользователя задавать имя результирующего столбца в таких случаях, но мы будем так делать в наших примерах всегда.

Соседние файлы в папке Дейтл Введ в БД