Proiect Oracle

23
Facultatea de Economie si Administrarea Afacerilor 2013 Proiect Oracle

description

exercitii rezolvate

Transcript of Proiect Oracle

Facultatea de Economie si Administrarea Afacerilor 2013

Proiect Oracle

Student: Serban Roxana-Nicoleta

Facultatea de Economie si Administrarea Afacerilor 2013

Laboratorul 3-4

1/2.Sa se defineasca tabelele bazei de date, indecsii necesari realizarii relatiilor intre tabele si sa se realizeze relatiile intre tabele.

1. CREATE TABLE CATEGORII (CODC VARCHAR2(4) CONSTRAINT CATEGORII_PK PRIMARY KEY, DENC VARCHAR2(20));-Table created

2. CREATE TABLE PRODUSE(CODP CHAR(4) CONSTRAINT PRODUSE_PK PRIMARY KEY, DENP VARCHAR(60), UM CHAR(3), DATAF DATE, TERMG NUMBER(3), CANTS NUMBER(8,4), PRETS NUMBER(5,2), CODC VARCHAR2(4), CONSTRAINT CATEG_PROD FOREIGN KEY(CODC) REFERENCES CATEGORII);

-Table created

3. CREATE TABLE CLIENTI(CUI CHAR(7) CONSTRAINT CLIENTI_PK PRIMARY KEY, DENCL VARCHAR(50), ADRESA VARCHAR(100), TELEFON CHAR(10), LOCALITATE VARCHAR(50), JUDET VARCHAR(30), REGIUNE VARCHAR(20));

-Table created

4. CREATE TABLE AGENTI(CODAG CHAR(3) CONSTRAINT AGENTI_PK PRIMARY KEY, NUME VARCHAR(50), PRENUME VARCHAR(30), DATA_ANG DATE, DATA_N DATE, SEX CHAR(1), STUDII VARCHAR(15));

-Table created

5. CREATE TABLE FACTURI(NR_FACT CHAR(7) CONSTRAINT FACTURI_PK PRIMARY KEY, DATA_FACT DATE, DISCOUNT NUMBER(4,2), DATAS DATE, CODAG CHAR(3), CUI CHAR(7), CONSTRAINT AG_FACT FOREIGN KEY(CODAG) REFERENCES AGENTI(CODAG), CONSTRAINT CL_FACT FOREIGN KEY(CUI) REFERENCES CLIENTI(CUI));

-Table created

6. CREATE TABLE DOCINC(NR_DOC CHAR(7) CONSTRAINT DOCINC_PK PRIMARY KEY, TIP_DOC CHAR(3), DATA_DOC DATE, CUI CHAR(7), CONSTRAINT CL_DOC FOREIGN KEY(CUI) REFERENCES CLIENTI(CUI));

-Table created

Facultatea de Economie si Administrarea Afacerilor 2013

7. CREATE TABLE VANZARI(CODP CHAR(4), NR_FACT CHAR(7), CANTV NUMBER(8,2), PRETV NUMBER(8,2), CONSTRAINT VANZARI_PK PRIMARY KEY(CODP, NR_FACT), CONSTRAINT VANZARI_FK FOREIGN KEY(CODP) REFERENCES PRODUSE, CONSTRAINT VANZARI_FK1 FOREIGN KEY(NR_FACT) REFERENCES FACTURI(NR_FACT));

-Table created

8. CREATE TABLE INCASARI(NR_FACT CHAR(7), NR_DOC CHAR(7), SUMA NUMBER(10,2), CONSTRAINT INCASARI_PK PRIMARY KEY(NR_FACT, NR_DOC), CONSTRAINT INCASARI_FK FOREIGN KEY(NR_FACT) REFERENCES FACTURI, CONSTRAINT INCASARI_FK1 FOREIGN KEY(NR_DOC) REFERENCES DOCINC(NR_DOC));

-Table created

