Реферат: Организация Web-доступа к базам данных с использованием SQL-запросов
Рисунок 2.3
Фраза SELECT может включать не только выражения, но и отдельные числовые или текстовые константы. Следует отметить, что текстовые константы должны заключаться в апострофы ('). На рис. 2.3,б приведен результат запроса:
SELECT Продукт, 'Калорий =', ((Белки+Углев)*4.1+Жиры *9.3)
FROM Продукты;
А что произойдет, если какой-либо член выражения не определен, т.е. имеет значение NULL и каким образом появилось такое значение?
Если при загрузке строк таблицы в какой-либо из вводимых строк отсутствует значение для какого-либо столбца, то СУБД введет в такое поле NULL-значение. NULL-значение «придумано» для того, чтобы представить единым образом «неизвестные значения» для любых типов данных. Действительно, так как при вводе данных в столбец или их изменении СУБД запрещает ввод значений не соответствующих описанию данных этого столбца, то, например, нельзя использовать пробел для отсутствующего значения числа. Нельзя для этих целей использовать и ноль: нет месяца или дня недели равного нулю, да и для чисел ноль не может рассматриваться как неизвестное значение в одном месте и как известное – в другом. При выводе же NULL-значения на экран или печатающее устройство его код воспроизводится каким-либо специально заданным символом или набором символов: например, пробелом (если его нельзя перепутать с текстовым значением пробела) или сочетанием –0-.
С помощью специальной команды можно установить в СУБД один из режимов представления NULL-значений при выполнении числовых расчетов: запрет или разрешение замены NULL-значения нулем. В первом случае любое арифметическое выражение, содержащее неопределенный операнд, будет также иметь неопределенное значение. Во втором случае результат вычислений будет иметь численное значение (если это значение попадает в диапазон представления соответствующего типа данных).
Например, при выполнении запроса
SELECT ПР, Цена, К_во, (Цена * К_во)
FROM Поставки;
и разных «настройках» СУБД могут быть получены разные результаты:
ПР |
Цена |
К_во |
(Цена*К_во) |
ПР |
Цена |
К_во |
(Цена*К_во) |
9 | -0- | -0- | -0- | 9 | -0- | -0- | 0. |
11 | 1.5 | 50 | 75. | 11 | 1.5 | 50 | 75. |
12 | 3. | 10 | 30. | 12 | 3. | 10 | 30. |
15 | 2. | 170 | 340. | 15 | 2. | 170 | 340. |
Использование BETWEEN
С помощью BETWEEN … AND … (находится в интервале от … до …) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.
Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:
Результат: |
|||
SELECT Продукт, Белки FROM Продукты WHERE Белки BETWEEN 10 AND 50; |
|||
Продукт |
Белки |
||
Майонез | 31. | ||
Сметана | 26. | ||
Молоко | 28. | ||
Морковь | 13. | ||
Лук | 17. | ||
Можно задать и NOT BETWEEN (не принадлежит диапазону между), например:
Результат: |
|
|||
SELECT Продукт, Белки, Жиры FROM Продукты WHERE Белки NOT BETWEEN 10 AND 50 AND Жиры 100; |
|
|||
Продукт |
Белки |
Жиры |
||
Говядина | 189. | 124. | ||
Масло | 60. | 825. | ||
Яйца | 127. | 115. | ||
BETWEEN особенно удобен при работе с данными, задаваемыми интервалами, начало и конец которых расположен в разных столбцах.
Для примера воспользуемся таблицей «минимальных окладов» (табл. 2.4), величина которых непосредственно связана со студенческой стипендией. В этой таблице для текущего значения минимального оклада установлена запредельная дата окончания 9 сентября 9999 года.
Миноклад |
Начало |
Конец |
2250 | 01-01-1993 | 31-03-1993 |
4275 | 01-04-1993 | 30-06-1993 |
7740 | 01-07-1993 | 30-11-1993 |
14620 | 01-12-1993 | 30-06-1994 |
20500 | 01-07-1994 | 09-09-9999 |
Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос
SELECT Начало, Миноклад
FROM Миноклады
WHERE Начало BETWEEN '1-9-1993' AND '31-8-1994'
и получить результат:
Начало |
Миноклад |
01-12-1993 | 14620 |
01-07-1994 | 20500 |
Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 31 значение 8, а затем 1994.
Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос
SELECT *
FROM Миноклады
WHERE Начало BETWEEN '1-9-1993' AND '31-8-1994'
OR Конец BETWEEN '1-9-1993' AND '31-8-1994'
Миноклад |
Начало |
Конец |
7740 | 01/07/1993 | 30/11/1993 |
14620 | 01/12/1993 | 30/06/1994 |
20500 | 01/07/1994 | 09/09/9999 |
Наконец, для получения минимального оклада на 15-5-1994:
Результат: |
||
SELECT Миноклад FROM Миноклады WHERE '15-05-1994' BETWEEN Начало AND Конец |
Миноклад |
|
14620 |
Использование IN
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24