Добавлен: 28.11.2018

Просмотров: 5433

Скачиваний: 10

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

71

Развитие

  

реляционного

  

подхода

  

привело

  

к

  

созданию

  

ре

-

ляционных

   

языков

.  

Например

,  

язык

    SQL,   

реализованный

   

в

  

большинстве

  

СУБД

.  

Он

  

включает

  

в

 

себя

,  

помимо

  

операций

  

реляционной

   

алгебры

,  

полный

   

набор

   

операторов

   

над

   

стро

-

ками

  -  «

включить

»,  «

удалить

»,  «

обновить

»,  

а

   

также

  

реали

-

зует

  

арифметические

  

операции

  

и

  

операции

  

сравнения

Упражнения

 

и

 

задачи

 

Для

 

реляционной

 

БД

построенной

 

в

 

предыдущем

 

упражне

-

нии

сформулируйте

 

задачи

которые

 

решаются

 

при

   

помощи

 

операций

 

реляционной

 

алгебры

.  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


background image

 

72

5.  

Запросы

  

к

  

БД

 

 
5.1. 

Простые

  

запросы

 

  

Простой

  

запрос

 -  

запрос

,  

который

  

обращается

  

только

  

к

  

одной

  

таблице

  

базы

  

данных

Ниже

  

приведены

  

примеры

  

про

-

стых

  

запросов

 

Работник

 

 

 

рабо

-  

Фамилия

     

Недельная

     

Спец

-

ть

       

 

Менеджер

 

 

тника

                           

зарплата

                       

1235         

И

Петров

            12.50          

электрик

            1311       

1412         

К

Иванов

            13.75          

штукатур

           1520 

2920         

Р

Смирнов

          10.00          

кровельщик

       2920  

1520         

Г

Сидоров

           11.75          

штукатур

           1412  

1311         

Х

Васильев

          15.50          

электрик

             1311  

 

Работа

 

 

 

рабо

-       

 

здания

       

Дата

_

начала

        

Число

_

дней

 

тника

 

1235                        312                      10.10                      5       
2920                        460                      05.10                      18         
1235                        435                      17.10                      22     
3231                        111                      10.10                      8          
1412                        435                      15.10                      15              
1311                        460                      23.10                      24 
 

Здание

 

 
 

 

здания

       

Адрес

                          

Тип

 

 312                   

ул

Вязов

, 123             

офис

  

 435                   

ул

Кленов

, 456           

склад

  

 515                   

ул

Березовая

, 12        

магазин

     

 210                   

ул

Нахимова

, 4           

склад

    

 

Рис

.  5.1.  

База

  

данных

  

строительной

  

компании

  «

Премьер

» 

 
 


background image

 

73

Запрос

:  

Вывести

  

фамилии

 

штукатуров

             SELECT  

Фамилия

 

             FROM     

Работник

 

             WHERE   

Специальность

 =  '

Штукатур

 

Результат

          

Фамилия

 

          

К

Иванов

 

          

Г

Сидоров

  

Этот

   

запрос

   

иллюстрирует

   

три

   

наиболее

   

часто

   

встре

-

чающиеся

  

фразы

  SQL:  SELECT,  FROM  

и

  WHERE.  

В

  

данном

  

примере

  

мы

  

поместили

  

их

  

на

  

разные

  

строки

,  

они

  

все

  

могут

  

стоять

  

в

  

одной

  

строке

.  

Они

  

также

  

могут

  

помещаться

  

с

  

раз

-

ными

   

отступами

,  

а

   

слова

   

внутри

   

фраз

   

могут

   

разделяться

  

произвольным

  

числом

  

пробелов

.  

Рассмотрим

  

характеристики

  

каждой

  

фразы

Select.  

Фраза

  SELECT  

перечисляет

   

столбцы

,  

которые

  

должны

  

войти

  

в

  

результирующую

  

таблицу

.  

В

  

данном

  

приме

-

ре

   

результирующая

   

таблица

   

состоит

   

из

   

одного

   

столбца

   

(

Фамилия

),  

но

   

в

   

общем

   

случае

   

она

   

может

   

содержать

   

не

-

сколько

  

столбцов

;  

она

  

также

  

может

  

содержать

  

вычисленные

  

значения

   

или

   

константы

.   

Если

   

результирующая

   

таблица

  

должна

   

содержать

   

более

   

одного

   

столбца

,  

то

   

все

   

нужные

  

столбцы

  

перечисляются

 

после

  

команды

  SELECT  

через

  

запя

-

тую

.  

Например

,  

фраза

    SELECT  

   

работника

,  

Фамилия

  

выдает

  

в

  

результате

  

таблицу

,  

состоящую

  

из

  

столбцов

    «

  

работника

»  

и

  «

Фамилия

». 

From.  

Фраза

  FROM  

задает

 

одну

  

или

  

более

  

таблиц

,  

к

  

ко

-

торым

  

обращается

  

запрос

.  

Все

  

столбцы

,  

перечисленные

  

во

  

фразах

    SELECT   

и

  WHERE,  

должны

   

существовать

   

в

   

одной

  

из

  

таблиц

,  

перечисленных

  

в

  

команде

  FROM.   

Where.  

Фраза

  WHERE   

содержит

   

условие

,  

на

   

основании

  

которого

   

выбираются

   

строки

   

таблицы

    (

таблиц

).  

В

   

данном

  

примере

   

условие

   

состоит

   

в

   

том

,  

что

   

