- •О. Б. Малков работа с базами данных в среде delphi Учебное пособие для студентов заочной формы обучения
- •Содержание
- •1. Реализация работы с базами данных в среде delphi
- •1.1. Базы данных и системы управления базами данных
- •1.2. Технология доступа к данным bde
- •1.3. Компоненты приложений, работающих с базами данных
- •2. Демонстрационная база данных
- •2.1. Логическая модель данных предметной области
- •2.2. Физическая модель данных предметной области
- •3. Создание базы данных
- •3.1. Создание псевдонима
- •3.2. Создание структуры таблиц базы данных
- •3.3. Свойства таблиц Paradox
- •3.4. Заполнение таблиц базы данных
- •4. МодулЬ данных
- •4.1. Создание модуля данных
- •4.2. Связывание наборов данных
- •4.3. Создание объектов-полей
- •4.4. Проектирование и анализ структуры базы данных
- •4.5. Создание объектов-столбцов
- •4.6. Реализация бизнес-правил
- •5. Создание приложения, работающего с базой данных
- •5.1. Выбор типа пользовательского интерфейса
- •5.2. Создание главной формы
- •5.3. Создание рабочих форм
- •5.4. Создание форм ввода новых данных
- •6. Создание запросов
- •6.1. Компонент Query
- •6.2. Создание sql-запросов
- •6.2.1. Простая выборка данных
- •6.2.2. Выборка из связанных таблиц
- •6.2.3. Сортировка записей
- •6.2.4. Сложные критерии отбора
- •6.2.5. Псевдонимы таблиц и комментарии
- •6.2.6. Агрегатные функции и группировка записей
- •6.2.7. Создание и удаление таблиц и индексов
- •6.2.8. Вставка, удаление и редактирование записей
- •Insert into Имя_таблицы (Список_полей
- •Values (Список_значений)
- •6.3. Построение запроса в демонстрационной базе данных
- •7. Создание отчетов
- •7.1. Основы технологии Rave Reports
- •7.2. Визуальная среда Rave Designer
- •7.3. Составляющие проекта отчета
- •7.3.1. Библиотека отчетов
- •7.3.2. Каталог глобальных страниц
- •7.3.3. Каталог объектов данных
- •7.4. Типы отчетов
- •7.4.1. Отчет с единственной таблицей или запросом
- •7.4.2. Отчет главный-детальный
- •7.4.3. Группирующий отчет
- •7.5. Пример создания отчетов в приложении Sale
- •7.6. Экспорт отчета в файл
- •8. Создание СправочнОй системЫ
- •8.1. Создание файла документа справочной информации
- •8.2. Создание проекта справочной системы
- •8.3. Доступ к справочной информации
- •9. Создание установочного диска
- •9.1. Программа InstallShield Express
- •9.2. Создание проекта инсталляционной программы
- •Библиографический список
6.2. Создание sql-запросов
Для иллюстрации особенностей SQL-запросов удобно использовать утилиту SQL Explorer, которая вызывается из среды Delphi командой Database > Explore или из главного меню командой Пуск > Программы > Borland Delphi 7 > SQL Explorer.
В окне браузера выберем БД Sale, откроем ее и выберем любую таблицу. На вкладке Data (Данные) можно посмотреть содержимое этой таблицы, а на вкладке Enter SQL (Ввод операторов SQL) – ввести и выполнить оператор SQL.
6.2.1. Простая выборка данных
Для выборки данных используется оператор SELECT. Он является самым распространенным оператором языка SQL. В простейшем виде оператор имеет формат:
SELECT Список_Полей FROM Список_Таблиц
Отметим, что SQL-интерпретатор BDE игнорирует регистр букв в зарезервированных словах, названиях полей, таблиц и т. д. Однако операторы SQL принято записывать прописными буквами. Например:
SELECT ZNaim, ZTelef FROM Zakazcik
Введя такую строку на вкладке Enter SQL и щелкнув на кнопке Execute Query (Выполнить запрос), получим таблицу (временный НД), из двух столбцов (рис. 40).
Если требуется выбрать все поля из таблицы, используется символ «*»:
SELECT * FROM Zakazcik
Если после слова SELECT указать ключевое слово DISTINCT, то в результирующий список не включаются записи, содержащие повторяющиеся значения.
SELECT DISTINCT NZKod FROM Naklad
6.2.2. Выборка из связанных таблиц
Хотя простейший оператор SELECT допускает одновременную выборку данных из нескольких таблиц, в этом формате он не учитывает возможные связи между таблицами. Например, рассмотрим следующий запрос:
SELECT * FROM Naklad, Zakazcik
Если выполнить этот запрос, то получим ненужный НД, в котором каждая накладная повторяется столько раз, сколько записей хранится в таблице Zakazcik.
Р ис. 40. Формирование SQL-запроса и его выполнение
Чтобы учесть реляционную связь по полям NZKod и ZKod, следует установить критерий отбора:
SELECT * FROM Naklad, Zakazcik WHERE ZKod = NZKod
Критерий отбора формулируется в секции, начинающейся зарезервированным словом WHERE (где). Чтобы связать две таблицы, мы указали, что для каждой записи таблицы Naklad (она открывает перечень таблиц) в поле NZKod содержится шифр связанной с ней записи из таблицы Zakazcik.
В результирующем НД будет столько записей, сколько их имеется в таблице Naklad, причем к каждой записи Naklad будут справа добавлены все поля записи таблицы Zakazcik с информацией об указанном в накладной партнере.
6.2.3. Сортировка записей
Если итоговый НД требуется отсортировать, то надо использовать ключевые слова ORDER BY, после которых указывается поле, по которому выполняется сортировка. По умолчанию она выполняется по возрастанию.
Если же требуется выполнить сортировку по убыванию, то после имени поля добавляется ключевое слово DESC:
SELECT NNom, NData, NSumma FROM Naklad
WHERE NZKod = ‘003’
ORDER BY NSumma DESC
Формируется НД, содержащий три столбца: номер накладной, дата и сумма для заказчика, имеющего код 003. Сортировка осуществляется по убыванию суммы.