CREATE UNIQUE INDEX DENC ON CATEGORII(DENC ASC);

-Index created

CREATE UNIQUE INDEX DENP ON PRODUSE(DENP ASC);

-Index created

3.Sa se defineasca pentru tabela Agenti comentariul “Agentii organizatiei”, iar pentru coloanele data_n si data_ang, “Data nasterii” respectiv “Data angajarii”.

COMMENT ON TABLE AGENTI IS ‘Agentii organizatiei’;- Statement processed COMMENT ON COLUMN AGENTI.DATA_N IS ‘DATA NASTERII’;-Statement processed

COMMENT ON COLUMN AGENTI.DATA_ANG IS ‘DATA ANGAJARII’;-Statement processed

4. Sa se vizualizeze comentariile definite si apoi sa se stearga aceste comentarii. Sa se vizualizeze din nou comentariile adaugate coloanelor respectiv tabelelor.

SELECT * FROM USER_TAB_COMMENTS;

AGENTI TABLE AGENTII ORGANIZATIEI

Facultatea de Economie si Administrarea Afacerilor 2013

SELECT * FROM USER_COL_COMMENTS;

-

COMMENT ON TABLE AGENTI IS’’; STATEMENT PROCESSED

COMMENT ON COLUMN AGENTI.DATA_N IS’’; STATEMENT PROCESSED

COMMENT ON COLUMN AGENTI.DATA_ANG IS’’; STATEMNET PROCESSED

SELECT * FROM USER_TAB_COMMENTS;

AGENTI TABLE -

SELECT * FROM USER_COL_COMMENTS;

6. Sa nu se permita introducerea in coloana SEX din tabela Agent decat a valorilor F sau M, in coloana Studii valorile Medii, Superioare, Postuniversitare, iar in coloana TIP_DOC din tabela DocInc, valorile CHF, OP, CEC.

ALTER TABLE AGENTI ADD (CONSTRAINT check_sex CHECK (SEX IN ('F','M')));-Table alteredALTER TABLE AGENTI ADD (CONSTRAINT check_studii CHECK (STUDII IN (‘MEDII’, ’SUPERIOARE’, ’POSTUNIVERSITARE’)));-Table altered

AGENTI CODAG -

AGENTI NUME -

AGENTI PRENUME -

AGENTI DATA_ANG DATA ANGAJARII

AGENTI DATA_N DATA NASTERII

AGENTI SEX -

AGENTI STUDII

AGENTI CODAG -

AGENTI NUME -

AGENTI PRENUME -

AGENTI DATA_ANG -

AGENTI DATA_N -

AGENTI SEX -

AGENTI STUDII -

Facultatea de Economie si Administrarea Afacerilor 2013

ALTER TABLE DOCINC ADD(CONSTRAINT check_tipdoc CHECK (TIP_DOC IN(‘CHF’,’OP’,’CEC’)));-Table altered

7. Sa nu se permita introducerea unei date pentru factura si pentru documente mai mare decat data curenta.ALTER TABLE FACTURI MODIFY (DATA_FACT DEFAULT ‘<2013’);-Table altered

8. Pentru facturi si pentru documentele de incasare sa se stabileasca data curenta ca valoare implicita pentru coloanele DataFact si DataDoc.ALTER TABLE FACTURI MODIFY(DATA_FACT DEFAULT SYSDATE);ALTER TABLE DOCINC MODIFY(DATA_DOC DEFAULT SYSDATE);-Table altered

9. Pentru coloana Regiune din tabela Clienti nu permiteti introducerea decat a valorilor Muntenia, Moldova, Banat , Transilvania.ALTER TABLE CLIENTI MODIFY(REGIUNE DEFAULT ’MUNTENIA’,’MOLDOVA’,’BANAT’,’TRANSILVANIA’);-Table altered

10. Pentru coloanele CantS, PretS si Discount sa se stabileasca valoarea 0 ca valoare implicita.