столбец

   

Специаль

-

ность

   

должен

  

содержать

  

константу

  ‘

Штукатур

’,  

заключенную

  

в

  

апострофы

.  

Фраза

  WHERE  -  

наиболее

  

изменчивая

  

коман

-

да

    SQL;   

она

   

может

   

содержать

   

множество

   

разнообразных

  

условий

Приведенный

  

выше

  

запрос

  SQL  

обрабатывается

  

системой

  

в

   

следующем

   

порядке

:  FROM,  WHERE,  SELECT. 

В

 

данном

  

примере

   

из

   

каждой

   

такой

   

строки

   

выбирается

   

Фамилия

,   

и

  


background image

 

74

все

  

выбранные

  

значения

  

выводятся

  

в

  

качестве

  

результатов

  

запроса

   

Запрос

:  

Вывести

  

все

  

данные

  

о

  

зданиях

  

офисов

             SELECT  * 
             FROM     

Здание

 

             WHERE   

тип

 =  '

Склад

 

Результат

: 

   

Здание

 

 

 

здания

            

Адрес

                            

Тип

               

 435                  

ул

Кленов

 456               

склад

  

 210                    

ул

Нахимова

 4              

склад

  

 

Звездочка

 (*)  

в

  

команде

  SELECT  

означает

  «

строка

  

цели

-

ком

». 

 

Запрос

:  

Вывести

  

недельную

  

зарплату

  

каждого

  

электрика

       SELECT 

Фамилия

,'

Недельная

  

зарплата

  = ', 40* 

Недель

-

ная

  

зарплата

    

     FROM     

Работник

 

     WHERE   

Специальность

 = '

Электрик

'  

     ORDER  BY  

Фамилия

 

   

Результат

   

Фамилия

 

М

Петров

           

Недельная

  

зарплата

 = 500.00 

Х

Васильев

        

Недельная

  

зарплата

 = 620.00 

 

Этот

   

запрос

   

иллюстрирует

   

употребление

   

символьных

  

констант

 

и

  

вычислений

  

в

  

команде

  SELECT.  

Внутри

  

команды

  

SELECT  

можно

  

производить

  

вычисления

,  

в

  

которых

  

исполь

-

зуются

   

числовые

   

столбцы

   

и

   

числовые

   

константы

,  

а

   

также

  

стандартные

   

арифметические

   

операторы

 (+,-,*, /),  

сгруппиро

-

ванные

  

по

  

мере

  

необходимости

  

с

  

помощью

  

скобок

.  

Команда

  

ORDER BY  

сортирует

   

результат

   

запроса

 

в

   

возрастающем

  

алфавитно

-

числовом

   

порядке

   

по

   

указанному

 

столбцу

.  

Если

  

вы

   

хотите

   

упорядочить

   

результаты

   

по

   

убыванию

,  

то

   

к

   

ко

-

манде

  

нужно

  

добавить

  DESC.  

Фраза

  ORDER  BY  

может

  

сор

-


background image

 

75

тировать

   

результаты

   

по

   

нескольким

   

столбцам

,  

по

   

одним

 – 

в

  

порядке

  

возрастания

,  

по

  

другим

 – 

в

  

порядке

  

убывания

.  

Пер

-

вым

  

указывается

  

столбец

  

первичного

  

ключа

  

сортировки

 

Запрос

:  

Вывести

  

фамилии

  

работников

у

  

которых

  

почасо

-

вая

  

ставка

  

от

  10  

до

  12  

рублей

     SELECT  *     
     FROM     

Работник

 

     WHERE   

Недельная

  

зарплата

 > =  10  AND   

Недельная

  

зарплата

 < = 12  

       

Результат

 

 

рабо

-       

Фамилия

      

Недельная

          

Специальность

                         

     

тника

 

 

        

зарплата

   

  

      2920         

Р

Смирнов

         10.00                   

кровельщик

      

      520          

Г

Сидоров

           11.75                   

штукатур

    

 

Этот

   

запрос

   

иллюстрирует

   

некоторые

   

дополнительные

  

возможности

   

команды

  WHERE:  

операторы

   

сравнения

   

и

   

бу

-

леву

  

операцию

  AND (

И

).  

Для

  

сравнения

  

столбцов

  

с

  

другими

  

столбцами

   

или

   

с

   

константами

   

могут

   

использоваться

   

шесть

  

операторов

 

сравнения

  (=,<> (

не

 

равно

),<, >, <=, >=).  

Для

  

от

-

рицания

   

условий

   

могут

   

использоваться

   

булевы

   

операции

  

AND(

И

),  OR(

ИЛИ

),  NOT(

НЕТ

).  

Для

  

группировки

  

условий

  

могут

  

использоваться

  

скобки

Для

  

формулировки

  

этого

  

запроса

  

также

  

можно

  

было

  

ис

-

пользовать

  

оператор

  BETWEEN (

между

): 

    SELECT  *     
     FROM      

Работник

 

     WHERE   

Недельная

  

зарплата

  BETWEEN  10  AND  12 

 
BETWEEN  

может

   

использоваться

   

для

   

сравнения

   

некото

-

рой

  

величины

  

с

  

двумя

  

другими

  

величинами

,  

первая

  

из

  

ко

-

торых

   

меньше

   

второй

.  

Сравнимая

   

величина

   

может

   

быть

  

равна

   

каждой

   

из

   

данных

   

величин

   

или

   

любому

   

значению

  

между

  

ними