Формирование запросов средствами команд языка SQL

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

 

Результатом запроса является таблица, которую можно отобразить на экране в режиме Browse(Просмотр), сохранить в виде новой таблицы, или вывести в виде отчета.

 

Для поиска данных могут быть использованы команды SQL, такие как LOCATE или SEEK. Но этим командам присущ общий недостаток: они не позволяют просматривать одновременно несколько записей, находящихся в разных строках таблицы. Запрос, напротив, предназначен для выборки группы записей, отвечающих поставленным условиям.

 

Команда SQL является мощным средством обработки запросов. С ее помощью из базы-источника выделяются нужные данные и пере­сылаются на экран или в файл-приемник. Данные могут быть из­влечены из разных таблиц, а также сгруппированы и упорядочены же­лаемым образом.

 

Команда SELECT имеет массу опций возможностей. Её неполный синтаксис:

SELECT <что выводится>

FROM <откуда (источник)> INTO <куда (получатель)>

WHERE <каким условиям должно отвечать>

GROUP BY <колонки, по которым выполняется группирование>

HAVING <условие группирования записей в одну строку>

ORDER BY <в каком порядке выводить данные>

 

Создание запроса всегда начинается с ключевого слова SELECT, после которого перечисляются поля таблицы, используемые для запроса. Перед именами полей лучше использовать псевдонимы таблицы. Если таблица входит в состав данных, необходимо указать имя БД, после которого нужно поставить восклицательный знак. Для свободной таблицы достаточно её имени. В таблице, используемой при создании запроса, поля могут иметь заголовки, записанные на английском или латиницей, например price (цена). Чтобы в результатах запроса заголовки выводились русскими буквами, нужно добавить в нужном месте слово AS, после которого указывается новый заголовок поля, причём кавычки необязательны.

Например, имеется база данных по автомобилям, из которой нужно выбрать автомобили, отвечающие определённым требованиям:

SELECT price AS Цена, year AS Год, marka AS Марка, color AS Цвет

FROM Auto! Propousal

WHERE price < 4000; AND marca = ’Ауди’ OR ’БМВ’

Здесь из таблицы, содержащей сведения об автомашинах выбраны автомобили указанной марки, стоимостью менее $4000. При этом заголовки всех полей отчёта выводятся по-русски.

 

Чтобы отобразить записи в упорядоченном виде используется команда ORDER BY. Например, выше приведенный текст команды можно дополнить

ORDER BY price

Чтобы запретить вывод повторяющихся значений, можно добавить команду DISTINCT

 

Если необходимо включить в запрос данные из других таблиц, добавляется оператор объединения, например:

INNER JOIN Auto! Owner

ON Owners.address = ‘Посад’

Здесь мы дополнительно выводим данные по владельцам машин, проживающим в Посаде.

ПРАКТИЧЕСКИЕ ЗАДАНИЯ

Создание кнопок.

Создайте кнопку «Выход» (из формы). Нажмите кнопку Command Button (Командная кнопка) на панели инструментов Form Controls (Элементы управления формы) и щелкните мышью в нужном месте формы.

Откройте окно Properties.

Для создания надписи на кнопке, используйте свойство Caption (Надпись). Введите «Выход» (без кавычек).

Определите реакцию кнопки на Click (Щелчок мышью). Для этого в окне Properties (Свойства) выберите вкладку Methods (Методы).

Установите курсор на метод Click (Нажатие) и щелкните мышью. На экране откроется окно процедур.

Создайте процедуру, используемую для выхода из формы.

* Запрос перед выходом из формы

IF MESSAGEBOX ("Выходить из формы?", 4+32+256, "Выход")=6

_screen.ActiveForm.Release()

ELSE

_screen.ActiveForm.Refresh()

ENDIF

Закройте окно процедур. Кнопка создана.

 

10. Решение квадратного уравнения ax2 + bx + c = 0

Корни уравнения находят по формулам:

,

 

input 'Input A' to A

input 'Input B' to B

input 'Input C' to C

D1=-B + SQRT( B^2-4*A*C)

D2=-B - SQRT( B^2-4*A*C)

X1=D1/4

X2=D2/4

?’Корень Х1= ’, X1

? ’Корень Х2= ’, X2


Программа для вычисления

x=3

Y=(1.4*x^2+x)/sqrt(exp(x)-log(x))

?Y