Что такое SQL?
21
зывают
метаданными
(
metadata
). К таблицам словаря данных можно
делать
запросы с помощью оператора
select
, в точности как к создан
ным вами таблицам. Таким образом, текущие структуры данных, раз
вернутые в БД во время выполнения, становятся доступными. Напри
мер, если требуется создать отчет о новых счетах, открытых за послед
ний месяц, можно жестко закодировать
известные на момент написа
ния отчета имена столбцов таблицы
account
либо сделать запрос
к словарю данных, получить текущий набор столбцов и динамически
генерировать отчет при каждом выполнении.
Данная книга посвящена главным образом той части языка для рабо
ты с данными, к которой относятся команды
select
,
update
(обновить),
insert
и
delete
(удалить). SQLвыражения
управления схемой рассмот
рены в главе 2, где создается БД, используемая в примерах данной
книги. Вообще говоря, SQLвыражения управления схемой не требуют
особого внимания, за исключением их синтаксиса,
тогда как у SQLвы
ражений для работы с данными (хотя их и немного) есть масса нюан
сов, нуждающихся в подробном изучении. Поэтому большинство глав
данной книги посвящены SQLвыражениям для работы с данными.
SQL: непроцедурный язык
Если в прошлом вам приходилось работать с языками программирова
ния, вы привыкли к описанию переменных и структур данных, ис
пользованию условной логики (ifthenelse), циклическим конструк
циям (do while … end) и разделению кода на
небольшие многократно
используемые части (объекты, функции, процедуры). Код передается
компилятору, и результирующий исполняемый код делает в точности
(ну, не всегда
в точности
) то, что вы запрограммировали. С каким бы
языком программирования ни работали, Java, C#, C,
Visual Basic или
любым другим
процедурным
языком, вы полностью управляете дейст
виями программы. С SQL, однако, понадобится отказаться от привыч
ного контроля над выполнением, потому что SQLвыражения опреде
ляют необходимые входные и выходные данные, а
способ выполнения
выражения зависит от компонента механизма СУБД (database engine),
называемого
оптимизатором
(
optimizer
). Работа оптимизатора заклю
чается в том, чтобы рассмотреть SQLвыражение и с учетом конфигура
ции таблиц и доступных индексов принять решение о самом эффектив
ном пути выполнения запроса (ну, не всегда
самом
эффективном).
Большинство СУБД позволяют программисту влиять на решения опти
мизатора с помощью
подсказок оптимизатору
(
optimizer hints
), на
пример предложений по использованию конкретного индекса.
Однако
большинство пользователей SQL никогда не доберется до этого уровня
сложности и будет оставлять подобные тонкости администраторам БД
или специалистам по вопросам производительности.
Следовательно, с SQL писать полные приложения не получится. Если
требуется создать чтото сложнее простого сценария для работы с оп