Язык SQL
Мы уже обнаружили, что реляционная алгебра и исчисления позволяют построить только языки запросов, причем с весьма ограниченными возможностями. Для практической работы необходимо ещё создавать и перестраивать схемы базы, манипулировать данными, организовывать транзакции. Поэтому в составе любого языка баз данных появляются подъязыки (языки) определения данных, манипулирования данными и управления данными, соответственно.
Расширения реляционного языка запросов неизбежно выводят его за рамки исходной реляционной модели. Современные версии SQL имеют ядро, основанное на исчислении на кортежах, но в них используются встроенные представления (переменные отношения), характерные для реляционной алгебры, многомерные модели, регулярные выражения, позволяющие препарировать значения в столбцах, и многое другое.
SQL —декларативный язык. Иначе говоря, он только определяет требования к результату инструкции, но не дает алгоритма её реализации. Поэтому СУБД должна генерировать план исполнения, который определяет способы доступа к данным. Настройка плана исполнения — это отдельная и большая тема. И последнее: SQL можно считать языком, ориентированным на предметную область (domain specific language —DSL).
8.1 Как работать с языком SQL в Cache
Чтобы загрузить в базу данных Cache учебные таблицы скачайте с сайта книги файл demobld.sql и положите его в то место на диске, к которому у вас есть права доступа. Щёлкните по кубику Cache рядом с часами и выберите "Терминал". Поскольку скрипт, находящийся в файле, заимствован у Oracle, для его исполнения необходимо набрать команду
do $system.SQL.DDLImport("Oracle","_SYSTEM","p:\demobld.sql")
"_SYSTEM" — это имя пользователя Cache по умолчанию. Вместо "p:\de-mobld.sql" укажите путь к вашему файлу demobld.sql. Нажмите клавишу Enter. Если вы всё сделали правильно, то вы увидите картину представленную на рисунке 8.1.
Учебные таблицы описаны в разделе 8.5.2.
Чтобы написать запрос на SQL, щёлкните на кубике Cache и выберите пункт меню "Портал управления системой". В открывшемся окне выберите в центральной колонке "SQL", затем область USER, затем "Исполнить SQL-выражение". (рисунок 8.2).
В Cache можно работать в SQL, используя SQL-терминал. Чтобы его запустить наберите в обычном терминале команду |do $system.SQL.Shell()
SQL-выражения выполняются по нажатию клавиши Enter, как показано на рисунке 8.3 с двумя запросами к пустой таблице qq. Если SQL-выражение должно занять больше одной строки, перед его вводом нажмите Enter. Терминал переведётся в многострочный режим, в котором Enter только переводит курсор на другую строку, а не выполняет SQL-выражение. В многострочном режиме SQL-выражения выполняются командой GO.