Выборка данных из таблиц с помощью SQL-запросов


Содержание лекционного занятия:

  •  Выборка данных
  • Компоненты Delphi, работающие с базами данных через SQL-запросы

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

Одним из наиболее эффективных и универсальных средств выборки данных из таблиц базы данных являются запросы языка SQL. SQL-команды подраз­деляются на несколько категорий. Для выборки данных используются коман­ды, относящиеся к так называемому языку DQL (Data Query Language — язык запросов к данным).

SQL-запросы можно использовать как при работе с локальными базами данных, так и с SQL-серверами баз данных (Oracle, Informix, Sybase, InterBase, Microsoft SQL Server). Причем при формировании SQL-запросов не имеет особого значе­ния, какая система управления базами данных задействована, так как команды языка SQL стандартизованы (стандарт ANSI SQL 92). Однако следует учитывать, что производители СУБД обычно предлагают свои реализации SQL, которые мо­гут включать расширения команд стандарта и даже отклонения от него. Тем не менее, большинство SQL-команд имеют одинаковый или очень похожий синтак­сис в различных реализациях. Поэтому, изучив одну из реализаций SQL, впослед­ствии можно легко перейти на другую.

В Delphi для работы с таблицами локальных баз данных через механизм BDE при­меняется собственная реализация языка SQL, называемая локальным языком SQL (local SQL). Данная реализация является подмножеством языка SQL 92. Несмот­ря на то, что она не содержит отклонений от стандарта, ее возможности несколько урезаны.

При работе с SQL-серверами обработка запроса выполняется на стороне сервера, поэтому особенности реализации языка SQL в этом случае определяются исполь­зуемым SQL-сервером.

Компоненты Delphi, работающие с базами данных через SQL-запросы

Для работы с базами данным через SQL-запросы в VCL Delphi используется, как правило, компонент TQuery. В VCL Delphi есть и другие компоненты для взаимодействия с базами данных посред­ством SQL-запросов, например TStoredProc, TCommand, TDataSet, TStoredProc.

Компонент TQuery

При использовании компонента TQuery подготовка и диспетчеризация запросов выполняется механизмом BDE. По своим свойствам и назначению компонент TQuery подобен компоненту ТТаЫе.

Отличие заключается только в способе получения данных: в ТТаЫе используются ,методы, инкапсулированные в классе ТТаЫе, a TQuery получает данные как резуль­таты выполнения SQL-запросов.

Применение языка SQL позволяет легко решать задачи, которые сложно или во­обще невозможно решить в рамках класса ТТаЫе. Поэтому компонент TQuery яв­ляется гораздо более мощным и гибким инструментом для работы с базами дан­ных. Основные свойства класса TQuery приведены в табл. 11.1.

Таблица 11.1. Основные свойства класса TQuery

Свойство

Constrained

Тип Описание

Boolean          Определяет, можно (false) или нет (true) задавать полям набора данных значения, которые не                            соответствуют условиям отбора

 

DataSource

TDataSource     Источник данных, связанный с набором данных, поля которого используются в качестве параметров SQL -запроса

 

ParamCheck

Boolean          Определяет, следует ли обновлять параметры запроса при изменении свойства SQL во время выполнения программы

ParamCount

Word              Текущее количество параметров в запросе

Params[lndex: Word]

TParams          Массив параметров, используемых в SQL-запросе

Prepared

Boolean          Определяет, готов запрос к выполнению (true) или нет(false)

 

RowsAffected

Integer            Количество записей, измененных с момента последнего выполнения запроса

 

SQL

TStrings          Текст SQL-запроса

Text

PChar             Текст SQL-запроса, передаваемый BDE

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

procedure ExecSQL:

Выполняет SQL-запрос, заданный в свойстве SQL. Обычно используется в тех случаях, когда в результате выполнения запроса данные не возвращаются (на­пример, при выполнении команд INSERT, UPDATE, DELETE и CREATE TABLE).

Для выполнения команды SELECT необходимо использовать метод Open компонента TQuery.

function ParamByName (const Value: String): TParam:

Обеспечивает доступ к заданным параметрам по имени.

procedure Prepare:

Посылает запрос механизму BDE для подготовки к выполнению. Вызов данного метода перед выполнением запроса повышает скорость выполне­ния.

procedure UnPrepare:

Освобождает ресурсы, занятые при подготовке запроса к выполнению.

Вопросы для самоконтроля:

1.В каких режимах возможно создание базы данных?

2.Какие типы данных допустимы при создании таблицы?

Рекомендуемая литература:

1.Избачков Ю.С., Петров В.Н., Информационные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2005.-656

2. Информатика: Учебник/Под ред. проф. Н.В. Макаровой, - М.: Финансы и статистика, 1997, 2000.