Введение в язык SQL запросов к базам данных. Баканов В.М. - 31 стр.

UptoLike

Составители: 

- 31 -
DNAME JOB SUM(SAL) COUNT(*) АVG(SL)
RESEARCH ANALYST 6,000.00 2 3,000.00
RESEARCH CLERC 1,900.00 2 950.00
SALES SALESMAN 5,600.00 4 1,400.00
Условие поиска в клаузе HAVING исключает из результата запроса
группы, содержащих менее двух работников - COUNT(*)>=2.
Контрольные вопросы
1. Что такое групповые запросы к БД?
2. Каков формат SQL-запроса с клаузами GROUP BY и HAVING?
3. Напишите (на языке уровня Pascal или C) программы, функционально ана-
логичные вышеприведенным SQL-запросам (**) и (***).
2.11.Подзапросы
Одна
из причин, по которым SQL столь мощен и универсален, состоит в
том, что всегда можно построить сложные запросы из нескольких про-
стых. Клауза WHERE из одного запроса может содержать другой запрос,
который называется подзапросом. Можно использовать подзапросы для
динамического построения условий поиска для требуемого главного запроса.
Предположим, что нужно составить список
всех работников с такой же
работой как у работника JONES:
SELECT ENAME,JOB --- главный запрос
FROM EMP
WHERE JOB =
(SELECT JOB --- подзапрос
FROM EMP
WHERE ENAME = ‘JONES’);
ENAME JOB
JONES MАNАGER
BLAKE MАNАGER
CLARK MАNАGER
Исполняющая система обрабатывает подзапрос перед обработкой
главного запроса, поскольку его результат нужен для определения резуль-
тата главного запроса. Вторая команда SELECT в данном примере (а это
именно подзапрос) возвращает значение MANAGER, как легко убедиться,
если взглянуть на должность работника JONES в таблице EMP.
Исполняющая система использует это значение для динамического по-
                                      - 31 -



   DNAME         JOB       SUM(SAL)       COUNT(*)    АVG(SL)
RESEARCH     ANALYST     6,000.00            2     3,000.00
RESEARCH     CLERC       1,900.00            2     950.00
SALES        SALESMAN    5,600.00            4     1,400.00

    Условие поиска в клаузе HAVING исключает из результата      запроса
группы, содержащих менее двух работников - COUNT(*)>=2.

  Контрольные вопросы

1. Что такое групповые запросы к БД?
2. Каков формат SQL-запроса с клаузами GROUP BY и HAVING?
3. Напишите (на языке уровня Pascal или C) программы, функционально ана-
   логичные вышеприведенным SQL-запросам (**) и (***).

2.11.Подзапросы

     Одна из причин, по которым SQL столь мощен и универсален, состоит в
том, что всегда можно построить сложные запросы из       нескольких про-
стых. Клауза WHERE из одного запроса может содержать другой запрос,
который называется подзапросом. Можно использовать подзапросы для
динамического построения условий поиска для требуемого главного запроса.
     Предположим, что нужно составить список всех работников с такой же
работой как у работника JONES:

  SELECT ENAME,JOB --- главный запрос
  FROM EMP
  WHERE JOB =
          (SELECT JOB --- подзапрос
           FROM EMP
           WHERE ENAME = ‘JONES’);

  ENAME       JOB
  JONES    MАNАGER
  BLAKE    MАNАGER
  CLARK    MАNАGER

     Исполняющая система обрабатывает подзапрос перед обработкой
главного запроса, поскольку его результат нужен для определения резуль-
тата главного запроса. Вторая команда SELECT в данном примере (а это
именно подзапрос) возвращает значение MANAGER, как легко убедиться,
если взглянуть на должность работника JONES в таблице EMP.
     Исполняющая система использует это значение для динамического по-