Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Банки и базы данных.doc
Скачиваний:
20
Добавлен:
25.09.2019
Размер:
656.9 Кб
Скачать

13.3.4. Проверка на соответствие шаблону (like)

Используется только для текстового типа данных.

Синтаксис:

<проверяемое значение> [NOT] LIKE <шаблон>

Данная проверка возвращает True (Истина), если проверяемое значение соответствует шаблону (похоже на шаблон).

В качестве проверяемого значения обычно выступает имя столбца таблицы, для которого установлен текстовый тип данных.

Шаблон представляет собой текстовое значение (заключенное в кавычки) с подстановочными символами «*» (звездочка) и/или «?» (вопросительный знак). Символ «*» в шаблоне заменяет любое количество (даже ноль) любых символов, а символ «?» заменяет один любой символ в конкретной позиции. Примеры шаблонов и соответствующие им текстовые значения приведены в таблице 13.1

Таблица 13.1 – Примеры шаблонов

Шаблон

Соответствующие текстовые строки

«*»

Любые (даже пустые) строки

«????»

Строки, состоящие из 4 любых символов

«*а*»

Строки, в которых есть символ «а»

«*я?»

Строки, в которых предпоследний символ «я»

Пример 13. Вывести номера телефонов оператора TELE2 с кодом 953.

SELECT NOMER

FROM NOMERA

WHERE NOMER LIKE “*(953)*”

13.3.5. Отслеживание отсутствия значений (null)

Как уже говорилось выше, если в некоторой ячейке таблицы значение отсутствует, то говорят, что значение в этой ячейке есть NULL.

Для того чтобы отследить такие ситуации, необходимо использовать конструкцию следующего вида:

<имя столбца> IS [NOT] NULL

Данная проверка возвращает True (Истина), если в указанном столбце значение отсутствует.

Пример 14. Вывести список групп контактов, для которых не указана мелодия.

SELECT ID, NAZV, MEL_ID

FROM GRUPPY

WHERE MEL_ID IS NULL

Примечание. Выражение вида <значение>=NULL не является синтаксической ошибкой, но всегда будет возвращать NULL (Неизвестно) и никогда True (Истина).

13.3.6. Составные условия отбора строк

На практике очень часто простого условия отбора бывает недостаточно. В таких случаях можно задать составное условие отбора, включающую в себя комбинацию простых условий, логических операций AND, OR, NOT и круглых скобок.

Операнды логических операций AND, OR, NOT следует заключать в круглые скобки.

Пример 15. Вывести список исходящих вызовов (код=2) длительностью более 50 секунд.

SELECT *

FROM VYZOVY

WHERE (TIP_ID=2) AND (DLIT>50)

Пример 16. Вывести список контактов, для которых указан лишь один из параметров: пол или возраст.

SELECT *

FROM KONTAKTY

WHERE ((POL_ID IS NULL) AND (VOZRAST IS NOT NULL)) OR

((POL_ID IS NOT NULL) AND (VOZRAST IS NULL))

13.4. Сортировка результатов запроса (предложение order by)

Предложение ORDER BY позволяет упорядочить строки в таблице результатов запроса в соответствии с указанными столбцами сортировки.

Синтаксис:

ORDER BY <столбец сортировки1> [ASC|DESC][, <столбец сортировки2> [ASC|DESC]] [,…]

Предложение ORDER BY может содержать несколько столбцов сортировки, разделенных запятыми. В качестве столбца сортировки может выступать имя столбца таблицы или порядковый номер (1,2, и т.д.) возвращаемого столбца (из предложения SELECT).

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

После каждого столбца сортировки можно задать одно из двух слов: ASC (по возрастанию) или DESC (по убыванию).

По умолчанию сортировка производится в порядке возрастания значений (для текстовых данных – в алфавитном порядке).

В случае сортировки по нескольким столбцам сортировка по каждому следующему столбцу не отменяет результаты сортировки по предыдущему.

Сначала сортировка производится по значениям первого столбца сортировки. Если в нескольких строках значения в этом столбце совпадают, то порядок следования строк определятся по второму столбцу (при его наличии). Если в нескольких строках совпадают значения в первых двух столбцах сортировки, то сортировка производится по третьему столбцу сортировки (при его наличии) и т.д.

Пример. Необходимо упорядочить список людей (фамилия, имя, отчество хранятся в отдельных столбцах). Сначала необходимо отсортировать по фамилии, затем в рамках каждой фамилии – по имени, затем в рамках каждой совокупности фамилии и имени – по отчеству).

Пример 17. Вывести список групп контактов в алфавитном порядке.

SELECT ID, NAZV, MEL_ID

FROM GRUPPY

ORDER BY NAZV

Пример 18. Вывести список входящих звонков в порядке убывания их длительности.

SELECT ID, TIP_ID, VREMYA, NOMER_ID, DLIT

FROM VYZOVY

WHERE TIP_ID=1

ORDER BY DLIT DESC

Пример 19. Вывести список исходящих звонков. Результаты отсортировать сначала в порядке убывания их тарифов, а затем – в хронологическом порядке.

SELECT TIP_ID, VREMYA, NOMER_ID, DLIT, STOIM, STOIM/DLIT*60

FROM VYZOVY

WHERE TIP_ID=2

ORDER BY 6 DESC, VREMYA ASC