Базы данных. Учебное пособие

       

Простые запросы


 

Простой  запрос -  запрос,  который  обращается  только  к  одной  таблице  базы  данных. Ниже  приведены  примеры  простых  запросов.

Работник

 

№ рабо-  Фамилия     Недельная     Спец-ть       № Менеджер

 тника                           зарплата                      

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.  База  данных  строительной  компании  «Премьер»

Запрос:  Вывести  фамилии штукатуров?

             SELECT  Фамилия

             FROM     Работник

             WHERE   Специальность =  'Штукатур'

 

Результат:

          Фамилия

          К. Иванов

          Г. Сидоров

Этот  запрос  иллюстрирует  три  наиболее  часто  встречающиеся  фразы  SQL:  SELECT,  FROM  и  WHERE.  В  данном  примере  мы  поместили  их  на  разные  строки,  они  все  могут  стоять  в  одной  строке.  Они  также  могут  помещаться  с  разными  отступами,  а  слова  внутри  фраз  могут  разделяться  произвольным  числом  пробелов.  Рассмотрим  характеристики  каждой  фразы:


Select.  Фраза  SELECT  перечисляет  столбцы,  которые  должны  войти  в  результирующую  таблицу.  В  данном  примере  результирующая  таблица  состоит  из  одного  столбца   (Фамилия),  но  в  общем  случае  она  может  содержать  несколько  столбцов;  она  также  может  содержать  вычисленные  значения  или  константы.   Если  результирующая  таблица  должна  содержать  более  одного  столбца,  то  все  нужные  столбцы  перечисляются после  команды  SELECT  через  запятую.  Например,  фраза  SELECT  №  работника,  Фамилия  выдает  в  результате  таблицу,  состоящую  из  столбцов    «№  работника»  и  «Фамилия».

From.  Фраза  FROM  задает одну  или  более  таблиц,  к  которым  обращается  запрос.  Все  столбцы,  перечисленные  во  фразах  SELECT  и  WHERE,  должны  существовать  в  одной  из  таблиц,  перечисленных  в  команде  FROM. 

Where.  Фраза  WHERE  содержит  условие,  на  основании  которого  выбираются  строки  таблицы  (таблиц).  В  данном  примере  условие  состоит  в  том,  что  столбец  Специальность   должен  содержать  константу  ‘Штукатур’,  заключенную  в  апострофы.  Фраза  WHERE  -  наиболее  изменчивая  команда  SQL;  она  может  содержать  множество  разнообразных  условий.

Приведенный  выше  запрос  SQL  обрабатывается  системой  в  следующем  порядке:  FROM,  WHERE,  SELECT. В данном  примере  из  каждой  такой  строки  выбирается  Фамилия,  и  все  выбранные  значения  выводятся  в  качестве  результатов  запроса.

 

Запрос:  Вывести  все  данные  о  зданиях  офисов.

             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  может  сортировать  результаты  по  нескольким  столбцам,  по  одним – в  порядке  возрастания,  по  другим – в  порядке  убывания.  Первым  указывается  столбец  первичного  ключа  сортировки.

Запрос:  Вывести  фамилии  работников, у  которых  почасовая  ставка  от  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  может  использоваться  для  сравнения  некоторой  величины  с  двумя  другими  величинами,  первая  из  которых  меньше  второй.  Сравнимая  величина  может  быть  равна  каждой  из  данных  величин  или  любому  значению  между  ними.

Запрос:  Вывести  фамилии  штукатуров,  кровельщиков.

     SELECT  *   

     FROM      Работник

     WHERE   Специальность  IN  ('штукатур',  'кровельщик')

     

Результат:

   № рабо-     Фамилия           Недельная          Специальность

      тника                                      зарплата                     

      1412             К. Иванов            13.75                  штукатур   

      2920             Р. Смирнов          10.00                 кровельщик    

      1520             Г. Сидоров          11.75                  штукатур

Этот  запрос  поясняет  использование  оператора  сравнения  IN  (В).  Условие  WHERE  считается  истинным,  если  тип  специальности  строки  расположен  внутри  множества,  указанного  в  скобках, то  есть  если  тип  специальности – штукатур,  кровельщик

Предположим,  что  мы  не  можем  точно  вспомнить  написание  специальности:  «электрик»  или  «электронщик»  или  еще  как-то.  Символы  шаблона,  которые  замещают  неопределенные  строки  символов,  облегчают  поиск  неточного  написания  в  запросе.

Запрос:  Вывести  фамилии  работников,  чей  тип  специальности  начинается  с  «элек».

     SELECT  *   

     FROM     Работник

     WHERE   Специальность  LIKE  ('элек%')

     

Результат:

 № рабо-       Фамилия       Недельная          Специальность

тника                                       зарплата                     

     1235           И. Петров            12.50                   электрик   

     1311           Х. Васильев         15.50                   электрик 

В  SQL  есть  два  символа  шаблона:  % (процент)  и  _  (подчеркивание).  Подчеркивание  замещает  ровно  один  неопределенный  символ.  Процент  замещает  произвольное  число  символов,  начиная с  нуля.  Когда  используются  символы  шаблона,  для  сравнения  символьных  переменных  с  константами  требуется  оператор  LIKE  (как).  


Содержание раздела