39
Baze de Date Gestiunea unui magazin de mobilă

Baze de Date - Gestiunea Unui Magazin de Mobila

Embed Size (px)

DESCRIPTION

Baza de date

Citation preview

Baze de Date - Gestiunea unui Magazin de Mobila

Baze de Date

Gestiunea unui magazin de mobil

Gestiunea unui magazin de mobila

Tema proiectului o reprezinta gestiunea unui magazin de mobila, si pentru aceasta am folosit urmatoarele tabele:

- TARI cu structura : id_tara number(5), denumire varchar2(25), continent varchar2 (20). Cheia primara o reprezinta id_tara.

- FURNIZORI cu structura : cod_furnizor number(5),nume_furnizor varchar2(20),adresa varchar2(30), email varchar2(20), telefon number(10), id_tara number(5). Cheia primara este cod_furnizor iar id_tara este foreign key din tabela TARI.

- PRODUSE cu structura : cod_art number(5),cod_furnizor number(5), denumire varchar2(20), material varchar2(20), pret_cump number(8,2). Cheia primara o reprezinta cod_art,iar cod_furnizor este foreign key din tabela FURNIZORI.

- LISTA_COMENZI cu structura : nr_comanda number(5) ,cod_art number(5), pret number(8,2), cantitate number(8). Cheia primara este nr_comanda si contine foreign key (cod_art) din tabela PRODUSE .

- COMENZI cu structura : nr_comanda number(5), data date, modalitate varchar2(20), id_client number(6), stare_comanda varchar2(20).Cheia primara este nr_comanda ,iar id_client e foreign key din tabela CLIENTI .

- CLIENTI cu structura : id_client number(6), prenume_client varchar2(20), nume_client vachar2(20), telefon varchar2(20), limita_credit number(9,2), email_client varchar2(20),data_nastere date. Cheia primara este id_client.

O tara poate contine unul sau mai multi furnizori (sau deloc).Fiecare tara trebuie sa apartina unui continent .

Un furnizor produce mai multe obiecte de mobilier identificate prin cod_art, un produs putand fi achizitonat de la un unic furnizor.

Un client poate solicita mai multe tipuri de produse intr-o singura comanda , prin intermediul tabelei LISTA_COMENZI care retine cantitatile comandate din fiecare produs.

Un client poate face mai multe comenzi, la date diferite, sau in aceeasi zi , poate adauga alte produse pe o comanda existenta.

Produsele de pe o comanda se livreaza in acelasi timp.

Pretul de cumprarare al articolelor de mobilier trebuie sa fie mai mic decat pretul de vanzare al lor, in vederea realizarii profitului.

SCHEMA CONCEPTUALA

CREAREA TABELEI TARI

CREATE TABLE TARI

( id_tara NUMBER (5),

denumire_tara VARCHAR2(25),

continent VARCHAR(20));

alter table TARI add constraint TARA_PK primary key (ID_TARA);

alter table TARI add constraint ID_TARA_NN check ("ID_TARA" IS NOT NULL);

alter table TARI add constraint CONTINENT_NN check ("CONTINENT" IS NOT NULL);

CREAREA TABELEI FURNIZORI

CREATE TABLE furnizori

(COD_FURNIZOR number(5) NOT NULL,

NUME_FURNIZOR varchar2(20) NOT NULL,

ADRESA varchar2(30),

EMAIL varchar2(20),

TELEFON NUMBER(10),

ID_TARA NUMBER(5));

alter table FURNIZORI add constraint FURNIZ_PK primary key (COD_FURNIZOR);

alter table FURNIZORI add constraint FURNIZ_FK foreign key (ID_TARA) references TARI (ID_TARA) on delete set null;

CREAREA TABELEI PRODUSE

CREATE TABLE produse

(cod_art NUMBER(5) NOT NULL ,

cod_furnizor NUMBER(5) NOT NULL,

denumire VARCHAR2(30) not null,

material VARCHAR2(20),

pret_cump NUMBER(8,2));

alter table PRODUSE add constraint Prod_PK primary key (COD_ART);

alter table PRODUSE add constraint Prod_FK foreign key (COD_FURNIZOR) references FURNIZORI (COD_FURNIZOR) ;

CREAREA TABELEI CLIENTI

CREATE TABLE clienti

(id_client NUMBER(6) NOT NULL,

prenume_client VARCHAR2(20),

nume_client VARCHAR2(20),

telefon VARCHAR2(20),

limita_credit NUMBER(9,2),

email_client VARCHAR2(30),

data_nastere DATE);

