RSS    

   Реферат: Организация 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
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.

При включении в список 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


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.