Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

QUEL - это язык запросов к реляционным базам данных , основанный на реляционном исчислении кортежей , имеющий некоторое сходство с SQL . Он был создан в рамках проекта СУБД Ingres в Калифорнийском университете в Беркли на основе ранее предложенного Коддом, но не реализованного подязыка данных ALPHA . В течение короткого времени QUEL использовался в большинстве продуктов, основанных на свободно доступном исходном коде Ingres, особенно в реализации под названием POSTQUEL, поддерживаемой POSTGRES . [1] Как Oracle и DB2 завоевала долю рынка в начале 1980-х, большинство компаний, которые тогда поддерживали QUEL, перешли на SQL. [ необходима цитата ] QUEL по-прежнему доступен как часть СУБД Ingres, хотя в течение многих лет не было добавлено никаких специальных языковых улучшений для QUEL. [ когда? ]

Использование [ править ]

Операторы QUEL всегда определяются кортежными переменными , которые можно использовать для ограничения запросов или возврата наборов результатов. Рассмотрим этот пример, взятый из одной из первых оригинальных статей Энгра: [2]

Пример 1.1. Вычислите зарплату, разделенную на возраст 18 для сотрудника Джонса.

Диапазон  из  Й  является  СЛУЖАЩИМ получить  в  W ( COMP  =  Е . Зарплата  /  ( E . Возраст  -  18 )) где  E . Name  =  "Джонс"

Здесь E - кортежная переменная, которая охватывает отношение EMPLOYEE, и в этом отношении обнаруживаются все кортежи, удовлетворяющие квалификации E.Name = «Jones». Результатом запроса является новое отношение W, которое имеет один домен COMP, вычисленный для каждого подходящего кортежа.

Эквивалентный оператор SQL:

создать  таблицу  ж ,  как выберите  ( е . зарплата  /  ( е . возраст  -  18 ))  как  комп от  работника  как  е , где  е . name  =  'Джонс'

Вот пример простого сеанса, который создает таблицу, вставляет в нее строку, затем извлекает и изменяет данные внутри нее и, наконец, удаляет добавленную строку (при условии, что это имя является уникальным полем).


Еще одной особенностью QUEL была встроенная система для массового перемещения записей в систему и из нее. Рассмотрим эту команду:

скопируйте ученика ( имя = c0, запятая = d1, возраст = c0, запятая = d1, пол = c0, запятая = d1, адрес = c0, nl = d1 ) в "/student.txt"

который создает файл с разделителями-запятыми, содержащий все записи в таблице студентов. D1 указывает на разделитель, а не на тип данных. Изменение на intoa fromотменяет процесс. Подобные команды доступны во многих системах SQL, но обычно как внешние инструменты, а не внутренние по отношению к языку SQL. Это делает их недоступными для хранимых процедур.

QUEL обладает чрезвычайно мощными возможностями агрегирования. Агрегаты могут быть вложенными, и разные агрегаты могут иметь независимые дополнительные списки и / или ограничительные предложения. Например:

получить  ( a = count ( y . i  by  y . d,  где  y . str  =  "ii *"  или  y . str  =  "foo" ),  b = max ( count ( y . i  by  y . d )))

Этот пример иллюстрирует одну из, возможно, менее желательных причуд QUEL, а именно то, что все сравнения строк потенциально являются сопоставлением с образцом. y.str = "ii*"соответствует всем y.strзначениям, начинающимся с ii. Напротив, SQL используется =только для точных совпадений, тогда likeкак используется, когда требуется сопоставление с образцом.

См. Также [ править ]

  • D (спецификация языка данных)
  • D4 (язык программирования) (реализация D)
  • Реляционная алгебра
  • Реляционное исчисление

Ссылки [ править ]

  1. ^ Stonebraker, M ; Роу, штат Луизиана (май 1986 г.). Дизайн ПОСТГРЭС (PDF) . Proc. 1986 Конференция ACM SIGMOD по управлению данными. Вашингтон, округ Колумбия.
  2. ^ Stonebraker, Майкл ; Вонг, Юджин; Крепс, Питер; Хелд, Джеральд (1976). «Дизайн и реализация ИНГРЭС». ACM-транзакции в системах баз данных . 1 (3): 191. CiteSeerX 10.1.1.109.957 . DOI : 10.1145 / 320473.320476 . 

Дальнейшее чтение [ править ]

  • CJ Date: Критика языка баз данных SQL . Запись SIGMOD 14 (3): 8-54, 1984.