Создание запросов в СУБД AccessРефераты >> Программирование и компьютеры >> Создание запросов в СУБД Access
2.3.4. Использование LIKE
Выдать перечень салатов
Результат: | ||
SELECT БлюдоFROM БлюдаWHERE Блюдо LIKE 'Салат%'; | ||
Блюдо | ||
Салат летний | ||
Салат мясной | ||
Салат витаминный | ||
Салат рыбный |
Обычная форма "имя_столбца LIKE текстовая_константа" для столбца текстового типа позволяет отыскать все значения указанного столбца, соответствующие образцу, заданному "текстовой_константой". Символы этой константы интерпретируются следующим образом:
- символ _ (подчеркивание) – заменяет любой одиночный символ,
- символ % (процент) – заменяет любую последовательность из N символов (где N может быть нулем),
- все другие символы означают просто сами себя.
Следовательно, в приведенном примере SELECT будет осуществлять выборку записей из таблицы Блюда, для которых значение в столбце Блюдо начинается сочетанием 'Салат' и содержит любую последовательность из нуля или более символов, следующих за сочетанием 'Салат'. Если бы среди блюд были "Луковый салат", "Фруктовый салат" и т.п., то они не были бы найдены. Для их отыскания надо изменить фразу WHERE: WHERE Блюдо LIKE '%салат%'
или при отсутствии различий между малыми и большими буквами (такую настройку допускают некоторые СУБД): WHERE Блюдо LIKE '%Салат%'
Это позволит отыскать все салаты.
2.3.5. Вовлечение неопределенного значения (NULL-значения)
Как было рассказано в п.2.2.3, если при загрузке данных не введено значение в какое-либо поле таблицы, то СУБД поместит в него NULL-значение. Аналогичное значение можно ввести в поле таблицы, выполняя операцию изменения данных. Так, при отсутствии сведений о наличии у поставщиков судака и моркови в столбцы Цена и К_во соответствующих строк таблицы Поставки вводится NULL и там будет храниться код NULL-значения, а не 0, 0. или пробел. (Отметим, что в распечатке таблицы Поставки рис.1.1 в этих местах расположен пробел, установленный в СУБД для представления NULL-значения при выводе на печать).
В этом случае для выявления названий продуктов, отсутствующих в кладовой, шеф-повар может дать запрос
Результат: |
ПР | |
SELECT DISTINCT ПРFROM Наличие WHERE К_во IS NULL; |
2 9 |
Естественно, что для выявления продуктов, существующих в кладовой, следует дать запрос SELECT DISTINCT ПРFROM НаличиеWHERE К_во IS NOT NULL;
Использование условий столбец IS NULL и столбец IS NOT NULL
вместо, например, столбец = NULL и столбец <> NULL
связано с тем, что ничто - и даже само NULL-значение - не считается равным другому NULL-значению. (Несмотря на это, два неопределенных значения рассматриваются, однако, как дубликаты друг друга при исключении дубликатов, и предложение SELECT DISTINCT даст в результате не более одного NULL-значения.)
2.4. Выборка с упорядочением
Синтаксис фразы упорядочения был дан в п. 2.1. Простейший вариант этой фразы - упорядочение строк результата по значению одного из столбцов с указанием порядка сортировки или без такого указания. (По умолчанию строки будут сортироваться в порядке возрастания значений в указанном столбце.)
Например, выдать перечень продуктов и содержание в них основных веществ в порядке убывания содержания белка
Результат: | |||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||
При включении в список ORDER BY нескольких столбцов СУБД сортирует строки результата по значениям первого столбца списка пока не появится несколько строк с одинаковыми значениями данных в этом столбце. Такие строки сортируются по значениям следующего столбца из списка ORDER BY и т.д.
Например, выдать содержимое таблицы Блюда, отсортировав ее строки по видам блюд и основе:
Результат: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||