alter table CLIENTI add constraint CLIENTI_PK primary key (ID_CLIENT);

alter table CLIENTI add constraint LIMITA_CREDIT_MAX check (LIMITA_CREDIT 2000);

Sa se modifice numele tabelei PRODUSE in ART_MOBILIER

alter table PRODUSE rename to ART_MOBILIER;

Sa se introduca date in tabela TARI

insert into TARI values('101','OLANDA','EUROPA');

insert into TARI values('102','ITALIA','EUROPA');

insert into TARI values('103','SPANIA','EUROPA');

insert into TARI values('104','PORTUGALIA','EUROPA');

insert into TARI values('105','FRANTA','EUROPA');

insert into TARI values('106','AUSTRIA','EUROPA');

insert into TARI values('107','GRECIA','EUROPA');

insert into TARI values('108','BELGIA','EUROPA');

insert into TARI values('109','ANGLIA','EUROPA');

insert into TARI values('110','SUEDIA','EUROPA');

insert into TARI values('111','INDIA','ASIA');

insert into TARI values('112','CHINA','ASIA');

insert into TARI values('113','JAPONIA','ASIA');

insert into TARI values('114','SUA','AMERICA');

insert into TARI values('115','MEXIC','AMERICA');

insert into TARI values('116','COLUMBIA','AMERICA');

insert into TARI values('117','VENEZUELA','AMERICA');

insert into TARI values('118','GERMANIA','EUROPA');

insert into TARI values('119','CANADA','AMERICA');

Sa se introduca date in tabela CLIENTI

insert into CLIENTI values (130, 'MARIA', 'IORGA', null, 600, '[email protected]' , to_date('21-03-1978', 'dd-mm-yyyy'));

insert into CLIENTI values (131, 'OCTAVIAN', 'MARIN', 0723456273, 1000, '[email protected]', to_date('02-07-1977', 'dd-mm-yyyy'));

