Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД - лаб.раб 9-10 (запросы).doc
Скачиваний:
0
Добавлен:
27.08.2019
Размер:
75.26 Кб
Скачать

6

Факультет СПО СПбГУ ИТМО

Специальность 230105

Дисциплина: Базы данных

Лабораторная работа № 9-10

Тема: «Запросы к базе данных»

Цель: Овладеть практическими навыками проектирования и создания SQL-запросов с использованием средств VFP 9.0.

Оборудование: Компьютерный класс

Практическое задание

  1. Создать однотабличные и многотабличные запросы к базе данных с использованием конструктора запросов (согласно индивидуальному заданию).

  2. При формировании запросов использовать вычисляемые поля, упорядочение данных в запросе, переименование столбцов запроса, фильтрацию данных, группирование данных (при необходимости).

  3. Изучить структуру команд SELECT для созданных запросов через View SQL (редактор запроса).

  4. Осуществить перенаправление результатов запроса на экран, в таблицу, в виде диаграммы.

Технология выполнения работы

I. Создание однотабличного запроса:

1. Создать новый запрос в составе проекта (Команда NewNew Query (Новый запрос)).

2. Выбрать таблицу, данные из которой будут использоваться в запросе (Add Table or Vier (Добавить таблицу или представление данных)).

3. Завершив выбор таблицы, нажать Close.

4. Сформировать условия запроса:

  • выбрать поля результирующей таблицы запроса (вкладка Fields (Поля) конструктора запроса);

  • сформировать вычисляемые поля (вкладка Fields конструктора запроса, поле Functions and expression);

  • указать критерии для выборки данных (вкладка Filter (Фильтр) конструктора запроса);

  • указать критерии для группировки данных (вкладка Order By (Упорядочение) конструктора запроса);

  • указать критерии для группировки данных (вкладка Group By (Группировка) конструктора запроса);

  • задать, куда выводить результат запроса.

5. Сохранить запрос.

6. Запустить запрос на выполнение одним из способов:

  • опция Run (Запустить) (стандартная панель инструментов);

  • команда Run Query (Запустить запрос) из контекстного меню запроса;

  • команда Run Query (Запустить запрос) из меню Query;

  • <Ctrl> + <Q>.

II. Создание многотабличного запроса:

При создании многотабличного запроса в окно конструктора запросов добавляются все участвующие в выборке таблицы и определяются условия их объединения. Если между этими таблицами в базе данных установлены постоянные отношения, то в окне конструктора запросов эта связь будет отображаться в виде линии, соединяющей таблицы, а на вкладке Join (Объединение) появится запись, содержащая условие объединения. В отличие от постоянных отношений, определяемых между таблицами в базе данных, при объединении таблиц в конструкторе запросов можно использовать любые поля таблиц.

Для установления связи можно использовать механизм «перенести-и-оставить»: выбрать поле одной из таблиц и мышью перенести это поле на связываемое поле в другой таблице, а затем в окне Join Condition (Условие объединения) отредактировать установленное условие объединения.

Если таблица, добавляемая в конструктор запросов, не имеет установленных связей в базе данных с уже размещенными таблицами, то в окне Join Condition (Условие объединения) необходимо задать условие объединения двух таблиц. При задании условия объединения необходимо задать тип объединения: Inner Join (Внутреннее объединение), Left Join (Объединение слева), Right Join (Объединение справа), Full Join (Полное объединение).

III. Группировка полей запроса

  1. Группировка полей запроса (фраза GROUP BY) позволяет получить информацию о подгруппах таблицы. Например, сгруппировав по коду заказа данные в таблице, содержащей сведения о заказах, можно получить сведения об итоговой сумме по каждому заказу.

  2. Фраза HAVING Используется для групп, созданных фразой Group By, и играет ту же роль, что и фраза Where для записей. Например:

SELECT cCountry FROM Customer GROUP BY cCountry HAVING COUNT(*)>10

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

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

SELECT icdGoods from Goods WHERE nUnitPrice >;

(SELECT 0.9 * MAX (nUnitPrice) FROM Goods)