POSTQUEL
POSTQUEL (англ. Postgres Query Language) — це первинна мова запитів, яка була створена для системи керування базами даних Postgres, на сьогоднішній день PostgreSQL. Ця мова була створена командою розробників у 1985 році в Каліфорнійському університеті Берклі, під керівництвом професора Майкла Стоунбрейкера. POSTQUEL базується на мові запитів QUEL і використовується у базі даних Ingres з кінця 70-х років. У 1995 році Ендрю Ю (Andrew Yu), а також Джоллі Чен (Jolly Chen) зробили заміну мови запитів у базі Postgres POSTQUEL на SQL. Отже, новий випуск системи керування базами даних назвали Postgres95.
Приклад1.1.1 Обчисліть заробітну платню, розділену на 18 років для співробітника Джонса.
range of E is EMPLOYEE retrieve into W (COMP = E.Salary / (E.Age - 18)) where E.Name = "Jones"
Приклад1.1.2 Еквівалентний оператор SQL:
select (e.salary / (e.age - 18)) as comp from employee as e where e.name = "Jones"
QUEL, як правило, більш «нормалізується», ніж SQL. У той час, коли кожна основна команда SQL має формат, який, принаймні, дещо відрізняється від інших, а у QUEL один синтаксис використовується для всіх команд.
Наприклад, тут наведено приклад, який створює таблицю, вставляє рядок в неї, а потім витягує і модифікує дані, а також видаляє рядок, який був доданий (припускаючи, що ім'я це унікальне поле).
Приклад1.2.1
create student(name = c10, age = i4, sex = c1, state = c2) range of s is student append to s (name = "philip", age = 17, sex = "m", state = "FL") retrieve (s.all) where s.state = "FL" replace s (age=s.age+1) retrieve (s.all) delete s where s.name="philip"
Аналогічна умова для SQL:
Приклад1.2.2
create table student(name char(10), age int, sex char(1), state char(2)) insert into student (name, age, sex, state) values ("philip", 17, "m", "FL") select * from student where state = "FL" update student set age=age+1 select * from student delete from student where name="philip"
Зверніть увагу, що синтаксис значно варіюється між командами, і що навіть подібні команди, такі як вставка і оновлення використовуються з різними стилями.
Приклад1.3. Отримати розмір заробітної платні співробітника Ковальського:
retrieve (STUFF.pay) from STUFF where STUFF.name = "Kowalski"
Приклад1.4. Усі співробітники, яким більше 40 років:
retrieve (P.name) from P in STUFF where P.age > 40
Приклад1.5. Знайти усі департаменти, які цілком займають один поверх:
retrieve (DEPART.dname) where DEPART.floor NOT-IN {D.floor from D in DEPART where D.dname != DEPART.dname}
- C. J. Date: A Critique of the SQL Database Language. SIGMOD Record 14(3): 8-54, 1984.