ALTER TABLE PRODUSE MODIFY (CANTS DEFAULT ‘0’); TABLE ALTERED

ALTER TABLE PRODUSE MODIFY (PRETS DEFAULT ‘0’); TABLE ALTERED

ALTER TABLE FACTURI MODIFY (DISCOUNT DEFAULT ‘0’); TABLE ALTERED

11. Pentru coloanele Localitate, Judet si Regiune stabiliti valorile implicite: Galati, Galati , respectiv Moldova.ALTER TABLE CLIENTIMODIFY(LOCALITATE DEFAULT'GALATI');-TABLE ALTERED

ALTER TABLE CLIENTIMODIFY (JUDET DEFAULT 'GALATI');

Facultatea de Economie si Administrarea Afacerilor 2013

-TABLE ALTERED

ALTER TABLE CLIENTIMODIFY(REGIUNE DEFAULT 'MOLDOVA');-TABLE ALTERED

12. Creati tabela Clienti_moldova cu coloanele: CUI, Denumire, Judet, Regiune care sa contina toti clientii din regiunea Moldova.

CREATE TABLE CLIENTI_MOLDOVA AS SELECT CUI, DENCL, JUDET, REGIUNE FROM CLIENTI WHERE REGIUNE='Moldova';Table created

13. Stabiliti urmatoarele tipuri de date pt coloanele tabelei Clienti_Moldova: pt Denumire varchar2(45) cu restrictia sa nu accepte decat valori unice, iar pt coloana Regiune stabiliti tipul varchar2(30) cu valoarea implicita Moldova si nu permiteti introducerea nici unei alte valori in aceasta coloana.

ALTER TABLE CLIENTI_MOLDOVA MODIFY(DENCL VARCHAR2(45) CONSTRAINT DEN_U UNIQUE, REGIUNE VARCHAR2(30) CONSTRAINT REG CHECK(REGIUNE IN('Moldova')));Table altered

14. Dezactivati coloana Regiune din tabela Clienti_moldova si restrictia de unicitate pt denumire. Activati din nou restrictia de unicitate pt denumire.

ALTER TABLE CLIENTI_MOLDOVA SET UNUSED COLUMN REGIUNE;ALTER TABLE CLIENTI_MOLDOVA DISABLE CONSTRAINT DEN_U;ALTER TABLE CLIENTI_MOLDOVA ENABLE CONSTRAINT DEN_U;

15. Stergeti coloana Regiune din tabela Clienti_moldova si toate constrangerile definite pt aceasta coloana.

ALTER TABLE CLIENTI_MOLDOVA DROP UNUSED COLUMNS;

16. Sa se creeze pt tabela Clienti_moldova indexul descrescator DENUMIRE_IDX si apoi sa se vizualizeze structura tabelei.

CREATE INDEX DENUMIRE_IDX ON CLIENTI_MOLDOVA(DENCL DESC); index created

Facultatea de Economie si Administrarea Afacerilor 2013

DESC CLIENTI_MOLDOVA;

Table Column Data Type Length Precision ScalePrimary

Key Nullable Default Comment

CLIENTI_MOLDOVA CUI CHAR 7 - - - - -

  DENCLVARCHAR2

45 - - - - -

  JUDETVARCHAR2

30 - - - - -

1 - 3

17. Sa se stearga indexul definit la pct 16 si sa se vizualizeze din nou structura tabelei.DROP INDEX DENUMIRE_IDX;Index dropped.DESCRIBE CLIENTI_ MOLDOVA;

TableColum

n Data TypeLengt

hPrecisio

nScal

ePrimary

KeyNullabl

eDefaul

t Comment

CLIENTI_MOLDOVA CUI CHAR 7 - - - - -

  DENCLVARCHAR2

45 - - - - -

  JUDETVARCHAR2

30 - - - - -

Facultatea de Economie si Administrarea Afacerilor 2013

Laboratorul 5-6