insert into CLIENT values (132, 'MIHAI', 'MIHAILA', 0762134516, 550, [email protected]', to_date('11-10-1981', 'dd-mm-yyyy'));

insert into CLIENTI values (133, 'BOGDAN', 'NASTASE', 0745167890, 760, '[email protected]', to_date('15-05-1985', 'dd-mm-yyyy'));

insert into CLIENTI values (134, 'IOANA', 'IONESCU', null, 1200, '[email protected]', to_date('21-07-1980', 'dd-mm-yyyy'));

insert into CLIENTI values (135, 'COSMINA', 'PETRESCU', 0762681341, 900, '[email protected]', to_date('09-12-1979', 'dd-mm-yyyy'));

insert into CLIENTI values (136, 'VLAD', 'SOIMAN', 0754123875, 1500, '[email protected]', to_date('13-12-1988', 'dd-mm-yyyy'));

insert into CLIENTI values (137, 'ALEXANDRU', 'VASILE', 0723411325, 950, '[email protected]', to_date('09-08-1977', 'dd-mm-yyyy'));

insert into CLIENTI values (138, 'DANA', 'MIHAILA', 0742179367, 1300, '[email protected]', to_date('09-12-1984', 'dd-mm-yyyy'));

insert into CLIENTI values (139, 'IONUT', 'RADU', 0762168134, 900, '[email protected]', to_date('08-08-1988', 'dd-mm-yyyy'));

insert into CLIENTI values (140, 'ALEXANDRA', 'MARIN', 0721134753, 1700, '[email protected]', to_date('19-05-1984', 'dd-mm-yyyy'));

insert into CLIENTI values (141, 'ANDREEA', 'BURCEA', 0722178753, 790, '[email protected]', to_date('17-02-1986', 'dd-mm-yyyy'));

insert into CLIENTI values (142, 'OANA', 'IONESCU', 072134753, 670, '[email protected]', to_date('27-05-1985', 'dd-mm-yyyy'));

insert into CLIENTI values (143, 'MIHAI', 'ANDREESCU', 0741179753, 950, '[email protected]', to_date('31-01-1986', 'dd-mm-yyyy'));

insert into CLIENTI values (144, 'MIRCEA', 'VASILE', 0721347153, 1700, '[email protected]', to_date('19-07-1986', 'dd-mm-yyyy'));

insert into CLIENTI values (145, 'ROBERT', 'IONESCU', 0745213721, 840, '[email protected]', to_date('11-12-1981', 'dd-mm-yyyy'));

Sa se introduca date in tabela COMENZI

insert into COMENZI values (1001, to_date('17-08-2005', 'dd-mm-yyyy'), 'cash', 131, 'efectuata');

insert into COMENZI values (1002, to_date('23-12-2005', 'dd-mm-yyyy'), 'credit', 144, 'efectuata');

insert into COMENZI values (1003, to_date('24-12-2005', 'dd-mm-yyyy'), 'cash', 132, 'efectuata');

insert into COMENZI values (1004, to_date('12-02-2006', 'dd-mm-yyyy'), 'cash', 131, 'efectuata');

insert into COMENZI values (1005, to_date('23-03-2006', 'dd-mm-yyyy'), 'transfer bancar', 135, 'efectuata');

insert into COMENZI values (1006, to_date('17-04-2006', 'dd-mm-yyyy'), 'cash', 133, 'efectuata');

insert into COMENZI values (1007, to_date('24-05-2006', 'dd-mm-yyyy'), 'cash', 131, 'efectuata');

insert into COMENZI values (1008, to_date('08-08-2006', 'dd-mm-yyyy'), 'credit', 137, 'efectuata');

insert into COMENZI values (1009, to_date('17-08-2006', 'dd-mm-yyyy'), 'cash', 131, 'efectuata');

insert into COMENZI values (1010, to_date('17-12-2006', 'dd-mm-yyyy'), 'transfer bancar', 142, 'efectuata');

insert into COMENZI values (1011, to_date('25-04-2007', 'dd-mm-yyyy'), 'cash', 142, 'efectuata');

insert into COMENZI values (1012, to_date('30-09-2007', 'dd-mm-yyyy'), 'credit', 145, 'efectuata');

insert into COMENZI values (1013, to_date('19-01-2008', 'dd-mm-yyyy'), 'cash', 142, 'efectuata');

insert into COMENZI values (1014, to_date('17-03-2008', 'dd-mm-yyyy'), 'credit', 137, 'efectuata');

insert into COMENZI values (1015, to_date('23-07-2008', 'dd-mm-yyyy'), 'transfer bancar', 131, 'efectuata');

insert into COMENZI values (1016, to_date('17-10-2008', 'dd-mm-yyyy'), 'cash', 145, 'in asteptare');

insert into COMENZI values (1017, to_date('24-10-2008', 'dd-mm-yyyy'), 'credit', 131, 'efectuata');

insert into COMENZI values (1018, to_date('14-11-2008', 'dd-mm-yyyy'), 'credit', 142, 'in asteptare');

insert into COMENZI values (1019, to_date('23-11-2008', 'dd-mm-yyyy'), 'cash', 145, 'efectuata');

insert into COMENZI values (1020, to_date('30-11-2008', 'dd-mm-yyyy'), 'cash', 136, 'in asteptare');

insert into COMENZI values (1021, to_date('10-12-2008', 'dd-mm-yyyy'), 'credit', 133, 'in asteptare');

insert into COMENZI values (1022, to_date('18-12-2008', 'dd-mm-yyyy'), 'cash', 145, 'in asteptare');

insert into COMENZI values (1023, to_date('22-12-2008', 'dd-mm-yyyy'), 'transfer bancar', 136, 'in asteptare');

insert into COMENZI values (1024, to_date('4-02-2009', 'dd-mm-yyyy'), 'credit', 144, 'in asteptare');

insert into COMENZI values (1025, to_date('7-01-2009', 'dd-mm-yyyy'), 'cash', 140, 'in asteptare');

Sa se introduca date in tabela FURNIZORI

insert into FURNIZORI values (2001, 'AVILA', 'STR. Revolutiei', '[email protected]',null,101);

insert into FURNIZORI values (2002, 'MOBEXPERT', 'STR. LIBERTATII', '[email protected]',07243676,115);

insert into FURNIZORI values (2003, 'KIKA', 'STR. EROIILOR', '[email protected]',0756961778,115);

insert into FURNIZORI values (2004, 'ECO', 'STR. M.BROWN', '[email protected]',0732444680,113);

insert into FURNIZORI values (2005, 'MOBFAN', 'STR. LIBERTY', '[email protected]',079057685,114);

insert into FURNIZORI values (2006, 'INVESTGROUP', 'STR. DUST', '[email protected]',null,110);

insert into FURNIZORI values (2007, 'PRACTIKER', 'STR. Elizabeth', '[email protected]',012376586,102);

insert into FURNIZORI values (2008, 'HOME', 'STR. Peace', '[email protected]',076423311,115);

insert into FURNIZORI values (2009, 'DREAM HOUSE', 'STR. Blue', '[email protected]',null,107);

insert into FURNIZORI values (2010, 'M-STORE', 'STR. Life', '[email protected]',null,117);

Sa se introduca date in tabela PRODUSE

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3001, 2001, 'canapea extensibila', 'piele',915 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3002, 2002, 'pat 1pers', 'lemn',220 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3003, 2003, 'pat 2pers etajat', 'lemn',250 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3004, 2004, 'pat 2pers', 'metal', 345 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3005, 2005, 'canapea extensibila', 'material textil' ,235 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3006, 2006, 'scaun cu spatar', 'lemn' ,110 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3007, 2007, 'fotoliu', 'piele',245 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3008, 2007, 'fotoliu', 'material textil', 190 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3009, 2008, 'pat 2pers', 'metal' ,295 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3010, 2009, 'pat 1pers', 'lemn', 215 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3011, 2010, 'scaun cu spatar', 'metal',135 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3012, 2010, 'canapea', 'piele',720 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3013, 2010, 'masa bucatarie', 'lemn', 190);

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3014, 2010, 'sifonier', 'lemn' ,245);

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3015, 2001, 'canapea', 'material textil', 235 );

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3016,2008,masa bucatarie,sticla,230);

