Professional Documents
Culture Documents
OQ (Object
(O
Query
Q
Language))
ODMG .
ODMG C++, SmallTalk, Java.
OQL
SQL , :
y
y
y
y
y
OQL
:
SELECT e.
FROM e in
WHERE e. = 1001;
OQL
.
extent
.
y
y
y
y
y
y
__
__
SELECT e.
FROM e in
WHERE e. = 1001;
ODMG.
( select from where)
(bag)
SELECT e.
FROM e in
WHERE e
e.
= 1001;
To e. string,
(where )
strings.
strings
OQL distinct
. distinct
((set).
)
OQL order by
. .
extent:
__;
;
<>
__
<>
<>
<>
.
__2;
<>
:
__2 {
,
1,
__2,
_ __1,
_
nilil
};
.
( )
.
(dot notation)
.
.
1
1.
2.
3.
4.
5.
__.;
;
strings
.
.;
__.;
__..;
strings
.
__.._.;
strings
.
__2.._.;
strings
ti
.
10
1
1.
...
2.
...
3.
__2.._.
4.
__2.._
5.
__2._.._
.
11
Select distinct .
From in __2.._
12
SELECT distinct .
FROM in __2.._
WHERE ._. =
13
bag(
g(
_:
string,
g,
_:string)
g)
:
(: (: , : 3),
: ((_: , _: )
(_: , _: ))
,
14
.
.
.
SELECT struct(: struct(: ..,
:
. .),
)
: (SELECT struct(_: .,
_: .._.)
FROM .))
))
FROM in __
WHERE ._.(6) = TRUE
set(struct(: struct(: string, : string),
: (struct(set(_: string, _: set(string)))))
15
define
Define __
SELECT distinct .
FROM in __2.._
2
WHERE ._. =
16
OQL
:
count: ,
min:
max:
sum:
avg:
17
count(__2.._)
(
2
SELECT avg(.. )
FROM K
WHERE . in (, )
18
;
SELECT count(.._)
FROM M in __
WHERE . =
SELECT count(*)
FROM
,
,
WHERE . = . AND . = . AND
.
=
19
6 ;
SELECT sum(....)
(
)
FROM M in __
WHERE .(6) = true
SELECT sum()
FROM , , ,
WHERE .
= .
AND .
= .
AND
. = . AND . = 6
20
boolean true
false.
v ,
,
c
b ( )
e c.
c
:
(e in c) true e c.
(for all v in c:b) true c
b.
(exists v in c:b) true
c
b.
21
SELECT .
FROM in
WHERE ..
((,
)
)
22
, ,
SELECT .
FROM in
WHERE .._. ( ,
, )
23
SELECT .
FROM IN
WHERE FORALL IN .._:
(.(6) = true)
6 .
24
SELECT .
FROM IN
WHERE EXISTS
S S IN .._:
(.(6) = true)
6 .
25
SELECT .
FROM IN
WHERE FORALL
O
IN ..:
2000 .
26
SELECT .
FROM IN
WHERE EXISTS
S S CF
C IN M._._:
(CF._.(1) = true)
27
SELECT .
FROM IN
WHERE FORALL IN .._:
( (1) = true)
(.(1)
28
SELECT .
FROM IN , (SELECT M
FROM M IN __
WHERE .(1))
(1)) AS M1
WHERE FORALL 2 IN .._:
((1 2))
29
,
.
SELECT .
FROM IN
WHERE FORALL IN ..:
(._. = )
30
,
- .
:
first(t), t,
last(t), t,
[x], x t. 0.
[x1:x2], t x1 x2.
t
31
First(SELECT
Fi
(SELECT .
FROM in
WHERE ..
((
, )
)
ORDER BY .)
32
llast(SELECT
(SELECT .
FROM in
WHERE ..
((
, )
)
ORDER BY .)
33
(SELECT .
FROM in
WHERE ..
((
, )
)
ORDER BY .)[10]
34
(SELECT .
FROM in
WHERE ..
((
, )
)
ORDER BY .)[10:19]
35
first(SELECT distinct .
FROM in __2.._
WHERE ._. = )
36
(SELECT distinct .
FROM in
i __2.._
WHERE ._. = )[0:9]
37
SQL
group by.
H OQL
partitions.
partition
.
38
SELECT .,
count(partition)
(
ii )
FROM IN
GROUP BY : .
.
39
SELECT .
FROM IN
GROUP BY :( .
= )
),
: ( . = ),
: ( . = )
(
(,
,
) .
40
SELECT .
FROM IN
GROUP BY :( ._.
< 1000),
1000)
: (._. >= 1000 AND
._. < 2000),
:
(._.
(
>= 2000)
(, ,
) .
41
SELECT .,
avg(SELECT
(SELECT P.K._.
PK
FROM P IN partition)
FROM IN
GROUP BY : .
HAVING count(partition) > 10
,
10 .
42
SELECT ._.,
count(partition)
FROM IN
GROUP BY : ._.
43