Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БАЗЫ_ДАННЫХ.doc
Скачиваний:
3
Добавлен:
12.07.2019
Размер:
466.94 Кб
Скачать
  • WITH задает временно именованный результирующий набор, который используется для организации рекурсивного запроса.

  • SELECT определяет столбцы, возвращаемые запросом.

  • DISTINCT указывает на то, что только уникальные строки могут появляться в результирующем наборе.

  • ALL указывает на то, что в результирующем наборе могут появляться дублирующиеся строки. ALL применяется по умолчанию.

  • TOP указывает на то, что только заданное число или процент строк будет возвращен из результирующего набора.

  • * указывает на то, что все столбцы из всех таблиц в предложении FROM должны быть возвращены.

  • Into создает новую таблицу и вставляет в нее строки результата выполнения запроса.

  • FROM указывает таблицы или табличные выражения, которые используются в операторе SELECT.

  • WHERE определяет условия поиска строк, возвращаемых запросом.

  • GROUP BY задает группы, в которые должны быть помещены строки вывода.

  • HAVING определяет условие поиска для группы.

  • ORDER BY указывает порядок сортировки для столбцов, возвращаемых оператором SELECT.

Из перечисленных предложений оператора SELECT наиболее часто используются SELECT, FROM и WHERE. Если исключить все опции предложения SELECT, то получается такая простая конструкция:

SELECT { * | список_выбора }

FROM список_табличных_источников

WHERE условие_поиска

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

  1. Получить имена поставщиков, которые поставляют деталь под номером 2.

SELECT DISTINCT S.Sname

FROM S

WHERE EXISTS ( SELECT *

FROM SP

WHERE SP.Sno = S.Sno AND SP.Pno = 2)

  1. Получить имена поставщиков, которые поставляют, по крайней мере, одну красную деталь.

SELECT DISTINCT S.Sname

FROM S

WHERE S.Sno IN ( SELECT SP.Sno

FROM SP

WHERE SP.Pno IN ( SELECT P.Pno

FROM P

WHERE P.Color = 'Красный'))

  1. Получить имена поставщиков, которые поставляют все типы деталей.

SELECT DISTINCT S.Sname

FROM S

WHERE NOT EXISTS (SELECT *

FROM P

WHERE NOT EXISTS (SELECT *

FROM SP

WHERE SP.Sno = S.Sno AND SP.Pno = P.Pno))

  1. Получить номера поставщиков, поставляющих, по крайней мере, все те детали, которые поставляет поставщик под номером 2.

  1. Получить все пары номеров поставщиков, размещенных в одном городе

SELECT A.Sno AS SA, B.Sno AS SB

FROM S AS A, S AS B

WHERE A.City = B.City AND A.Sno < B.Sno

  1. Получить имена поставщиков, которые не поставляют деталь под номером 2.

SELECT DISTINCT S.Sname

FROM S

WHERE NOT EXISTS (SELECT *

FROM SP

WHERE SP.Sno = S.Sno AND SP.Pno = 2)

18