insert into PRODUSE (COD_ART, COD_FURNIZOR, DENUMIRE,MATERIAL, PRET_CUMP) values (3017,2008,birou,lemn,260);

Sa se introduca date in tabela LISTA_COMENZI

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1001, 3001,1100, 2);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1002, 3003, 900, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1003, 3010, 300, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1004, 3008, 250, 3);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1012, 3001, 1150, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1006, 3013, 240, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1013, 3001, 1058, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1008, 3005, 330, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1009, 3009, 348, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1010, 3012, 934, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1011, 3011, 150, 4);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1015, 3006, 130, 8);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1014, 3005, 300, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1019, 3002, 255,1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1022, 3012, 900, 1);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1023, 3008, 220, 3);

insert into LISTA_COMENZI (NR_COMANDA, COD_ART, PRET, CANTITATE)

values (1025, 3017, 310, 1);

Sa se creeze o noua tabela PROD1 cu aceeasi structura cu a tabelei PRODUSE care sa contina informatii despre produsele de la furnizorul cu codul 2010.

create table PROD1 as select * from PRODUSE where cod_furnizor=2010;

Sa se creeze o tabele PROD2 cu aceeasi structura ca a tabelei PRODUSE.Apoi sa se insereze produsele cu preturi cuprinse intre 100 si 500

create table PROD2 as select * from PRODUSE where 2=3;

insert into PROD2 select * from PRODUSE where PRET_CUMP between 100 and 500;

Sa se elimine restrictia conform careia prenumele clientilor nu tb sa fie nul, din tabela CLIENTI.

alter table CLIENTI drop constraint PRENUME_NN;

Sa se adauge o noua coloana Stoc la tabela produse

alter table produse add stoc number(20);

Sa se stearga coloana STOC din tabela PRODUSE

alter table PRODUSE drop column stoc;

Sa se modifice campul id_furnizor din tabela PRODUSE pentru articolul cu codul 3004 atribuindu-i valoarea 2005

update PRODUSE set COD_FURNIZOR=2005 where COD_ART=3004;

Sa se modifice campul data din tabela PRODUSE cu data actuala pentru cele din anul 2009

update COMENZI set data=sysdate where extract(year from data)=2009;

Sa se modifice campurile pret si cantitate din tabele LISTA_COMENZI pentru nr_comanda=1001 si 1004, astfel incat pretul sa creasca cu 10% iar cantitatea sa scada cu 1

update LISTA_COMENZI

set PRET=PRET*1.1, CANTITATE=CANTITATE-1

where NR_COMANDA in (1001,1004);

Sa se modifice campul stare_comanda in "efectuata" din tabela COMENZI pentru inregistrarile mai vechi de 2007

update COMENZI set STARE_COMANDA='efectuata' where extract(year from data)=2);

Sa se actualizeze limita_credit a clientului cu numele Soiman cu cea a clientului cu id-ul 137.