INSERT INTO CATEGORII VALUES(‘C1’, ’INCALTAMINTE’);- 1 ROW(S) INSERTEDINSERT INTO CATEGORII VALUES(‘C2’, ’ACCESORII’);INSERT INTO CATEGORII VALUES(‘C3’, ’HAINE’);

INSERT INTO PRODUSE(CODP,DENP,UM,CANTS,PRETS,CODC) VALUES(‘P1’, ‘CIZME DAMA’, ‘BUC’, ‘20’,’90,’C1’’);INSERT INTO PRODUSE(CODP,DENP,UM,CANTS,PRETS,CODC) VALUES(‘P2’,‘PANTOFI DAMA’,’BUC’,’20’,’85’,’C1’);INSERT INTO PRODUSE(CODP,DENP,UM,CANTS,PRETS,CODC) VALUES(‘P3’,‘GEANTA DAMA’,’BUC’,’10’,’65’,’C2’);INSERT INTO PRODUSE(CODP,DENP,UM,CANTS,PRETS,CODC) VALUES(‘P4’,‘ESARFA’,’BUC’,’10’,’25’,’C2’);INSERT INTO PRODUSE(CODP,DENP,UM,CANTS,PRETS,CODC)VALUES('P5','CAMASA DAMA','BUC','15','70','C3');INSERT INTO PRODUSE(CODP,DENP,UM,CANTS,PRETS,CODC)VALUES('P6','FUSTE','BUC','15','80','C3');

INSERT INTO CLIENTI VALUES('J01','TAKKO','STR.FRUNZEI','0734563436','GALATI','GALATI','MOLDOVA');INSERT INTO CLIENTI VALUES('J02','ATMOSPHERE','STR. LALELEI','0748932109','TIMISOARA','TIMIS','BANAT');

INSERT INTO AGENTI VALUES('AG1','IONESCU','MARCEL',TO_DATE('10/02/2011','DD/MM/YYYY'),TO_DATE('02/03/1989','DD/MM/YYYY'),'M','MEDII');INSERT INTO AGENTI VALUES('AG2','STEFANESCU','IRINA',TO_DATE('23/04/2012','DD/MM/YYYY'),TO_DATE('12/12/1988','DD/MM/YYYY'),'F','MEDII');

INSERT INTO FACTURI VALUES('1456',TO_DATE('10/04/2013','DD/MM/YYYY'),'0',NULL,'AG1','J01');

Facultatea de Economie si Administrarea Afacerilor 2013

INSERT INTO FACTURI VALUES('5632',TO_DATE('01/05/2013','DD/MM/YYYY'),'0',NULL,'AG2','J02');

INSERT INTO DOCINC VALUES('12345','CHF',NULL,'J01');INSERT INTO DOCINC VALUES('27893','CEC',NULL,'J02');

INSERT INTO VANZARI VALUES('P1','1456','10','95');INSERT INTO VANZARI VALUES('P2','1456','10','90');INSERT INTO VANZARI VALUES('P3','5632','5','75');INSERT INTO VANZARI VALUES('P4','5632','3','30');

INSERT INTO INCASARI VALUES('1456','12345','1850');INSERT INTO INCASARI VALUES('5632','27893','465');

1. Sa se insereze 2 inregistrari in tabela clienti.INSERT INTO CLIENTI VALUES('J01','TAKKO','STR.FRUNZEI','0734563436','GALATI','GALATI','MOLDOVA');INSERT INTO CLIENTI VALUES('J02','ATMOSPHERE','STR. LALELEI','0748932109','TIMISOARA','TIMIS','BANAT');

2. Sa se insereze o noua inregistrare cu valori doar pentru coloanele Codp,denumire produs, data fabricatiei si termen de garantie in tabela Produs.INSERT INTO PRODUSE(CODP,DENP,DATAF,TERMG)VALUES('P7','CUREA',TO_DATE('20/03/2013','DD/MM/YYYY'),'100');

