Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП 01. Базы данных. Часть 2 — копия.doc
Скачиваний:
33
Добавлен:
09.12.2018
Размер:
637.44 Кб
Скачать

Задание на практическую работу № 5:

  1. Создать отчет для вывода информации из связанных таблиц.

  2. Использовать компоненты QRExpr для отображения статистических данных (число записей в отчете, среднее значение или сумма по одному из полей и т.п.).

  3. Выполнить группирование данных в отчете.

1.6. Практическая работа № 6: sql-запросы (компонент Query)

SQL — язык структурированных запросов — предназначен для создания и работы с реляционными базами данных. Он значительно сокращает объем работ, который пришлось бы выполнять при использовании универсальных языков программирования. Команды SQL могут оперировать с таблицами БД как с едиными объектами и обрабатывать любое количество извлеченной или производной информации как один блок.

Для выполнения данной лабораторной работы необходимо знание основ SQL (стандарт SQL92). Очень доступно и в то же время достаточно глубоко язык SQL представлен в [4].

В технологии BDE для работы с языком SQL предназначен компонент Query. Этот компонент представляет собой набор данных, который содержит результат выполнения SQL-запроса к таблицам БД. Первоначальная настройка компонента производится следующим образом:

  • установите свойство DatabaseName (выберите алиас вашей БД);

  • для того чтобы во время разработки приложения проверить работу Query, откройте редактор свойства SQL и напишите любой запрос SELECT. После этого установите свойство Active в True.

Для вывода результатов запроса в DBGrid свяжите компонент Query с DBGrid с помощью DataSource.

При организации интерфейса программы предусмотрите возможность просмотра кода выполненного SQL-запроса. Рекомендуется отобразить и словесную формулировку запроса, внутри которой можно поместить поля для ввода его параметров (рис. 25).

Код SQL-запросов в тексте программы лучше описать с помощью массива констант типа String. Это позволит обращаться к нему в любом месте программы, указывая лишь имя массива и номер запроса. Кроме того, вносить изменения в код будет намного удобнее.

Рис. 25. Пример организации интерфейса приложения

Перед выполнением запроса закройте Query и очистите свойство SQL:

Query1.Close;

Query1.SQL.Clear;

Затем присвойте свойству SQL строку SQL-запроса (или элемент массива запросов):

Query1.SQL.Add('select rec_name from records r

where exists(select * from albums al, artists a

where al.id_artist= a.id_artist and a.a_name=:ANAME

and al.id_album=r.id_album)’);

Двоеточие перед именем ANAME говорит о том, что это имя подстановочного параметра SQL-запроса. Использование подстановочных параметров в SQL-ориентированных СУБД существенно ускоряет выполнение однотипных запросов, отличающихся друг от друга только значениями параметров. Это особенно заметно, когда выполнение запроса происходит в цикле несколько раз подряд.

Значения параметров запроса установите следующим образом:

Query1.ParamByName('ANAME').AsString:=Edit5.Text;

Внимание: для выполнения запросов, которые не возвращают результатов (например, UPDATE или INSERT), используйте метод

SQLDataSet1.ExecSQL();

Вызвав этот метод, очистите свойство SQL и задайте любой SQL-запрос, возвращающий результат (т.е. SELECT). В противном случае открыть набор данных Query будет невозможно.

Теперь откройте Query (рекомендуется выполнять эту операцию в блоке tryexceptend для обработки возможных исключительных ситуаций в случае, если запрос содержит ошибки):

Query1.Open;

Код выполненного SQL-запроса, т.е. значение свойства Query1.SQL.Text, выведите в отведенное для этого поле.

Задание на практическую работу № 6

Разработать приложение для выполнения SQL-запросов, описанных в индивидуальном задании. Все запросы должны быть параметризированными.

ПРИЛОЖЕНИЕ 1

ВАРИАНТЫ ЗАДАНИЙ К ПРАКТИЧЕСКИМ РАБОТАМ

Вариант 1. Прием заказов

клиенты (A)

заказы (B)

состав заказов (C)

товары (D)

Код клиента

Код заказа

Код заказа

Код товара

Название

Код клиента

Код товара

Наименование

Адрес расч. счета

Дата размещения

Кол-во товара

Цена товара

Город

Дата исполнения

Цена заказа

Страна

Скидка

Выполнить SQL-запросы для созданной БД:

  1. Получить сведения о заказах и составе заказов для каждого клиента (вывод данных из нескольких таблиц).

  2. Вывести даты размещения заказов, в которых количество товара более 100 и цена товара больше 200 (простой вложенный).

  3. Определить какие заказы включают товар с заданным наименованием (коррелированный подзапрос)

  4. Вывести название клиента, город, страну и наименование товара для заказов, сделанных за указанный месяц (со сложным условием).

  5. Определить адреса расчетных счетов для клиентов, которые заказали товар в количестве более 300. (с EXISTS)

  6. Вывести код заказа, где количество = 10, либо цена < 5000, либо то и другое (с UNION).

  7. Увеличить цену товара в два раза для кода товара = 4 (UPDATE).

  8. Определить суммарное количество каждого товара, заказанного за последний месяц (с использованием встроенных функций).