Использование ODBC в Visual C++ - Знакомство с SQL

ОГЛАВЛЕНИЕ

Знакомство с SQL

Для построения объекта CRecordset необходим параметр в виде SQL запроса к БД.

SQL - Structured Query Language. По русски это язык построения запросов. Его появление вызвано переходом от настольных СУБД типа FoxPro, Paradox и т.д. к системам управления базами данных. Эти системы сформировались в понятие сервера баз данных. Язык SQL является стандартом для реляционных баз данных и его поддерживают практически все систему управления данными. Но к спецификации SQL очень часто производители конкретной БД добавляют свои расширения.

Если кратко, то системы управления данными стремятся к модели клиент - сервер. Сервер - это мощное программное обеспечение работающее обычно на неменее можной аппаратной части, а клиент это программное обеспечение, которое мы с вами разрабатываем. При этом подходы могут быть разные. Например каждому клиенту сервер, или один сервер (часто мультипроцессорный) для всех. Но самое интересное, что нас это не очень волнует. Использование ODBC и SQL позволяют создать приложения не особенно зависимые от сервера баз данных, где хранятся наши таблицы, запросы и т.д. Конечно иcпользуя только стандарты, наше приложение будет работать на многих платормах, но в замен мы не сможем получить максимум производительности. Так вот мое мнение такое. Чем оптимизировать программу, дешевле увеличить оперативную память в два раза на сервере и получить совместимость.

Важной особенностью SQL является то, что этот язык описывает только результат, процесс получения на нем описать нельзя. То есть я могу сказать выбери мне данные, но механизм не пишу. Кроме того следует отметить разницу программирования на основе SQL от программирования на других языках. При получении результатов нет необходимости пробегать по всем полям. Запрос работает сразу со всей базой данных. Это очень серьезное отличие от языка скажем FoxPro.

Запрос SQL состоит из одного или нескольких операторов SQL разделенных точкой с запятой. Самые важные операторы - описание стандартов ANSI/ISO SQL.

В прошлом шаге мы использовали оператор SQL для создания обьекта CRecordset.

cr.Open(CRecordset::forwardOnly,"SELECT * FROM TABLE1;",CRecordset::readOnly); 

Мы использовали оператор Select. Этот оператор позволяет получить данные. Ниже приведена расшифровка.

SELECT	// выбери
* // все колонки таблицы
FROM // для таблицы
TABLE1; // имя таблицы

Данный оператор выберет всю таблицу. Но мы с Вами можем этим оператором ограничить диапазон выбора. Например:

SELECT TABLE1.Family FROM TABLE1;

Выбирает только столбец Family в таблице TABLE1.

Если необходимо выбрать несколько столбцов, то они должны быть разделены запятой:

SELECT TABLE1.Family, TABLE1.ID FROM TABLE1;

Два столбца Family и ID.

Используя WHERE и логические операции AND,OR можно составить довольно сложное условие.

SELECT TABLE1.Family, TABLE1.ID FROM TABLE1 WHERE (((TABLE1.Family)="Petrov") AND ((TABLE1.ID)=1));

Также можно указать, что производить выбор из двух или более таблиц перечислив их после FROM через запятую

SELECT TABLE1.Family, TABLE1.ID, TABLE2.ID_PROF FROM TABLE1, TABLE2;

Пришло время выводов. Для создания обьекта CRecordse на основе запроса SQL только те данные, с которыми вы будете работать. Тем самым перенеся тяжесть обработки данных на сервер и съэкономив системные ресурсы на клиенте.

Описание оператора SELECT далеко не полное :-)