Documente Academic
Documente Profesional
Documente Cultură
___________________________________________________________________________
FIRME
CODFIRMA DENFIRMA LOC CONTBANCA ZONA
AGENTI
CODAGENT NUMEAGENT DATAANG DATANAST ZONA FUNCTIE CODSEF
COMENZI
NRCOM CODFIRMA CODAGENT DATA
RANDCOM
NRCOM CODPRODUS CANT PRET TERMENLIVR
PRODUSE
CODPRODUS DENPRODUS UM STOC
1
BAZE DE DATE – SINTEZA
___________________________________________________________________________
1. Tipuri de date:
TIP Caracteristici
VARCHAR2(size) sir de caractere de lungime variabila
NUMBER(p,s) Numeric: p (precision) = 1..38, s (scale) =-84..127
LONG sir de caractere de lung>2GB
DATE data calendaristica
RAW(size) date de tip binar. Maxim size este 2000 bytes.
LONG RAW lungime variabila > 2GB se stocheaza grafice, sunete, documente
ROWID adresa fiecarui rind din tabela
CHAR(size) sir de caractere de lungime fixa
BLOB binary large object (max 4GB) se stocheaza date nestructurate
(text,imagine, video, date spatiale)
BFILE contine un pointer catre un fisier binar stocat in afara bazei de date
2. Operatori SQL
Operator Caracteristici
AND, OR, NOT Operatori logici
<, >, =, >=, <=, <>, != Operatori de comparatie
BETWEEN ... AND ... între două valori (inclusiv).
IN(listă) egal cu oricare valoare din listă
LIKE similar cu un şablon
% - oricâte caractere; _ - un caracter;
IS NULL are valoarea NULL
3. Comenzi SQL
Comenzile referitoare la bazele de date sunt comune tuturor versiunilor de SQL si sunt
impartite in urmatoarele categorii:
Comanda Scop
CREATE Creaza un obiect nou (tabela, utilizator, rol, etc)
ALTER Modifica o parte dintre proprietatile unui obiect
DROP Elimina un obiect din baza de date
2
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Comanda Scop
GRANT Acorda utilizatorilor drepturile necesare pentru accesul si manipularea
obiectelor din baza de date
REVOKE Anuleaza anumite drepturi utilizatorilor
3
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Comanda Scop
CREATE Creaza un obiect nou: TABLE, INDEX, CLUSTER, TABLESPACE,
SEQUENCE, VIEW, MATERIALIZED VIEW, USER, ROLE,
PROCEDURE, FUNCTION, TRIGGER
ALTER Modifica o parte dintre proprietatile unui obiect
DROP Sterge un obiect din baza de date
RESTRICTII DE INTEGRITATE
- Tipuri de restrictii:
o NOT NULL
o UNIQUE
o PRIMARY KEY
o FOREIGN
o CHECK
- Precizarea restrictiilor se poate face in 2 moduri: in-line la definirea coloanei pe care
se impune restrictia si out-of-line separat, fie la sfarsitul sintaxei create table, fie prin
comanda alter
Definirea restricţiilor – se poate realiza la nivel de câmp (in-line) sau la nivelul tabelei (out-of-
line):
Sintaxa generală:
Tipuri de restricţii:
4
BAZE DE DATE – SINTEZA
___________________________________________________________________________
5
BAZE DE DATE – SINTEZA
___________________________________________________________________________
DESC AGENTI;
Realizeaza urmatoarele:
- Modificarea structurii tabelei: ADD, MODIFY, DROP COLUMN, SET UNUSED
- Modificarea restrictiilor de integritate: ADD, MODIFY, DROP, DISABLE
CONSTRAINT
- Redenumeste tabela: RENAME
6
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Exemple - dupa fiecare comanda vizualizati structura tabelei cu DESCRIBE sau DESC:
7
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Comanda Scop
INSERT Adauga o noua inregistrare in tabela
SELECT Regaseste inregistrari in tabele sau vederi.
DELETE Sterge inregistrari din tabele
UPDATE Modifica valorile unor inregistrari din tabele
8
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Exemple:
9
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Sintaxa este:
UPDATE [TABELA]
SET [COLOANA] = [VALOARE]
WHERE [CONDITIE];
Exemple:
Sa se scada cu 100 de pachete stocul de servetele:
UPDATE PRODUSE
SET STOC=STOC-100
WHERE lower(denprodus)='servetele';
Sa se modifice pretul si stocul produsului 333 cu pretul si stocul produsului cu codul 111:
UPDATE PRODUSE
SET (PRET,STOC)=(SELECT PRET, STOC FROM PRODUSE
WHERE CODPRODUS='111')
WHERE CODPRODUS='333';
Sa se modifice pretul si stocul produselor cu pretul si stocul produsului cu codul 111, dar
numai pentru produsele aflate in comanda cu nr 400:
UPDATE PRODUSE
SET (PRET,STOC)=(SELECT PRET, STOC FROM PRODUSE WHERE
CODPRODUS='111')
WHERE CODPRODUS IN (SELECT CODPRODUS FROM RINDCOM WHERE
NRCOM=400);
Sintaxa este:
DELETE FROM [TABELA]
WHERE [CONDITIE];
10
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Exemple:
Sa se stearga produsele comandate pt care cant<200;
unde:
SELECT specifică atributele selectate;
DISTINCT suprimă valorile duplicate;
* selectează toate atributele;
atribut selectează coloana numită;
expresie permite construirea de expresii si valori noi
alias denumiri pentru atributele selectate;
FROM tabele specifică tabelele ce conţin coloanele selectate.
WHERE clauza permite specificarea conditiilor si a criteriilor de selectie
a datelor
GROUP BY se precizeaza campul dupa care vor fi grupate datele in cazul
expresiilor si functiilor de grup (SUM(), AVG(), COUNT(),
MIN(), MAX())
HAVING in cazul functiilor de grup conditiile impuse acestora se
precizeaza in clauza HAVING
ORDER BY precizeaza ordonarea in functie un anumite campuri ascendent
(ASC) –implicit sau descendent (DESC)
Frazele SQL:
Nu sunt case sensitive;
11
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Selecţia: Operator unar, prin care se obţine o nouă relaţie care conţine toate
atributele relaţiei iniţiale şi un număr redus de tupluri. Reducerea se face
după o condiţie numită condiţie de selecţie.
Proiecţia: Operator unar, prin care se obţine o nouă relaţie care conţine un număr
redus de atribute faţă de relaţia iniţială şi toate valorile sau combinaţiile
distincte de valori ale acestor atribute. Atributele care se regăsesc în
12
BAZE DE DATE – SINTEZA
___________________________________________________________________________
EXEMPLE:
1. Sa se selecteze toti agentii din tabela agenti:
13
BAZE DE DATE – SINTEZA
___________________________________________________________________________
b. Join extern
11. Sa se selecteze firmele care sunt in aceaasi zona cu firma SC MEDIA SA:
14
BAZE DE DATE – SINTEZA
___________________________________________________________________________
FUNCTII
Funcţii single-row (sau scalare). O funcţie single-row întoarce un singur rând rezultat
pentru fiecare rând al tabelei interogate sau view
Funcţii de grup (sau agregate). O funcţie de grup întoarce un singur rând rezultat pentru
un grup de rânduri interogate. Funcţiile de grup pot apare în clauza HAVING
FUNCŢII DE GRUP
13. Să se afişeze valoarea maximă, valoarea medie, valoarea minimă şi valoarea totală a
produselor comandate:
14. Să se afişeze data primei comenzi încheiate şi data celei mai vechi comenzi încheiate:
15
BAZE DE DATE – SINTEZA
___________________________________________________________________________
18. Să se afişeze cantitatea medie vândută din fiecare produs şi să se realizeze ordonarea
în funcţie de aceasta (se utilizeaza functia AVG() si clauza GROUP BY pt gruparea
datelor in functie de produse, iar ordonarea se realizeaza cu ajutorul functiei ORDER
BY ).
19. Să se afişeze produsele şi cantitatea medie vândută numai acele produse a căror
cantitate medie este mai mare de 1500 (conditia se specifica in clauza HAVING si nu
in clauza WHERE deoarece este utilizata functia de grup AVG si conditia este
avg(cant)>800)
21. Sa se afiseze numai comenzile care au valoarea cuprinsa intre 3 si 5 mil (conditia va fi
mentionata in clauza HAVING pt ca se utilizeaza o functie de grup - SUM):
16
BAZE DE DATE – SINTEZA
___________________________________________________________________________
FUNCTII SINGLE-ROW
Operatorul de concatenare ( || )
SELECT 'produsul: ' || initcap(denprodus)|| ' are stocul diponibil ' || stoc
FROM produse;
Funcţia ROUND()
Funcţile SYSDATE
26. Să se afişeze perioada de timp corespunzătoare (în săptămâni) între data încheierii
comenzii şi data curentă:
27. Afisati data curenta (se selecteaza data din tabela DUAL):
17
BAZE DE DATE – SINTEZA
___________________________________________________________________________
28. Să se afişeze comenzile, data încheierii comenzilor, numărul de luni între data curentă
şi data încheierii, următoarea zi de vineri după data încheierii, ultima zi din luna din care
face parte data încheierii, precum şi data corespunzătoare după 2 luni de la data încheierii
Funcţia ROUND()
30. Să se afişeze comenzile incheiate in 2004. Se va rotunji data încheierii la prima zi din
luna corespunzătoare dacă data încheierii este în prima jumatate a lunii sau la prima zi din
luna următoare:
Funcţii de conversie
Funcţia EXTRACT ()
18
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Exemple:
19
BAZE DE DATE – SINTEZA
___________________________________________________________________________
1. TABELE VIRTUALE
Sa se realizeze o tabela virtuala care sa contina numai produsele pentru care unitatea de
masura (um)=’buc’.
Sa se stearga inregistrarile din tabela virtuala PROD_BUC_V pentru produsele care au stocul
mai mare de 1000.
Sa realizeze o tabela virtuala cu toti agentii din Muntenia. Tabela virtuala nu va putea fi
actualizata:
20
BAZE DE DATE – SINTEZA
___________________________________________________________________________
2. INDECSI
Exemple:
Sa se creeze un index pe tabela agenti pe coloana numeagent:
CREATE INDEX AGENTI_NUMEAG_IDX ON AGENTI(NUMEAGENT);
3. SECVENTE
- Sunt utilizate pentru asigurarea unicitatii cheilor primare sau a valorilor pentru care s-a
impus o restrictie de tip UNIQUE.
- Pot fi utilizate pentru mai multe tabele.
- Pentru fiecare secventa se va preciza valoarea de inceput, pasul de incrementare si
valoarea maxima generate.
Exemple:
Sa se creeze o secventa pentru asigurarea unicitatii cheii primare din tabela Comenzi.
21
BAZE DE DATE – SINTEZA
___________________________________________________________________________
Insert into comenzi values (seq_nrcomanda.nextval, '10', '3', to_date('oct 12,05', 'mon dd,yy'));
4. SINONIME
- Sunt nume alternative utilizate pentru referirea obiectelor unei baze de date
- Pot fi sinonime publice (accesibile tuturor utilizatorilor) sau private.
- Sinonimele publice pot fi create numai de administratorul bazei de date
Exemple:
Sa se creeze un sinonim pentru tabela rindcom:
Create synonym detalii_comanda for rindcom;
22