update CLIENTI

set LIMITA_CREDIT=( select LIMITA_CREDIT

from CLIENTI

where ID_CLIENT=137)

where upper(NUME_CLIENT)='SOIMAN';

Sa se stearga datele din tabela LISTA_COMENZI pentru inregistrarile solicitate in cantitate mai mare sau egala cu 3 si care au minim 3 luni de la data comandarii.

delete from LISTA_COMENZI

where cantitate>=4 and nr_comanda in (select nr_comanda from comenzi where months_between(sysdate,data)>=3);

Sa se actualizeze tabela PROD2 astfel incat pret_cump sa fie egal cu pret mediu din tabela LISTA_COMENZI. Apoi sa se realizeze o actualizare prin comparatie intre tabela PROD2 si PRODUSE astfel incat cele doua tabele sa contina date identice.

update PROD2 set pret_cump=( select avg(pret) from LISTA_COMENZI);

merge into PROD2

using PRODUSE

on (PROD2.cod_art=PRODUSE.cod_art)

when matched then update

set PROD2.pret_cump=PRODUSE.pret_cump

when not matched then insert (prod2.pret_cump,prod2.cod_art,prod2.cod_furnizor,prod2.denumire,prod2.material)

values (produse.pret_cump,produse.cod_art,produse.cod_furnizor,produse.denumire,produse.material) ;

Sa se afiseze produsele si cantitatile comandate din fiecare produs.

select p.cod_art,p.denumire,p.material,c.cantitate

from lista_comenzi c, produse p

where p.cod_art=c.cod_art;

Sa se afiseze produsele comandate si cantitatile lor, impreuna cu produsele necomandate,ordonate dupa denumire.

Select p.cod_art,p.denumire,lc.cantitate,p.pret_cump

From produse p,lista_comenzi lc

Where p.cod_art=lc.cod_art(+)

order by p.denumire;

Sa se regaseasca produsele a caror comanda are valoarea cuprinsa intre 800 si 2000.

SELECT p.denumire, lc.pret*lc.cantitate valoare

FROM produse p, lista_comenzi lc

WHERE p.cod_art=lc.cod_art AND lc.pret*lc.cantitate BETWEEN 800 AND 2000;

Sa se selecteze furnizorii care sunt din aceeasi tara cu furnizorul 'HOME'.

SELECT *

FROM furnizori

WHERE id_tara=

( SELECT id_tara FROM furnizori WHERE upper(nume_furnizor)='HOME');

Sa se afiseze valoarea totala a comenzilor din anul 2008.

SELECT sum(lc.pret*lc.cantitate) valoare_totala

FROM lista_comenzi lc, comenzi c

WHERE lc.nr_comanda=c.nr_comanda AND extract(year from data)=2008;

Sa se afiseze cantitatea din fiecare articol comandat.

SELECT cod_art,avg(cantitate)

FROM lista_comenzi

GROUP BY cod_art

ORDER BY avg(cantitate);

Sa se afiseze numai comenzile care au valoarea intre 100 si 1000 ordonate descrescator dupa valoare.

SELECT comenzi.nr_comanda, sum(pret*cantitate)

FROM comenzi, lista_comenzi

WHERE comenzi.nr_comanda=lista_comenzi.nr_comanda

GROUP BY comenzi.nr_comanda

HAVING sum(pret*cantitate) BETWEEN 100 AND 1000

ORDER BY sum(pret*cantitate) desc;

Sa se afiseze denumirea si materialul articolelor care nu au fost comandate;

SELECT ' ARTICOLUL '||denumire|| ' din '|| material ||' nu a fost comandat'

FROM produse

WHERE cod_art NOT IN (SELECT cod_art FROM lista_comenzi);

Sa se afiseze furnizorii din continentele al caror nume incepe cu litera A.

SELECT furnizori.nume_furnizor,tari.continent

FROM furnizori,tari

WHERE furnizori.id_tara=tari.id_tara AND substr(continent,1,1)='A';

Sa se afiseze comenzile incheiate in 2005. Se va rotunji data la prima zi din luna corespunzatoare daca data este in prima jumatatea a lunii sau la prima zi din luna urmatoare.

SELECT nr_comanda, data, round(data, 'month') data_aproximata

FROM comenzi

WHERE extract(year from data)=2005;

Sa se afiseze perioada de timp corespunzatoare(in saptamani) intre data incheierii celei mai valoroase comenzi si data curenta.

