You are on page 1of 44

OQL

OQ (Object
(O
Query
Q
Language))
ODMG .


ODMG C++, SmallTalk, Java.
OQL
SQL , :

y
y
y
y
y


OQL

SELECT FROM WHERE

:
SELECT e.
FROM e in
WHERE e. = 1001;

SELECT FROM WHERE

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

SELECT struct(: struct(: .,



: ._._),
: (SELECT struct(_: ._.,
_: ..)
FROM in .))
FROM in
WHERE ._. =

Set(struct (: (: string, : string),

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)






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

You might also like