Proiect Oracle
-
Upload
roxana-nicoleta -
Category
Documents
-
view
90 -
download
0
description
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