Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Организация Web-доступа к базам данных с использованием SQL-запросов

е  совсем  удачный
перечень основных продуктов:  из  него  не  были  исключены  дубликаты.  Для
исключения  дубликатов  и  одновременного  упорядочения  перечня  необходимо
дополнить  запрос  ключевым  словом  DISTINCT  (различный,  различные),  как
показано в следующем примере:

SELECT DISTINCT Основа
FROM  Блюда;
Результат приведен на рис. 2.2,в.
                        Выборка вычисляемых значений
      Из синтаксиса фразы SELECT видно,  что  в  ней  может  содержаться  не
только перечень столбцов таблицы или символ *, но и выражения.
      Например, если нужно получить значение калорийности всех продуктов, то
можно учесть, что при  окислении  1  г  углеводов  или  белков  в  организме
освобождается в среднем 4.1 ккал, а при окислении 1 г жиров –  9.3  ккал,  и
выдать запрос:

SELECT      Продукт, ((Белки+Углев)*4.1+Жиры*9.3)
FROM  Продукты;
результат которого приведен на рис. 2.3,а.
|а)        |      |Б)           |          |  |в)               |
|Продукт |        |Продукт |        |        |Продукт |        |
|Говядина|1928.1  |Говядина|Калорий |1928.1  |Зелень  |118.9   |
|        |        |        |=       |        |        |        |
|Судак   |1523.   |Судак   |Калорий |1523.   |Помидоры|196.8   |
|        |        |        |=       |        |        |        |
|Масло   |8287.5  |Масло   |Калорий |8287.5  |Морковь |349.6   |
|        |        |        |=       |        |        |        |
|Майонез |6464.7  |Майонез |Калорий |6464.7  |Лук     |459.2   |
|        |        |        |=       |        |        |        |
|Яйца    |1618.9  |Яйца    |Калорий |1618.9  |Яблоки  |479.7   |
|        |        |        |=       |        |        |        |
|Сметана |3011.4  |Сметана |Калорий |3011.4  |Молоко  |605.1   |
|        |        |        |=       |        |        |        |
|Молоко  |605.1   |Молоко  |Калорий |605.1   |Кофе    |892.4   |
|        |        |        |=       |        |        |        |
|Творог  |1575.   |Творог  |Калорий |1575.   |Судак   |1523.   |
|        |        |        |=       |        |        |        |
|Морковь |349.6   |Морковь |Калорий |349.6   |Творог  |1575.   |
|        |        |        |=       |        |        |        |
|Лук     |459.2   |Лук     |Калорий |459.2   |Яйца    |1618.9  |
|        |        |        |=       |        |        |        |
|Помидоры|196.8   |Помидоры|Калорий |196.8   |Говядина|1928.1  |
|        |        |        |=       |        |        |        |
|Зелень  |118.9   |Зелень  |Калорий |118.9   |Сметана |3011.4  |
|        |        |        |=       |        |        |        |
|Рис     |3512.1  |Рис     |Калорий |3512.1  |Рис     |3512.1  |
|        |        |        |=       |        |        |        |
|Мука    |3556.7  |Мука    |Калорий |3556.7  |Мука    |3556.7  |
|        |        |        |=       |        |        |        |
|Яблоки  |479.7   |Яблоки  |Калорий |479.7   |Сахар   |4091.8  |
|        |        |        |=       |        |        |        |
|Сахар   |4091.8  |Сахар   |Калорий |4091.8  |Майонез |6464.7  |
|        |        |        |=       |        |        |        |
|Кофе    |892.4   |Кофе    |Калорий |892.4   |Масло   |8287.5  |
|        |        |        |=       |        |        |        |


                                 Рисунок 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         |


                                 Рисунок 2.4

      Если, например,  потребовалось  узнать,  какие  изменения  минимальных
окладов производились в 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                       |


               
Пред.678910След.
скачать работу

Организация Web-доступа к базам данных с использованием SQL-запросов

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