3.Sa se insereze o noua inregistrare cu valori doar pentru coloanele nr.document, data document in tabela documente de incasare.INSERT INTO DOCINC(NR_DOC,DATA_DOC)VALUES('1',TO_DATE('11/04/2013','DD/MM/YYYY'));

4. Sa se insereze doua noi inregistrari in tabela facturi.INSERT INTO FACTURI VALUES('100',TO_DATE('12/02/2013','DD/MM/YYYY'),'0',TO_DATE('21/05/2013','DD/MM/YYYY'),'AG1','J02');INSERT INTO FACTURI VALUES('101',TO_DATE('22/04/2013','DD/MM/YYYY'),'10',TO_DATE('23/05/2013','DD/MM/YYYY'),'AG2','J01');

5.Sa se micsoreze cu 10 RON suma incasata cu documentul 12345 pentru factura 1456.

Facultatea de Economie si Administrarea Afacerilor 2013

UPDATE INCASARI SET SUMA=SUMA-10 WHERE NR_DOC='12345' AND NR_FACT='1456'; 1 ROW(S) UPDATED

6. Sa se inlocuiasca data fabricatiei pentru un produs cu data curenta.UPDATE PRODUSE SET DATAF=SYSDATE WHERE CODP='P1'; 1 row(s) updated

7. Sa se marcheze adaugand *** la numele agentilor barbati cu varsta peste 20 de ani.UPDATE AGENTI SET NUME=NUME||'***' WHERE SEX='M' AND DATA_N<='02/02/1990'; 1 row(s) updated

8. Sa se adauge 2 luni la data facturii emisa de catre un anumit agent catre un client.UPDATE FACTURISET DATA_FACT=ADD_MONTHS(DATA_FACT,2) WHERE CODAG='AG1' AND CUI='J01';1 row(s) updated.

9. Sa se micsoreze cu o zi data documentului emis catre un client intr-o anumita data.UPDATE DOCINCSET DATA_DOC=DATA_DOC-1WHERE CUI='J02' AND DATA_DOC='11/04/2013';0 row(s) updated.

10. Sa se modifice localitatea cu valoarea “De introdus” pentru toti clientii din judetele ale caror denumiri incep cu T si se termina cu S.UPDATE CLIENTISET LOCALITATE='De introdus'WHERE LPAD(JUDET,1)='T'; 1 row(s) updatedSELECT * FROM CLIENTI;

CUI DENCL ADRESA TELEFONLOCALITAT

E JUDET REGIUNE

J01 TAKKO STR.FRUNZEI 0734563436 GALATI GALATI MOLDOVA

J02 ATMOSPHERE STR. LALELEI 0748932109 De introdus TIMIS BANAT

11. Sa se stearga din tabela produse toate produsele care mai au 2 zile pana la expirare.

Facultatea de Economie si Administrarea Afacerilor 2013

DELETE FROM PRODUSEWHERE DATAF+TERMG=SYSDATE+2; 0 row(s) deleted.

12. Sa se stearga din tabela facturi toate facturile care mai au 10 zile pana la scadenta.DELETE FROM FACTURIWHERE DATAS=SYSDATE+10;

13. Sa se stearga din tabela agenti, toti agentii minori.DELETE FROM AGENTIWHERE EXTRACT (YEAR FROM SYSDATE)-EXTRACT (YEAR FROM DATA_N)<18;

14. Sa se stearga din tabela agenti, agentii femei cu studii medii si care nu au studii de specialitate.DELETE FROM AGENTIWHERE SEX='F' AND STUDII='Medii';

Laboratorul 7-8

1. SELECT DENP,UM,CANTS FROM PRODUSEWHERE CODC='C1' OR CODC='C2'ORDER BY CANTS DESC;

DENP UM CANTSCIZME DAMA BUC 20PANTOFI DAMA BUC 20ESARFA BUC 10GEANTA DAMA BUC 10

