Структуризированный язык запросов (SQL)


Таблицы SQL - часть 2


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

SELECT Продукт, Белки, Жиры, Углев, ((Белки+Углев)*4.1+Жиры*9.3) FROM Продукты WHERE Продукт IN ('Морковь','Лук','Помидоры','Зелень');

и получить на экране следующий результат его реализации:

ПродуктБелкиЖирыУглев((Белки+Углев)*4.1+Жиры*9.3)

Морковь13.1.70.349.6

Лук17.0.95.459.2

Помидоры6.0.42.196.8

Зелень9.0.20.118.9

В последнем столбце этой рабочей таблицы приведены данные о калорийности продуктов, отсутствующие в явном виде в базовой таблице Продукты. Эти данные вычислены по хранимым значениям основных питательных веществ продуктов, помещены в рабочую таблицу и будут существовать до момента смены изображения на экране. Однако если необходимо сохранить эти данные в какой-либо базовой таблице, то существует предложение (INSERT), позволяющее переписать содержимое рабочей таблицы в указанные столбцы базовой таблицы (реляционная операция присваивания).

Часто пользователя не устраивает как способ описания нужного набора выводимых строк, так и результат выполнения запроса, сформированного из данных одной таблицы. Ему хотелось бы уточнить выводимые (запрашиваемые) данные сведениями из других таблиц.

Например, в запросе на получение состава овощных блюд

SELECT БЛ,ПР,Вес FROM Состав WHERE БЛ IN (1,3,17,23);

пришлось перечислять номера этих блюд, так как в таблице Состав нет данных об основных продуктах блюда (они есть в таблице Блюда). Полученный состав овощных блюд (рис.1.3,а) оказался "слепым": в нем и блюда и продукты представлены номерами, а не именами. Удобнее и нагляднее (рис.1.3,б)

а)б)

БЛПРВесБлюдо

111100Салат летний

11580Салат летний

1125Салат летний

1415Салат летний

31155Салат витаминный

31555Салат витаминный

3650Салат витаминный

31220Салат витаминный

31015Салат витаминный

3165Салат витаминный

179150Морковь с рисом

17750Морковь с рисом

171325Морковь с рисом




Начало  Назад  Вперед