SELECT c.nr_comanda, round((sysdate-c.data)/7), lc.pret*lc.cantitate

FROM comenzi c,lista_comenzi lc

WHERE c.nr_comanda=lc.nr_comanda AND lc.pret*lc.cantitate=(SELECT MAX(pret*cantitate) FROM lista_comenzi);

Sa se calculeze diferit stocul pt plante astfel: daca este din lemn stocul este de 1500, daca esti din sticla stocul e de 100, iar daca e din metal stocul este de 2000.

SELECT p.cod_art,p.denumire,

DECODE (lower(p.material),'lemn',1500,'sticla',100, 'metal',2000,0) stoc

FROM produse p;

Sa se clasifice produsele in functie de pretul lor astfel:daca pretul este mai mic de 150 atunci este ieftin,daca pretul este intre 150 si 300 atunci este considerat mediu, daca pretul este intre 300 si 1200 atunci este considerat scump;

select p.cod_art,p.denumire,p.pret_cump,

case

when pret150 and pret300 and pret=2

INTERSECT

SELECT p.denumire, sum(l.pret*l.cantitate), count(nr_comanda)

FROM produse p, lista_comenzi l

WHERE p.cod_art=l.cod_art

GROUP BY p.denumire

HAVING sum(l.pret*l.cantitate) NOT IN (1000,1500,2000);

Sa se afiseze clientii care au limita de credit intre 0-600, cei care au limita intre 700-950 si cei care au limita de credit peste 1000.

SELECT nume_client,prenume_client,id_client,limita_credit

FROM clienti

WHERE limita_credit=700 AND limita_credit=1000;

Sa se afiseze comenzile din 2008 ,modul de plata,starea_comenzii si id-ul clientului care a facut comanda.

SELECT c.nr_comanda,c.data,c.modalitate,c.stare_comanda,cl.id_client

FROM comenzi c, clienti cl

WHERE cl.id_client=c.id_client and extract(year from data)=2008;

Sa se realizeze o tabela virtuala care sa contina numai furnizorii din continentul Europa.

CREATE VIEW furnizori_v

AS

SELECT * FROM furnizori

WHERE id_tara IN ( SELECT id_tara FROM tari WHERE upper(continent)='EUROPA');

Sa se realizeze o tabela virtuala cu comenzile din 2008

CREATE VIEW comenzi_vw

AS

SELECT comenzi.*

FROM comenzi

WHERE to_char( 'YYYY',comenzi.data)='2009';

Sa se afiseze datele din tabela virtuala furnizori_v.

select * from furnizori_v;

Sa se stearga tabela virtuala furnizori_v

drop view furnizori_v;

Sa se creeze un index pt tabela clienti pe coloana nume_client.

CREATE INDEX cl_nume_idx ON clienti(nume_client);

Sa se stearga indexul cl_nume_idx.

DROP INDEX cl_nume_idx;

Sa se creeze o secventa pentru asigurarea unicitatii cheii primare din tabela comenzi.

CREATE SEQUENCE seq_nr_comanda

START WITH 1001

INCREMENT BY 1

MAXVALUE 20000 NOCYCLE;

Sa se modifice pasul de incrementare pt secventa seq_nr_comnda.

ALTER sequence SEQ_nr_comanda INCREMENT BY 2;

Sa se vizualizeze informatiile despre secventele utilizatorilor.

SELECT * FROM user_sequences;

Sa se stearga secventa seq_nr_comanda.

DROP SEQUENCE seq_nr_comanda;

Sa se creeze un sinonim pentru tabela produse

CREATE PUBLIC SYNONYM art_de_mobilier FOR PRODUSE;

Sa se creeze un sinonim pt tabela tari

CREATE PUBLIC SYNONYM tari_exportatoare FOR TARI;

Sa se vizualizeze sinonimele.

SELECT * FROM user_synonyms;

Sa se stearga sinonimul creat.

DROP SYNONYM art_de_mobilier;

Sa se stearga toate tabelele

DROP TABLE PRODUSE CASCADE CONSTRAINTS;

DROP TABLE LISTA_COMENZI CASCADE CONSTRAINTS;

DROP TABLE COMENZI CASCADE CONSTRAINTS;

DROP TABLE CLIENTI CASCADE CONSTRAINTS;

DROP TABLE FURNIZORI CASCADE CONSTRAINTS;

DROP TABLE TARI CASCADE CONSTRAINTS;

PAGE

4