2. Să se selecteze denumirea produsului, unitatea de măsură, cantitatea stocului și

termenul de garanție și anul fabricației pentru toate produsele fabricate în lunile

aprilie, mai, iunie anul 2005 în ordine alfabetică

SELECT DENP,UM,CANTS,TERMG,DATAF

FROM Produse

WHERE EXTRACT(MONTH FROM DATAF)

BETWEEN 5 AND 8 AND EXTRACT (YEAR FROM DATAF)=2013

ORDER BY DENP ASC;

Facultatea de Economie si Administrarea Afacerilor 2013

DENP UM CANTS TERMG DATAF

CIZME DAMA BUC 20 - 05/17/2013

3. Să se selecteze numele și prenumele într-o singură coloană, sexul și studiile

pentru toți agenții femei cu studii medii în ordinea descrescătoare a numelui și

prenumelui.

SELECT (Nume || Prenume) NUME_PRENUME ,Sex,Studii

FROM AGENTI

WHERE lower(SEX) LIKE 'f' AND lower(studii) LIKE 'medii’;

4. Să se selecteze numele, prenumele, vârsta și vechimea agenților comerciali în

ordinea descrescătoare a vechimii și a vârstei.

SELECT NUME,PRENUME(EXTRACT (YEAR FROM SYSDATE)-

EXTRACT(YEAR FROM DATA_N))VARSTA,(EXTRACT (YEAR FROM

SYSDATE)-EXTRACT (YEAR FROM DATA_ANG))VECHIME FROM AGENTI

ORDER BY VECHIME DESC ,VARSTA DESC;

ORA-00923: FROM keyword not found where expected

5. Să se calculeze și să se afișeze numărul total de agenți comerciali bărbați și

femei (sex, număr agenți).

SELECT SEX, COUNT(*) Nr_Angajati FROM AGENTI GROUP BY SEX ;

6. Să se afiseze denumirea categoriei și numărul total de produse din fiecare

categorie.

SELECT DENC ,COUNT(*) Nr_produse

FROM CATEGORII

GROUP BY DENC;

NUME_PRENUME SEX STUDII

STEFANESCUIRINA F MEDII

SEX NR_ANGAJATI

M 1

F 1

DENC NR_PRODUSE

INCALTAMINTE 1

ACCESORII 1

HAINE 1

Facultatea de Economie si Administrarea Afacerilor 2013

7. Să se afișeze denumirea clientului și discountul mediul acordat fiecărui client în

parte pentru toți clienți din Galați, Timis.

SELECT DENCL,DISCOUNT,AVG(DISCOUNT)

FROM CLIENTI

INNER JOIN FACTURI ON CLIENTI.CUI=FACTURI.CUI

WHERE JUDET IN(‘GALATI’,’TIMIS’);

GROUP BY DENCL,DISCOUNT; ORA-00911: invalid character

8. Să se afișeze numărul facturii, data facturii și valoarea facturii pentru toate

facturile emise între anii 2012 și 2013 în ordinea cronologică.

SELECT FACTURI.NR_FACT, DATA_FACT,

SUM(CANTV*PRETV) VAL_FACTURA

FROM FACTURI

INNER JOIN VANZARI

ON FACTURI.NR_FACT=VANZARI.NR_FACT

WHERE EXTRACT(YEAR FROM DATA_FACT)

-BETWEEN 2012 AND 2013

GROUP BY DATA_FACT,FACTURI.NR_FACT

ORDER BY DATA_FACT;

9. Să se afișeze anul și sumele totale anuale

încasate în ordine cronologică.

SELECT EXTRACT(YEAR FROM Data_Fact) An,(Cantv*Pretv) Suma

FROM Facturi INNER JOIN Vanzari

ON Facturi.Nr_fact = Vanzari.Nr_fact

ORDER BY An ;

NR_FACTDATA_FAC

T VAL_FACTURA

