Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
345
Добавлен:
02.04.2015
Размер:
493.06 Кб
Скачать

Запросы на выборку данных

Запросы на выборку данных используют оператор (инструкцию) SELECT, краткий синтаксис которого может быть описан так:

SELECT [предикат] { *  имя_таблицы.*  [имя_таблицы.]

имя_поля1 [ AS псевдоним1] [, [имя_таблицы.]

имя_поля2 [ AS псевдоним2] [, … ] ] }

FROM выражение [, … ] [IN имя_внешней_БД]

[ WHERE условие_отбора]

[ GROUP BY группируемые_поля ]

[ HAVING условие_группирования]

[ ORDER BY имя_поля1 [ASCDESC] [,имя_поля2

[ASCDESC] [, … ]] ;

Здесь вертикальная черта означает ИЛИ. То, что заключено в квадратные скобки, может отсутствовать. Из заключенного в фигурные скобки обязательно должна присутствовать одна из указанных альтернатив.

Предикат может принимать различные значения, в зависимости от задач, выполняемых выборкой:

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

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

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

  • TOP n – возвращаетn первых или последних записей из итоговой выборки в зависимости от того, какой порядок сортировки установлен с помощью предложенияORDER BY.

  • TOP n PERCENT – результатом выборки будет определенный процент первых или последних записей.

Пример 1. Однотабличный SQL - запрос на выборку данных

Выдать все сведения о деталях:

SELECT детали.*

FROM детали;

Здесь символ * обозначает, что динамический набор данных включает все поля таблицы Поставщики. Ключевое словоDISTINCTROW (устанавливается по умолчанию, поэтому в дальнейшем будет опускаться) означает исключение полностью повторяющихся записей из динамического набора данных.

Этот же запрос можно было написать так:

SELECT номерд, имяд, цена

FROM детали ;

или так:

SELECT *

FROM детали ;

Задания для самостоятельного выполнения

Задание 1. Вывести все сведения о поставщиках.

Задание 2. Вывести для всех поставщиков следующие сведения: номер поставщика, его имя, статус и город, в котором поставщик размещается.

Задание 3.Вывести без повторения города, в которых размещаются поставщики.

Задание 4.Вывести без повторения имена поставляемых деталей.

Задание псевдонимов для полей

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

Пример 2. Выдать все сведения о деталях, называя поленомердв ответе какномердетали,имяд– какимядетали.

SELECT номерд AS [номер детали], имяд AS [имя детали], цена

FROM детали ;

Здесь псевдонимы взяты в квадратные скобки, так как они содержат пробелы.

Создание в запросах вычисляемых полей и использование функций

В результате выборки можно выводить не только данные из полей таблицы, но и новые данные, получаемые в результате вычислений.

Пример 3.Пусть все детали подорожали на 10%. Вывести сведения о деталях, указав их прежнюю цену и новую цену.

SELECT номерд AS [номер детали], имяд AS [имя детали], цена

AS [прежняя цена], цена * 1.1 AS [новая цена]

FROM детали;

Пример 4.Вывести следующие сведения о деталях:

  • количество записей в таблице детали

  • среднюю и максимальную цену по всем деталям

SELECT Count ( * ) AS [Число деталей],

Avg ( цена ) AS [средняя цена],

Max ( цена ) AS [максимальная цена]

FROM детали;

Здесь функция Countиспользуется для подсчета количества всех записей (символ* в качестве аргумента ) в таблице детали.

Соседние файлы в папке Материалы для лабораторных Базы данных