Sunteți pe pagina 1din 14

PRACTICA SGBD

SELECT exp
1
[AS c
1
], ..., exp
q
[AS c
q
]
FROM T
1
a
1
, ..., T
h
a
h
WHERE <expesie logic
1
>
GROUP BY grup
1
, ..., grup
p
HAVING <expesie logic
2
>
UNION <fraz SELECT>
ORDER BY g
1
, g
2
, ..., g
s
NO CONSOLE] [NOWAIT] [PLAIN]
T
1
T
2
... T
h
=
FOR
1
= 1 TO m
1
FOR
2
= 1 TO m
2
......
FOR
h
= 1 TO m
h
Trateaz
ENDFOR
h
.......
ENDFOR
2
Endfor
1
.
1 2
1 2
, ,..., | 1 ,1
h
h i i
I I I n i h
1
...
h
v
exp
j
( )
ST
i
=
exp
j
= a
i
cimp
= exp
1
( ), ..., exp
q
( )
1
...
h
v
i
1 n
cimp ,..., cimp
...
1 h
L
1
...
h
v
1
...
h
v
FOR
1
= 1 TO m
1
....
FOR
k
= 1 TO m
k
- se evaluaeaz <expresie logic
1
>( ),
fie w- valoarea
- IF(w) then
FOR i = 1 TO q
- se evalueaz exp
1
( ), fie w
i
valoarea
ENDFOR
- se plaseaz la ieire =(w
1
, ...,w
q
)
endif
endfor
k
........ endfor
1
1
...
h
v
1
...
h
v
a) e = a
i
cmp
i
a
j
cmp
2
b) e = a
i
cmp expresie
1 1
1
... ...
1 2
...
. . dac ;
. . altfel.
h h
h
i j
T a cimp v a cimp v
e v
F
1 1
1
... ...
...
. . dac expresie ;
. . altfel.
h h
h
i
T a cimp v v
e v
F
c) e = a
i
cmp ALL (SELECT cmp
2
FROM
T
2
...).
d) e = a
i
cmp (SELECT cmp
2
FROM
T
2
...).
1
1
...
...
. . dac , 1, ;
. . altfel.
h
h
i i
T a cimp v w i m
e v
F
1
1
...
...
. . dac ,1 , astfel nct ;
. . altfel.
h
h
i i
T i i m a cimp v w
e v
F
e) e = a
i
cmp [NOT] BETWEEN exp
1
AND exp
2
.
f) e = [NOT] EXISTS ( SELECT exp
1
, ...,
exp
q
FROM ...).
1
1
...
1 2
...
. . dac este n intervalul de valori [exp , exp ];
. . altfel.
h
h
i
T a cimp v
e v
F
1
...
. . dac ' (T' are cel puin o nregistrare);
. . altfel.
h
T T
e v
F
Exemplu: Fie tabela PERSONAL cu cmpurile
MARCA cheie unic i NUME, SALARIU,
SELECIE, PRENUME i tabela VNZRI cu
cmpurile MARCAV marca persoanei ce vinde,
CODPV codul produsului vndut,CANTV
cantitatea vndut de MARCAV din produsul
CODPV, PRETV- preul unitar. Fie tabela
PRODUSE cu cmpurile CODP codul
predusului (cheie unic), DENP denumire,
PRET preul unitar.
Fie interogarea:
I) S se afieze vnzrile realizate de persoanele
nregistrate n tabela PERSONAL sub forma:
MARCAV, CODPV, CANTV
O comand SELECT - SQL ce realizeaz interogarea poate
fi:
SELECT A. MARCAV, A. CODPV, A. CANTV;
FROM VANZARI A;
WHERE EXISTS (SELECT B.MARCA FROM
PERSONAL B;
WHERE B.MARCA = A.MARCAV)
Notnd cu T' tabela definit de subselecie, se observ c
T' depinde de valorile cmpului A.MARCAV, deci
selecia este dependent de = (I ), unde 1 m
1
i
vectorul de nregistrri al tabelei VANZARI este (I
1
, ...,
).
1
m
I
1
m
I
II) Fie nregistrea: s se afieze vnzrile
realizate de persoane care nu exist n
personal.
SELECT A. MARCAV, A.CODPV, A.
CANTV;
FROM VANZARI A;
WHERE NOT EXISTS;
(SELECT B. MARCA FROM
PERSONAL B;
WHERE B.MARCA = A. MARCA)
III) S se gseasc persoanele din PERSONAL, care vnd
produsul cu codul P1.
SELECT A.MARCA, A.NUME FROM PERSONAL A;
WHERE EXISTS (SELECT B. MARCAV FROM
VANZARI B;
WHERE (B.MARCA = A.MARCA) AND CODPV =
'P1')
Rezult c subselecia depinde de A.MARCA.
Interogarea II) se poate realiza i prin comanda (forma h)):
SELECT A.MARCAV, A.CODPV, A.CANTV;
FROM VANZARI A;WHERE A.MARCAV NOT
IN(SELECT B.MARCA FROM PERSONAL B)
g) e = a
j
cimp [NOT] IN (v
1
, ..., v
m
)
v' = a
j
cimp( )
h) e = [NOT] IN ( SELECT b.cimp
2
FROM
T
2
...).
1
...
h
v
1
1
...
. . dac v' ,..., ;
. . altfel.
h
m
T v v
e v
F
1
1
...
j 1
...
. . dac a ,..., ;
. . altfel.
h
h
m
T cimp v v v
e v
F
e = (a
1
cimp
1
,..., a
q
cimp
q
) [NOT] IN
(SELECT b
1
).
=(a
1
cimp
1
( ),..., a
q
cimp
q
( )).
i) e = a
j
cimp [NO] LIKE <expresie sablon>
1 q q
cimp ,..., b cimp ...
...
1 h
L
1
...
h
v 1
...
h
v
...
1
1
1
...
. . dac ,..., ;
. . altfel.
h
h
s
T L w w
e v
F
1
1
...
...
. . dac ;
. . altfel.
h
h
j
T a cimp v M
e v
F

S-ar putea să vă placă și