Основы современных баз данных




Общая характеристика языка QUEL. Язык программирования EQUEL - часть 2


ON (ключ1, ключ2, ...) и

INDEX ON имя_отношения IS имя_индекса (ключ1, ключ2, ...)

Оператор MODIFY изменяет структуру хранимого отношения в соответствии с параметром структура_памяти и заданным набором ключевых атрибутов. Оператор INDEX создает отдельную индексную структуру для заданных полей данного отношения. Созданные индексы используются системой для оптимизации выполнения операторов манипулирования данными. Согласованность содержимого отношений и индексов поддерживается системой автоматически.

Язык QUEL содержит также операторы определения ограничений целостности, представлений и ограничений доступа. На них мы остановимся немного позже.

В том виде, в каком мы его кратко описали, язык QUEL предназначен для интерактивной работы с базами данных Ingres. Для программирования прикладных информационных систем, которые должны взаимодействовать с базами данных, был разработан язык программирования EQUEL, являющийся, по существу, расширением языка программирования Си путем встраивания в него операторов языка QUEL. Язык EQUEL определяется следующим образом:

  • Любой оператор языка Си является оператором языка EQUEL.

  • Любой оператор языка QUEL, которому предшествуют два знака '#', является допустимым оператором языка EQUEL.

  • Переменные Си-программы могут использоваться в операторах QUEL, заменяя имена отношений, имена атрибутов, элементы списка выборки или константы. Те переменные Си-программы, которые используются таким образом, должны при своем объявлении быть помечены двойным знаком '#'.

  • Оператор RETRIEVE (без INTO) сопровождается составным оператором языка Си, который выполняется по одному разу для каждого выбранного кортежа.

    Пример программы на языке EQUEL, выдающей номер группы по имени студента:

    main()

    {

    ## char stud_name[20];

    ## int group_number;

    while (READ(stud_name_)

    {

    ## RANGE OF S IS STUDENTS

    ## RETRIEVE (group_number = G.GROUP.NUMBER)

    ## WHERE (S.STUD_NAME = stud_name)

    {

    PRINT ("The group number of 'stud_name' is 'group_number');

    }

    }

    }

    Программа на языке EQUEL обрабатывается специальным препроцессором, который превращает ее в обычную Си-программу, содержащую вызовы Ingres с передачей в качестве параметров текстов операторов языка QUEL. Дальнейшую схему мы уже обсуждали.




    Содержание  Назад  Вперед