Реферат: Организация Web-доступа к базам данных с использованием SQL-запросов
Выдать сведения о блюдах на основе яиц, крупы и овощей
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 |
|||
Естественно, что для выявления продуктов, существующих в кладовой, следует дать запрос
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. |
При включении в список ORDER BY нескольких столбцов СУБД сортирует строки результата по значениям первого столбца списка пока не появится несколько строк с одинаковыми значениями данных в этом столбце. Такие строки сортируются по значениям следующего столбца из списка ORDER BY и т.д.
Например, выдать содержимое таблицы Блюда, отсортировав ее строки по видам блюд и основе:
Результат: |
||||||||||||
SELECT * FROM Блюда ORDER BY В Основа; |
БЛ |
Блюдо |
В |
Основа |
Выход |
Труд |
|
|||||
21 | Пудинг рисовый | Г | Крупа | 160. | 6 |
|
||||||
20 | Каша рисовая | Г | Крупа | 210. | 4 |
|
||||||
18 | Сырники | Г | Молоко | 220. | 4 |
|
||||||
. . . |
|
|||||||||||
16 | Драчена | Г | Яйца | 180. | 4 |
|
||||||
28 | Крем творожный | Д | Молоко | 160. | 4 |
|
||||||
. . . |
|
|||||||||||
26 | Яблоки печеные | Д | Фрукты | 160. | 3 |
|
||||||
7 | Сметана | З | Молоко | 140. | 1 |
|
||||||
8 | Творог | З | Молоко | 140. | 2 |
|
||||||
2 | Салат мясной | З | Мясо | 200. | 4 |
|
||||||
6 | Мясо с гарниром | З | Мясо | 250. | 3 |
|
||||||
1 | Салат летний | З | Овощи | 200. | 3 |
|
||||||
. . . |
|
|||||||||||
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24