Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БАЗЫ ДАННЫХ.doc
Скачиваний:
37
Добавлен:
21.05.2015
Размер:
456.19 Кб
Скачать

Лабораторная работа № 7. ОператорSelect

Цель работы: научиться использовать операторSELECTдля выборки данных из базы.

1. Выборка всех записей из одной таблицы

1.1.Запрос на выборку всей таблицы. В одной из предыдущих лабораторных работ такой запрос уже был сформирован средствамиAccess. Можно упростить вид запроса, если вместо запроса

SELECT Заказы.* FROM Заказы;

Написать запрос

SELECT * FROM Заказы

Язык SQLпозволяет опускать имя таблицы перед именем поля в тех случаях, когда в запросе используется одна таблица, или имя поля не повторяется в нескольких таблицах в многотабличном запросе.

Создание запросов на SQLвAccessначинается вызовом конструктора запросов. Для этого в окне базы данных нужно выбрать объект «Запросы», пункт меню «Создать» и в окне «Новый запрос» пункт «Конструктор». Далее выберите таблицу «Заказы» и перейдите в режимSQL. Переход в режимSQL: менюAccess ВидРежимSQL.

Для окончания формирования запроса вставьте в соответствующую позицию запроса символ «*». Затем выполните запрос.

1.2. Вывод избранных полей, замена имён полей псевдонимами, сортировка записей. Поля таблицы выводятся на экран дисплея в том порядке, в котором они перечислены в запросе. Имена полей при выводе результатов запроса часто неудобны для чтения. Их можно заменить в запросе псевдонимами, как показано в примере:

SELECT КодЗаказа AS Заказ, НазваниеПолучателя AS Получатель, АдресПолучателя AS Адрес, ДатаИсполнения AS Дата FROM Заказы ORDER BY НазваниеПолучателя ASC;

В примере КодЗаказа, НазваниеПолучателя, АдресПолучателя и ДатаИсполнения– имена полей в таблице «Заказы». При выводе результатов запроса на экран дисплея имена полей будут заменены соответствующими псевдонимами, указанными после словаAS.

Предложение

ORDER BY НазваниеПолучателя ASC

служит для сортировки отобранных записей по возрастанию (т.е. в алфавитном порядке) значения поля НазваниеПолучателя. Если нужно сортировать по убыванию, то вместо ASCнужно использоватьDESC(сокращение отdescending).

Сформируйте и выполните этот запрос.

1.3. Вывод записей без дублирования. Сформируйте и выполните следующий запрос

SELECT НазваниеПолучателя AS Получатель FROM Заказы ORDER BY НазваниеПолучателя DESC.

Названия получателей многократно повторяются, так как выбраны все записи таблицы. Чтобы не было дублирования записей, добавьте в запрос после слова SELECTсловоDISTINCT. Иногда в СУБД режимDISTINCTустановлен по умолчанию. Для вывода всех записей в этом случае после словаSELECTвставляется словоALL.

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

1.4.1. Умножение. Сформируйте запрос на вывод из таблицы «Заказано» кода товара, цены, количества и общей стоимости заказанного товара. Запрос выглядит так:

SELECT КодТовара,Цена,Количество,Цена*Количество AS Стоимость FROM Заказано;

Самостоятельно дополните запрос стоимостью со скидкой.

1.4.2 Использование функций. Функция STR() преобразования в текстовый тип.

Выведем на экран дисплея стоимость товара в тысячах рублей с указанием единицы измерения. Для этого сформируем следующий запрос:

SELECT КодТовара,str(Цена*Количество/1000)+' тыс. руб' AS Стоимость FROM Заказано;

Для того чтобы в колонке «Стоимость» печатались число и текст, нужно преобразовать число в текстовый тип и объединить с текстом ' тыс. руб.'. Для преобразования служит функция str(<величина числового типа>)и операция слияния «+» (конкатенация).

Сформируйте запрос, в котором из таблицы «Заказы» выбираются 5 полей и результат выводится в две колонки. В первую колонку выводится поле «КодЗаказа», а в колонке с псевдонимом «Адрес клиента» объединены следующие поля:

ИндексПолучателя, СтранаПолучателя, ГородПолучателя, НазваниеПолучателя.

Не забудьте поставить между объединяемыми полями адреса запятую с пробелом. Результат запроса (показаны две первые строки) должен иметь вид:

Код заказа

Адрес клиента

10248

90110, Финляндия, Оулу, Wartian Herkku

10249

44087, Германия, Мюнстер, Toms Spezialitaten

1.4.3.Функция DATEPART() выделения части даты. Познакомьтесь с описанием этой функции в справкеAccess(Содержание, раздел «Справочник по языкуVisualBasic», пункт «Functions», букваD).

Определите с помощью запроса к таблице «Заказы», за какие годы были поставки товаров.

1.4.4. Агрегатные функции. (ВAccessони называются статистическими). Подсчитаем общее количество записей в таблице «Заказы» и количество записей содержащих данные в поле «ОбластьПолучателя», то есть, количество записей с непустым полем «ОбластьПолучателя». Для этого выполним следующий запрос:

SELECT count(*),count(ОбластьПолучателя) FROM Заказы;

В запросе используется агрегатная функция COUNT(). Используя агрегатные функцииMAX(),MIN() иAVG(), составьте запрос для подсчёта максимальной минимальной и средней цены товара в таблице «Товары».

Используя агрегатную функцию SUM(), составьте запрос для подсчёта общей стоимости доставки всех заказанных товаров в таблице «Заказы».

Сохраните все созданные Вами запросы и покажите их преподавателю.