Организация Web-доступа к базам данных с использованием SQL-запросовРефераты >> Программирование и компьютеры >> Организация Web-доступа к базам данных с использованием SQL-запросов
Использование IN
Выдать сведения о блюдах на основе яиц, крупы и овощей
SELECT *
FROM Блюда
WHERE Основа IN (Яйца Крупа Овощи);
Результат:
БЛ |
Блюдо |
В |
Основа |
Выход |
Труд |
1 |
Салат летний |
З |
Овощи |
200. |
3 |
3 |
Салат витаминный |
З |
Овощи |
200. |
4 |
16 |
Драчена |
Г |
Яйца |
180. |
4 |
17 |
Морковь с рисом |
Г |
Овощи |
260. |
3 |
19 |
Омлет с луком |
Г |
Яйца |
200. |
5 |
20 |
Каша рисовая |
Г |
Крупа |
210. |
4 |
21 |
Пудинг рисовый |
Г |
Крупа |
160. |
6 |
23 |
Помидоры с луком |
Г |
Овощи |
260. |
4 |
Рассмотренная форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно такому:
SELECT *
FROM Блюда
WHERE Основа=Яйца OR Основа=Крупа OR Основа=Овощи;
Использование LIKE
Выдать перечень салатов
Результат: | ||
SELECT Блюдо FROM Блюда WHERE Блюдо LIKE 'Салат%'; |
Блюдо | |
Салат летний | ||
Салат мясной | ||
Салат витаминный | ||
Салат рыбный |
Обычная форма «имя_столбца LIKE текстовая_константа» для столбца текстового типа позволяет отыскать все значения указанного столбца, соответствующие образцу, заданному «текстовой_константой». Символы этой константы интерпретируются следующим образом:
· символ _ (подчеркивание) – заменяет любой одиночный символ,
· символ % (процент) – заменяет любую последовательность из N символов (где N может быть нулем),
· все другие символы означают просто сами себя.
Следовательно, в приведенном примере SELECT будет осуществлять выборку записей из таблицы Блюда, для которых значение в столбце Блюдо начинается сочетанием 'Салат' и содержит любую последовательность из нуля или более символов, следующих за сочетанием 'Салат'. Если бы среди блюд были «Луковый салат», «Фруктовый салат» и т.п., то они не были бы найдены. Для их отыскания надо изменить фразу WHERE:
WHERE Блюдо LIKE '%салат%'
или при отсутствии различий между малыми и большими буквами (такую настройку допускают некоторые СУБД):
WHERE Блюдо LIKE '%Салат%'
Это позволит отыскать все салаты.
Вовлечение неопределенного значения (NULL-значения)
Если при загрузке данных не введено значение в какое-либо поле таблицы, то СУБД поместит в него NULL-значение. Аналогичное значение можно ввести в поле таблицы, выполняя операцию изменения данных. Так, при отсутствии сведений о наличии у поставщиков судака и моркови в столбцы Цена и К_во соответствующих строк таблицы Поставки вводится NULL и там будет храниться код NULL-значения, а не 0, 0. Или пробел. (Отметим, что в распечатке таблицы Поставки в этих местах расположен пробел, установленный в СУБД для представления 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-значения.)
Выборка с упорядочением
Простейший вариант этой фразы – упорядочение строк результата по значению одного из столбцов с указанием порядка сортировки или без такого указания. (По умолчанию строки будут сортироваться в порядке возрастания значений в указанном столбце.)
Например, выдать перечень продуктов и содержание в них основных веществ в порядке убывания содержания белка
SELECT Продукт, Белки, Жиры, Углев FROM Продукты ORDER BY Белки DESC; |
Продукт |
Белки |
Жиры |
Углев |
Судак |
190. |
80. |
0. | |
Говядина |
189. |
124. |
0. | |
Творог |
167. |
90. |
13. | |
Яйца |
127. |
115. |
7. | |
Кофе |
127. |
36. |
9. | |
Мука |
106. |
13. |
732. |