5632 05/01/2013 465

1456 06/10/2013 1850

AN SUMA

2013 950

2013 90

2013 375

2013 900

Facultatea de Economie si Administrarea Afacerilor 2013

10. Să se afișeze anul, luna și sumele totale lunare încasate în ordine cronologică

descrescătoare.

SELECT EXTRACT(YEAR FROM Data_fact) AN,EXTRACT(MONTH FROM

Data_fact)Luna,SUM(SUMA)Valoare

FROM Incasari, Facturi

GROUP BY EXTRACT (YEAR FROM Data_fact),EXTRACT(MONTH

FROM Data_fact)

ORDER BY AN DESC;

AN LUNA VALOARE

2013 2 2305

2013 4 2305

2013 5 2305

2013 6 2305

11. Să se afișeze anul, denumirea clientului și valoarea totală anuală a vânzărilor efectuate

către fiecare client în parte in ordinea descrescătoare a anilor și crescător după denumirea

clientului.

SELECT EXTRACT(YEAR FROM Data_fact), DENCL , (SUM (Cantv *Pretv))Valoare FROM Clienti

INNER JOIN Facturi INNER JOIN Vanzari

ON Vanzari.Nr_fact=Facturi.Nr_fact

ON Facturi.CUI=Clienti.CUI

GROUP BY EXTRACT(YEAR FROM Data_fact),Dencl

ORDER BY EXTRACT(YEAR FROM Data_fact) DESC;

EXTRACT(YEARFROMDATA_FACT) DENCL VALOARE

2013 ATMOSPHERE 465

2013 TAKKO 1850

12. Să se afiseze anul, numele și prenumele agentului și valoarea totală anuală a

vânzărilor efectuate către fiecare agent în parte în ordinea descrescătoare a anilor pentru

anii 2012,2013.

Facultatea de Economie si Administrarea Afacerilor 2013

SELECT EXTRACT(YEAR FROM DATA_FACT),NUME,PRENUME,(SUM (CANTV * PRETV))

VALOARE FROM AGENTI

INNER JOIN FACTURI INNER JOIN VANZARI ON VANZARI.NR_FACT = FACTURI.NR_FACT

ON FACTURI. CODAG = AGENTI. CODAG

WHERE EXTRACT(YEAR FROM DATA_FACT) BETWEEN 2012 AND 2013 GROUP BY

EXTRACT(YEAR FROM DATA_FACT) ,NUME,PRENUME

ORDER BY EXTRACT(YEAR FROM DATA_FACT) DESC ;

EXTRACT(YEARFROMDATA_FACT) NUME PRENUME VALOARE

2013 IONESCU*** MARCEL 1850

2013 STEFANESCU IRINA 465

13. Să se afișeze numărul facturii, data facturii și valoarea discountului acordat facturii

respective în ordine cronologică.

SELECT NR_FACT,DATA_FACT,DISCOUNT FROM FACTURI ORDER BY NR_FACT ASC;

NR_FACT DATA_FACT DISCOUNT

100 02/12/2013 0

101 04/22/2013 10

1456 06/10/2013 0

5632 05/01/2013 0

14. Să se afișeze codul produsului, denumirea produsului, unitatea de măsură, cantitatea

maximă vândută și prețul minim de vânzare pentru fiecare produs în parte.

SELECT PRODUSE.CODP,DENP, UM, MAX(CANTV), MIN(PRETV)

FROM PRODUSE

INNER JOIN VANZARI

ON PRODUSE.CODP=VANZARI.CODP

GROUP BY PRODUSE.CODP, DENP, UM

ORDER BY CODP;

CODP DENP UMMAX(CANTV

) MIN(PRETV)

P1 CIZME DAMA BUC 10 95

P2 PANTOFI DAMA BUC 10 90

P3 GEANTA DAMA BUC 5 75

P4 ESARFA BUC 3 30

Facultatea de Economie si Administrarea Afacerilor 2013

