Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_проект_ИС.doc
Скачиваний:
18
Добавлен:
11.08.2019
Размер:
3.38 Mб
Скачать

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. Сортировка осуществляется по убыванию суммы.