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


Выборка вычисляемых значений


Из синтаксиса фразы SELECT (п.2.1) видно, что в ней может содержаться не только перечень столбцов таблицы или символ *, но и выражения.

Например, если нужно получить значение калорийности всех продуктов, то можно учесть, что при окислении 1 г углеводов или белков в организме освобождается в среднем 4.1 ккал, а при окислении 1 г жиров - 9.3 ккал, и выдать запрос:

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

результат которого приведен на рис. 2.2,а.

а)б)в)

Продукт

Говядина1928.1 Судак1523. Масло8287.5 Майонез6464.7 Яйца1618.9 Сметана3011.4 Молоко605.1 Творог1575. Морковь349.6 Лук459.2 Помидоры196.8 Зелень118.9 Рис3512.1 Мука3556.7 Яблоки479.7 Сахар4091.8 Кофе892.4

Продукт

ГовядинаКалорий =1928.1

СудакКалорий =1523.

МаслоКалорий =8287.5

МайонезКалорий =6464.7

ЯйцаКалорий =1618.9

СметанаКалорий =3011.4

МолокоКалорий =605.1

ТворогКалорий =1575.

МорковьКалорий =349.6

Лук Калорий =459.2

ПомидорыКалорий =196.8

ЗеленьКалорий =118.9

Рис Калорий =3512.1

МукаКалорий =3556.7

ЯблокиКалорий =479.7

СахарКалорий =4091.8

КофеКалорий =892.4

Продукт

Зелень118.9

Помидоры196.8 Морковь349.6 Лук459.2 Яблоки479.7 Молоко605.1 Кофе892.4 Судак1523.

Творог1575.

Яйца1618.9 Говядина 1928.1 Сметана3011.4 Рис3512.1 Мука3556.7 Сахар4091.8 Майонез6464.7 Масло8287.5

Рис. 2.2. Примеры запросов с вычисляемыми полями

Фраза SELECT может включать не только выражения, но и отдельные числовые или текстовые константы. Следует отметить, что текстовые константы должны заключаться в апострофы ('). На рис. 2.2,б приведен результат запроса:

SELECT Продукт, 'Калорий =', ((Белки+Углев)*4.1+Жиры *9.3) FROM Продукты;

А что произойдет, если какой-либо член выражения не определен, т.е. имеет значение NULL и каким образом появилось такое значение?

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




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



Книжный магазин