przykład
select author: X
from biblio.book.author X
wynik:
{author: "Roux",
author: "Combalusier",
author: "Smith"}
Klauzula where
Wprowadzanie zmiennych
select author: Y
from biblio._ X,
X.author Y,
X.title Z
where matches(".*(D|d)atabase.*", Z)
Semantyka
select E from B where C
- trzy kroki
from
- zbiór powiązań ze zmiennymi
- np. X, Y, Z
where
- filtracja
- w wyniku zbiór
- {(x1, y1, z1), ...,
(xn, yn, zn)}
select
- konstrukcja ssd-wyrażenia;
- {E(x1, y1, z1), ...,
E(xn, yn, zn)}
Tworzenie wierzchołków
- konstrukcje z użyciem nawiasów
- zapytanie
select row: { title: Y, author: Z }
from biblio.book X, X.title Y, X.author Z
- wynik
{row: {title: y1, author: z1},
...,
row: {title: yn, author: zn}}
- podzapytania
Ogólniejsze formy selekcji
Operacje łączenia
- schemat relacyjny
r1(a, b), r2(b, c)
- instancja
- tabelki (relacje)
=> select * from r1;
a | b
---+---
1 | 2
1 | 3
(2 rows)
=> select * from r2;
b | c
---+---
2 | 4
2 | 3
(2 rows)
- ssd-wyrażenie
{ r1: { row: {a: 1, b: 2},
row: {a: 1, b: 3} },
r2: { row: {b: 2, c: 4},
row: {b: 2, c: 3} } }
- zapytanie
- SQL
=> select X.a, Y.c from r1 X, r2 Y where X.b = Y.b;
a | c
---+---
1 | 4
1 | 3
(2 rows)
- język semistrukturalny
select a: A, c: C
from r1.row X,
r2.row Y,
X.a A, X.b B, Y.b B', Y.c C
where B = B'
Wielokrotne wystąpienia
select row: W
from biblio.paper X, X.refers-to Y, Y.author W,
X.refers-to Z
where NOT (Y = Z)
and W in Z.author
and matches(".*Database.*", X.title)