• поиска и преобразования (SELECT) образов таких наборов данных из хранилища данных для чтения приложениями;
• изменения состояния базы данных путем добавления, изменения и удаления указанных наборов (операторы INSERT, UPDATE и DELETE).
Такие операторы, которые выполняют действия над данными, относятся к языку, называемому языком манипулирования данными (Data Manipulation Language, DML).
Реализация в Firebird языка SQL разбивается на несколько пересекающихся подмножеств, каждое из которых используется для специальных целей и включает свои собственные языковые расширения.
* Встраиваемый SQL (Embedded SQL, ESQL) - это "базовая" реализация SQL, состоящая из синтаксиса DDL и DML, которые включаются и в другие подмножества, где это возможно. Это было первоначальной реализацией SQL в предшественнике InterBase, разработанной для включения в клиентские приложения и требующей препроцессора GPRE.
* Динамический SQL (Dynamic SQL, DSQL) - это подмножество наиболее часто используется сегодня. Оно используется во всех программах интерфейса с базой
- данных, которые общаются с сервером через интерфейс прикладного программирования (Application Programming Interface, API). Некоторые команды DDL, доступные в ESQL, которые не могут быть реализованы в DSQL, заменяются вызовами функций API.
* Интерактивный SQL (Interactive SQL, ISQL)- это язык, реализованный в утилите командной строки isql. Он основан на DSQL с расширениями просмотра метаданных и некоторой системной статистики, а также для управления сессиями isql.
* Процедурный SQL (Procedural SQL, PSQL) - это язык для написания хранимых процедур и триггеров. Он состоит из всех операторов DML с добавлением множества процедурных расширений.
Язык определения данных (DDL)
При определении метаданных для использования в базе данных Firebird мы используем лексикон операторов и параметров стандартов SQL для создания объекта с его типом и именем - или идентификатором, - а также для задания и изменения его атрибутов. В этом лексиконе также присутствуют операторы для удаления объектов.
Запросы с использованием DDL зарезервированы для целей определения метаданных, следовательно:
* аккуратно управляйте ими, если вы реализуете их использование в приложениях конечного пользователя;
* ожидайте ошибок при компиляции, если вы собираетесь их использовать в хранимых процедурах.
Язык DDL в Firebird описан в частях III и IV. Определение просмотров, предоставление и отмена привилегий SQL также относятся к DDL. Просмотры, которые объединяют операторы DDL и DML, обсуждаются в главе 24. Определение и поддержка разрешений SQL описывается в главе 35.
Язык манипулирования данными (DML)
Операторы DML, их синтаксис и выражения для поиска и манипулирования наборами данных являются предметом рассмотрения этой части книги.
* В главе 20 вводится концепция наборов, структура и синтаксис запросов DML. Глава включает разд. "Тема оптимизации", где рассматривается работа с оптимизатором запросов.
* Глава 21 описывает функции, операции и выражения, порядок их использования.
* В главе 22 рассматриваются запросы, которые оперируют с множеством таблиц при использовании соединений (joins), подзапросов (sub-queries) и объединений (unions).
* В главе 23 рассматриваются синтаксис и вопросы определения наборов, которые требуют сортировки или группирования, а также запросы, отыскивающие строки в нескольких таблицах без использования соединений.
* Глава 24 содержит описание и использование просмотров, а также других наследуемых объектов типа таблиц.
Возможности встраиваемого языка (ESQL)
Некоторые реляционные системы управления базами данных, включая Firebird, предоставляют возможность непосредственного включения операторов SQL в модули, написанные на языке программирования третьего поколения. Стандарт предоставляет концептуальные алгоритмы, по которым будет выполняться программирование приложений, но не задает никаких правил реализации.
Возможность программирования приложений со встроенным SQL в Firebird включает подмножество операторов, подобных операторам SQL, и конструкции, которые могут быть включены в исходный код программы для обработки препроцессором перед компиляцией кода. Конструкции встроенного языка SQL называются встроенным SQL (ESQL). Операторы ESQL не могут генерироваться динамически.
ESQL недопустим в хранимых процедурах и триггерах, а процедурный язык (PSQL) недопустим во встроенном SQL. ESQL может выполнять хранимые процедуры. ESQL используется в программах, написанных на традиционных языках программирования, таких как С или COBOL. Каждому оператору ESQL должен предшествовать SQL-оператор EXEC. Препроцессор GPRE преобразует операторы ESQL в структуры данных используемого языка программирования и вызовы сервера Firebird.
Читать дальше