Files
secondo/Tests/Testspecs/QueriesCeBIT.txt

230 lines
4.5 KiB
Plaintext
Raw Permalink Normal View History

2026-01-23 17:03:45 +08:00
Datenbanken und Queries
Datenbank OPT (Standarddaten, Optimierung)
Einfache Kommandos und Anfragen
delete x;
delete inc;
query 3 * 7
query "Ralf Hartmut G<>ting" contains "Ralf"
create x: int
query x
update x := 7
query x
let inc = fun(n:int) n + 1
query inc
query inc(7)
list algebras
list algebra StandardAlgebra
Ausf<EFBFBD>hrbare Ebene
"Wieviele Tupel hat die Postleitzahlenrelation?"
query plz count
"Finde die Orte, die im Namen "wald" enthalten.
query plz feed filter[.Ort contains "wald"] consume
Wieviele sind das?
query plz feed filter[.Ort contains "wald"] count
"Finde die Postleitzahlen f<>r Hagen." (mit Index)
query plz_Ort plz exactmatch["Hagen"] consume
Mit Optimierer
==============
"Wieviele Postleitzahlen geh<65>ren zu Orten mit <20>ber 10000 Einwohnern?"
select count(*)
from [orte as o, plz as p]
where [o:ort = p:ort, o:bevt > 100]
Query mit 5 Bedingungen (3 Selektion, 2 Join)
select count(*)
from [orte as o, plz as p1, plz as p2]
where [o:ort = p1:ort, o:bevt > 70, p1:plz = p2:plz + 7, p2:plz > 60000,
p2:ort contains "d"]
-> 156
[erzeugten Plan ansehen]
Ergebnis ansehen:
select *
from [orte as o, plz as p1, plz as p2]
where [o:ort = p1:ort, o:bevt > 70, p1:plz = p2:plz + 7, p2:plz > 60000,
p2:ort contains "d"]
Datenbank GERMANY (Geodaten)
============================
Queries
Mit graphischer Oberfl<66>che: Kategorien Germany.cat
Mit Optimierer
==============
"Finde die Nachbarkreise von Magdeburg"
select * from kreis where [gebiet touches magdeburg, not(kname contains "Magdeburg")]
"Finde die Gebiete, die vom Rhein durchquert werden und deren Fl<46>che gr<67><72>er als 1000 ist; gib den Namen, die Bev<65>lkerungszahl und das Gebiet an."
select [k:kname, k:bev, k:gebiet]
from [kreis as k, fluss as f]
where [f:fname = "Rhein", k:gebiet intersects f:fverlauf, k:flaeche > 1000]
"Finde die <20>brigen Gebiete" (graphisch anders darstellen)
select [k:kname, k:bev, k:gebiet]
from [kreis as k, fluss as f]
where [f:fname = "Rhein", k:gebiet intersects f:fverlauf, k:flaeche <= 1000]
Den Rhein darstellen:
select * from fluss where fname = "Rhein"
"Welche Kreise liegen im Umkreis von 100 km um Dortmund?" (Einheiten stimmen nicht wirklich)
select * from kreis where distance(dortmund, gebiet) < 1
Welche Autobahnen <20>berqueren den Rhein?
select [a:aname, a:anr, a:averlauf]
from [autobahn as a, fluss as f]
where [f:fname = "Rhein", a:averlauf intersects f:fverlauf]
Datenbank BERLIN (Geodaten, Moving Objects)
===========================================
Queries
Graphische Oberfl<66>che Hintergrund: berlinU.ses
Ausf<EFBFBD>hrbare Ebene
delete zug1;
delete sixthirty;
"Sei zug1 der erste Zug der Linie U7Hin."
let zug1 = U7Hin feed extract[zug]
"Zu welcher Zeit war zug1 unterwegs?"
query deftime(zug1)
"Welche Strecke ist zug1 gefahren?"
query trajectory(zug1)
"Wo war zug1 um 6:30?"
let sixthirty = theInstant(2003, 11, 20, 6, 30)
query val(zug1 atinstant sixthirty)
"Wo war zug1 zwischen 6:30 und 6:45?"
query trajectory(zug1 atperiods theperiod(theminute(2003,11,20,6,30), theminute(2003,11,20,6,44)))
"Wo waren die Z<>ge der Linie U7Hin, die um 8 Uhr unterwegs waren, zu dieser Zeit?
query U7Hin feed extend[at8: val(.zug atinstant eight)] filter[not(isempty(.at8))]
project[at8] consume
Andere Formulierung:
query U7Hin feed filter[.zug present eight] extend[at8: val(.zug atinstant eight)]
project[at8] consume
"Wann halten Z<>ge der Linie U6Hin an der Station Mehringdamm"
Mehringdamm ist schon definiert in der Datenbank.
query mehringdamm
query U6Hin feed extend[atMD: deftime(.zug at mehringdamm)] project[atMD] consume
"Finde alle Z<>ge, die um 9 Uhr unterwegs waren."
query nine
query Trains feed filter[.zug present nine] consume
"Wo waren alle Z<>ge um 9 Uhr, die dann fuhren?"
query Trains feed filter[.Trip present nine] extend[at9: val(.Trip atinstant nine)]
project[Id, Line, Up, at9] consume
Queries mit Optimierer:
"Finde alle Z<>ge, die um 9 Uhr unterwegs waren."
select *
from trains
where present(trip, nine)
"Wo waren alle Z<>ge um 9 Uhr, die dann fuhren?"
select [id, line, up, val(atinstant(trip, nine)) as at9]
from trains
where present(trip, nine)
Query aus Flyer:
===============
Graphische Oberfl<66>che Hintergrund: berlin.ses
"Finde Name, Stra<72>e und Ort aller italienischen Restaurants, die nicht weiter als 2 km vom Brandenburger Tor liegen."
select [r:name, r:strasse, r:geodata]
from [restaurants as r, sehenswuerdpoi as s]
where [s:name = "Brandenburger Tor", r:art = "Italienisch", distance(r:geoData, s:geoData) < 2000]