15. Să se afișeze denumirea clientului, numele și prenumele agentului, nr. Facturii, data

facturii și valoarea facturii pentru toate facturile cu valorile mai mari de 10 și emise

2013.

SELECT CLIENTI.DenCL,AGENTI.Nume,AGENTI.Prenume,

FACTURI.

NR_Fact ,

FACTURI.Data_Fact ,sum(vanzari.cantv*vanzari.pretv)

AS VALFACT FROM CLIENTI , AGENTI , facturi , vanzari WHERE

CLIENTI.CUI=FACTURI.CUI AND FACTURI.CODAG = AGENTI.CODAG

AND FACTURI.NR_FACT = VANZARI.NR_FACT GROUP BY CLIENTI.DenCL ,

AGENTI.Nume , AGENTI.Prenume , FACTURI.NR_Fact , FACTURI.Data_Fact;

Laboratorul 9

1. Sa se creeze o vedere in care sa se afiseze numele,prenumele agentilor,numarul

documentului de incasat si data documentului de incasare.

CREATE OR REPLACE VIEW AGENTI_DATE AS SELECT AGENTI.NUME ,

AGENTI.PRENUME ,INCASARI.NR_DOC , DOCINC.data_doc

FROM AGENTI , FACTURI ,INCASARI , DOCINC

WHERE AGENTI.CODAG = FACTURI.CODAG AND FACTURI.NR_FACT =

INCASARI.NR_FACT AND INCASARI.NR_DOC = DOCINC.NR_DOC; VIEW CREATED

SELECT *FROM AGENTI_DATE;

NUME PRENUME NR_DOC DATA_DOC

IONESCU*** MARCEL 12345 -

STEFANESCU IRINA 27893 -

2. Sa se introduca o noua inregistrare in vederea creata la punctul 1. Este posibil? De ce?

INSERT INTO AGENTI_DATE VALUES ('IVASCU','CATALIN','10' ,'AUG-18-1955');

ORA-01779: cannot modify a column which maps to a non key-preserved table

DENCL NUME PRENUME NR_FACT DATA_FACT VALFACT

TAKKO IONESCU*** MARCEL 1456 06/10/2013 1850

ATMOSPHERE STEFANESCU IRINA 5632 05/01/2013 465

Facultatea de Economie si Administrarea Afacerilor 2013

3. Sa se creeze o vedere care sa contina angajatii barbati care in anul curent vor iesi la

pensie(vor implini 65 de ani.

CREATE OR REPLACE VIEW PENSIE_AGENTI AS SELECT *FROM AGENTI

WHERE Sex='M' AND EXTRACT(YEAR FROM SYSDATE)-EXTRACT(YEAR FROM

DATA_N)='65'; VIEW CREATED

SELECT *FROM PENSIE_AGENTI; NO DATA FOUND.

5. Sa se creeze o vedere care sa contina toate documentele de incasare astfel incat datele

tabelei documente de incasare sa nu poate fi modificate.

CREATE OR REPLACE VIEW Documente_incasari AS SELECT *FROM DOCINC WITH READ

ONLY CONSTRAINT doar_citire; VIEW CREATED

6. Sa se introduca un nou document in vederea creata la punctul 5. Sa se modifice datele

unui document si sa se stearga un document.

INSERT INTO Documente_incasari VALUES('12','CEC','DEC-15-212', '21');

ORA-42399: cannot perform a DML operation on a read-only view

UPDATE Documente_incasari SET TIP_DOC='C' WHERE TIP_DOC='CEC';

ORA-42399: cannot perform a DML operation on a read-only view

DELETE FROM Documente_incasari WHERE NR_DOC='12345';

ORA-42399: cannot perform a DML operation on a read-only view

7. Sa se stearga vederea creata la punctul 5.

DROP VIEW Documente_incasari; view dropped

Facultatea de Economie si Administrarea Afacerilor 2013