546_____________________________________________Глава К

10.1.2 Оператор выбора Select

10.1.2.1 Отбор записей из таблицы

В этом разделе мы познакомимся с наиболее часто используемым операторе»
SQL — оператором выбора Select. Этот оператор возвращает одно или множеств!
значений, которые могут представлять собой значения указанных полей записе^
удовлетворяющих указанному условию и упорядоченных по заданному критерию.

Хотя мы еще не рассматривали компонента C++Builder Query, но при знаком
стве с оператором Select полезно сразу пробовать записывать его в различных ва
риантах и смотреть получающиеся результаты. Поэтому откройте новое приложе
ние C++Builder, перенесите на форму компонент Query со страницы библиотек]
Data Access и установите его свойство DatabaseName равным dbP (или равным дру
гому псевдониму, который вы используете для базы данных). Поместите на форм]
компонент DataSource и в его свойстве DataSet задайте Queryl. Поместите такно
на форму компонент DBGrid и в его свойстве DataSource задайте DataSourcel.

Теперь ваше тестовое приложение для экспериментов с языком SQL готова
Операторы SQL вы можете писать в свойстве SQL компонента Queryl, а чтобы уви
деть результаты выполнения написанного оператора, вам надо будет устанавли
вать значение свойства Active компонента Queryl в true. Это надо будет делать по
еле записи каждого нового оператора.

Теперь начнем рассмотрение оператора Select. Одна из форм этого оператор!
имеет синтаксис:

SELECT <список имен полей> FROM <таблица>

WHERE <условие отбора> ORDER BY <список имен полено-
Элементы оператора WHERE и ORDER BY не являются обязательными. Эле
мент WHERE определяет условие отбора записей: отбираются только те, в коте
рых условие выполняется. Элемент ORDER BY определяет упорядочивание воз
вращаемых записей.

<таблица> — это не компонент Table, а именно та таблица базы данных, и
которой осуществляется отбор, например, Pers.      c

Начнем подробное рассмотрение данного оператора со списка полей поел
ключевого слова Select, содержащего имена тех полей таблицы, которые буду
возвращены. Имена разделяются запятыми. Например, оператор

SELECT Earn, Nam, Par, Year_b FROM Pers

указывает, что следует вернуть поля Fam, Nam, Par и Year_b из таблицы Pers. Зг
пишите его в свойстве SQL компонента Queryl, установите значение свойства А(
tive компонента Queryl в true и посмотрите результаты.

Если указать вместо списка полей символ «*» — это будет означать, что треб}
ется вернуть все поля. Например, оператор

SELECT * FROM Pers

означает выбор всех полей.

В списке могут быть не только сами поля, но и любые выражения от них
арифметическими операциями +, -, *, /. После выражения может записыватьс
псевдоним выражения в форме: AS <псевдоним>. В качестве псевдонима може
фигурировать любой идентификатор, в том числе и написанный по-русски, на кс
торый потом можно будет при необходимости ссылаться. Указанный псевдони:

будет при отображении результатов фигурировать в заголовке таблицы.

Такими простыми средствами создаются аналоги вычисляемых полей, коте
рые при использовании компонента Table требовали гораздо больших усилий и к
писания обработчика события OnCalcFields. Впрочем, в обработчике можно был
написать сколь угодно сложную программу вычисления, что в данном случае зг
труднительно. Правда, как мы увидим позже, компонент Query, работающий