Documente Academic
Documente Profesional
Documente Cultură
DESCRIEREA PROBLEMEI
Pentru crearea tabelelor și definirea legăturilor dintre ele, s-a obținut o astfel de
bază de dată:
COMENZI RULATE
ANGAJAȚI
CREATE TABLE ANGAJATI2(
id_angajat NUMBER(4), nume VARCHAR2(15),prenume VARCHAR(15), functia
VARCHAR(15), data_angajare DATE, salariu NUMBER(10), email VARCHAR(20),
data_nastere DATE,
CONSTRAINT angajati2_pk PRIMARY KEY(id_angajat) );
FURNIZORI
CREATE TABLE Furnizori(
id_furnizor NUMBER(4), denumire_firma VARCHAR(15), reprezentant_firma
VARCHAR2(15), nr_contact NUMBER(10), email VARCHAR2(20),
CONSTRAINT furnizori_pk PRIMARY KEY(id_furnizor) );
PRODUSE
CREATE TABLE Produse2(
id_produs NUMBER(4), denumire VARCHAR2(15), pret NUMBER(10), id_client
NUMBER(4),id_materii NUMBER(4),
CONSTRAINT Produse2_pk PRIMARY KEY(id_produs),
CONSTRAINT Produse2_fk FOREIGN KEY(id_client) REFERENCES Clienti2,
CONSTRAINT Produse2_fk2 FOREIGN KEY(id_materii) REFERENCES MateriiPrime);
CLIENTI
CREATE TABLE Clienti2(
id_client NUMBER(4), nume_client VARCHAR2(15), prenume_client VARCHAR2(15),
nr_telefon NUMBER(15), adresa VARCHAR2(40),
CONSTRAINT Clienti2_pk PRIMARY KEY(id_client) );
TRANZACTIE
CREATE TABLE Tranzactie2(
id_tranzactie NUMBER(4), data_tranzactie DATE, id_angajat NUMBER(4),
CONSTRAINT Tranzactie2_pk PRIMARY KEY(id_tranzactie),
CONSTRAINT Tranzactie2_fk FOREIGN KEY(id_angajat) REFERENCES Angajati2 );
DETALII TRANZACTIE
CREATE TABLE Detalii_Tranzactie2(
id_tranzactie NUMBER(4),id_produs NUMBER(4), cantitate NUMBER(10), id_client
NUMBER(4),
CONSTRAINT Detalii_Tranzactie2_fk1 FOREIGN KEY(id_tranzactie) REFERENCES
Tranzactie2,
CONSTRAINT Detalii_Tranzactie2_fk2 FOREIGN KEY(id_produs) REFERENCES
Produse2 ,
CONSTRAINT Detalii_Tranzactie2_fk3 FOREIGN KEY(id_client) REFERENCES
Clienti2);
MATERII PRIME
CREATE TABLE MateriiPrime(
id_materii NUMBER(4), denumire VARCHAR(15), pret NUMBER(25), id_furnizor
NUMBER(4),
CONSTRAINT MateriiPprime_pk PRIMARY KEY (id_materii),
CONSTRAINT MateriiPprime_fk FOREIGN KEY(id_furnizor) REFERENCES Furnizori);
ADAUGARE TABEL:
ANGAJATI
INSERT INTO angajati2 VALUES(1,'Ion','Amalia','Cofetar',
TO_DATE('03.03.2009','DD.MM.YYYY'), 2000, 'iamalia@gmail.com',
TO_DATE('13.03.1990','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(2,'Zip','Cosmin','Curier',
TO_DATE('12.09.2011','DD.MM.YYYY'), 1300, 'zcosmin@gmail.com',
TO_DATE('30.12.1999','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(3,'Costache','Marin','Manager',
TO_DATE('17.01.2008','DD.MM.YYYY'), 2500, 'cmarin@gmail.com',
TO_DATE('22.10.1995','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(4,'Priscu','Roxana','Vanzator',
TO_DATE('01.09.2009','DD.MM.YYYY'), 1500, 'proxana@gmail.com',
TO_DATE('31.01.2000','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(5,'Popovici','Iulia','Asistent',
TO_DATE('15.05.2008','DD.MM.YYYY'), 1200, 'piulia@gmail.com',
TO_DATE('20.07.1999','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(6,'Stafie','Floare','Ingrijitor',
TO_DATE('14.06.2010','DD.MM.YYYY'), 1000, 'sfloare@gmail.com',
TO_DATE('10.06.1980','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(7,'Sifon','Ana','Director',
TO_DATE('09.03.2007','DD.MM.YYYY'), 3500, 'sana@gmail.com',
TO_DATE('25.02.1990','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(8,'Tanase','Diana','Vanzator',
TO_DATE('22.02.2010','DD.MM.YYYY'), 1100, 'tdiana@gmail.com',
TO_DATE('12.11.1998','DD.MM.YYYY'));
INSERT INTO angajati2 VALUES(9,'Ciupic','Teoodora','Asistent',
TO_DATE('06.12.2011','DD.MM.YYYY'), 1200, 'cteodora@gmail.com',
TO_DATE('14.08.1997','DD.MM.YYYY'));
CLIENTI
INSERT INTO Clienti2 VALUES(1,'Sarac','Ionut',0768234567,'Bucuresti');
INSERT INTO Clienti2 VALUES(2,'Capra','Matei',0754382345,'Buzau');
INSERT INTO Clienti2 VALUES(3,'Ciulin','Radian',0765888333,'Giurgiu');
INSERT INTO Clienti2 VALUES(4,'Pincu','Ana-Maria',0727761222,'Alexandria');
INSERT INTO Clienti2 VALUES(5,'Costache','Cristina',0768146359,'Bucuresti');
INSERT INTO Clienti2 VALUES(6,'Dumitru','Elena',0786653459,'Calarasi');
FURNIZORI
INSERT INTO Furnizori VALUES(1,'Tefal','Soare',0768999345,'tefal@gmail.com');
INSERT INTO Furnizori VALUES(2,'Global','Lupescu',0764338944,'global@gmail.com');
INSERT INTO Furnizori VALUES(3,'Nutella','Ionescu',0766663214,'nutella@gmail.com');
INSERT INTO Furnizori VALUES(4,'Oliroby','Popescu',0798765432,'oliroby@gmail.com');
INSERT INTO Furnizori VALUES(5,'Muller','Lacrima',0769116538,'muller@gmail.com');
PRODUSE
INSERT INTO Produse2 VALUES(1,'Tort',75,5,5);
INSERT INTO Produse2 VALUES(2,'Clatite',12,3,1);
INSERT INTO Produse2 VALUES(3,'Biscuiti',25,4,3);
INSERT INTO Produse2 VALUES(4,'Amandina',14,2,7);
INSERT INTO Produse2 VALUES(5,'Budinca',10,5,2);
INSERT INTO Produse2 VALUES(6,'Macarons',54,2,4);
INSERT INTO Produse2 VALUES(7,'Placinta',16,1,6);
TRANZACTIE
INSERT INTO Tranzactie2 VALUES(1,TO_DATE('02.03.2010','DD.MM.YYYY'),1);
INSERT INTO Tranzactie2 VALUES(2,TO_DATE('25.02.2012','DD.MM.YYYY'),8);
INSERT INTO Tranzactie2 VALUES(3,TO_DATE('12.12.2009','DD.MM.YYYY'),6);
INSERT INTO Tranzactie2 VALUES(4,TO_DATE('04.07.2010','DD.MM.YYYY'),9);
INSERT INTO Tranzactie2 VALUES(5,TO_DATE('17.05.2011','DD.MM.YYYY'),8);
INSERT INTO Tranzactie2 VALUES(6,TO_DATE('30.09.2008','DD.MM.YYYY'),7);
INSERT INTO Tranzactie2 VALUES(7,TO_DATE('01.10.2009','DD.MM.YYYY'),2);
DETALII_TRANZACTIE
INSERT INTO Detalii_Tranzactie2 VALUES(1,4,2,2);
INSERT INTO Detalii_Tranzactie2 VALUES(6,3,6,5);
INSERT INTO Detalii_Tranzactie2 VALUES(2,6,10,6);
INSERT INTO Detalii_Tranzactie2 VALUES(3,2,3,1);
INSERT INTO Detalii_Tranzactie2 VALUES(7,5,20,3);
INSERT INTO Detalii_Tranzactie2 VALUES(5,1,3,5);
INSERT INTO Detalii_Tranzactie2 VALUES(4,2,1,2);
MATERII PRIME
INSERT INTO MateriiPrime VALUES(1,'Faina',50,2);
INSERT INTO MateriiPrime VALUES(2,'Oala',40,1);
INSERT INTO MateriiPrime VALUES(3,'Ciocolata',62,3);
INSERT INTO MateriiPrime VALUES(4,'Cafea',75,2);
INSERT INTO MateriiPrime VALUES(5,'Piscoturi',54,4);
INSERT INTO MateriiPrime VALUES(6,'Iaurt',34,5);
INSERT INTO MateriiPrime VALUES(7,'Crema frisca',40,2);
ACTUALIZARE
Gruparea datelor din tabela angajați după data nașterii și numărul de angajați
SELECT EXTRACT(YEAR FROM data_nastere) AS an,
COUNT(*) AS "Nr. angajati"
FROM angajati2
GROUP BY EXTRACT(YEAR FROM data_nastere);
Gruparea datelor din tabela tranzactii2 după dată și calcularea numărului de
tranzacții efectuate zilnic
SELECT data_tranzactie,COUNT(*) AS "Tranzactii efectuate"
FROM tranzactie2
GROUP BY data_tranzactie;
Gruparea datelor din angajati2 și calcularea a câte salarii are fiecare funcție
SELECT COUNT(salariu), functia
FROM angajati2
GROUP BY functia;
Gruparea datelor din frunizori și calcularea reprezentanților fiecărei firme
SELECT denumire_firma, COUNT(reprezentant_firma)
FROM furnizori
GROUP BY denumire_firma;
/
SELECT * FROM materii_produse;
Să se creeze o tabelă virtuală care să conțină prețul materiilor prime, denumirea,
denumirea firmei și reprezentantul firmei
CREATE VIEW furnizor_materii
AS SELECT m.pret,m.denumire,f.denumire_firma,f.reprezentant_firma
FROM materiiprime m, furnizori f
WHERE m.id_furnizor=f.id_furnizor;
/
SELECT * FROM furnizor_materii;