Sunteți pe pagina 1din 6

CREATE TABLE Categorii (

IdCategorie INTEGER(3) NOT NULL,


Denumire VARCHAR(30),
CONSTRAINT Categorii_primary_key PRIMARY KEY(IdCategorie));

CREATE TABLE Tari (


IdTara INTEGER(3) NOT NULL,
Nume VARCHAR(30),
Indicativ VARCHAR(3),
CONSTRAINT Tari_primary_key PRIMARY KEY(IdTara));

CREATE TABLE Firme (


IdFirma INTEGER(3) NOT NULL,
Denumire VARCHAR(30),
Adresa VARCHAR(100),
IdTara INTEGER(3),
CONSTRAINT Firme_primary_key PRIMARY KEY(IdFirma),
CONSTRAINT Firme_foreign_key FOREIGN KEY(IdTara) REFERENCES Tari(IdTara));

CREATE TABLE Produse (


IdProdus INTEGER(3) NOT NULL,
IdCategorie INTEGER(3),
IdFirma INTEGER(3),
Model VARCHAR(30),
Pret INTEGER(10),
Moneda VARCHAR(3),
Cantitate INTEGER(4),
Caracteristici VARCHAR(200),
CONSTRAINT Produse_primary_key PRIMARY KEY(IdProdus),
CONSTRAINT Produse_foreign_key1 FOREIGN KEY(IdCategorie) REFERENCES
Categorii(IdCategorie),
CONSTRAINT Produse_foreign_key2 FOREIGN KEY(IdFirma) REFERENCES
Firme(IdFirma),
CONSTRAINT Produse_check CHECK(Pret>0));

INSERT INTO Categorii VALUES(1, 'Telefoane mobile');


INSERT INTO Categorii VALUES(2, 'Acumulatoare');
INSERT INTO Categorii VALUES(3, 'Carcase');
INSERT INTO Categorii VALUES(4, 'Huse');
INSERT INTO Categorii VALUES(5, 'Cartele prepay');

SELECT * FROM Categorii;

INSERT INTO Tari VALUES(1, 'Marea Britanie', 'GBR');


INSERT INTO Tari VALUES(2, 'Finlanda', 'FIN');
INSERT INTO Tari VALUES(3, 'Olanda', 'NED');
INSERT INTO Tari VALUES(4, 'Germania', 'GER');
INSERT INTO Tari VALUES(5, 'Romania', 'ROM');
INSERT INTO Tari VALUES(6, 'Italia', 'ITA');
INSERT INTO Tari VALUES(7, 'Japonia', 'JAP');
INSERT INTO Tari VALUES(8, 'Coreea de Sud', 'KOR');

SELECT * FROM Tari;

INSERT INTO Firme VALUES(1, 'Nokia', 'Helsinki', 2);


INSERT INTO Firme VALUES(2, 'Philips', 'Eindhoven', 3);
INSERT INTO Firme VALUES(3, 'Sony Erricson', 'Tokyo', 7);
INSERT INTO Firme VALUES(4, 'Samsung', 'Seul', 8);
INSERT INTO Firme VALUES(5, 'Gucci', 'Roma', 5);
INSERT INTO Firme VALUES(6, 'Orange', 'Bucuresti', 5);
INSERT INTO Firme VALUES(7, 'Connex', 'Bucuresti', 5);
INSERT INTO Firme VALUES(8, 'RomTelecom', 'Bucuresti', 5);
INSERT INTO Firme VALUES(9, 'Toshiba', 'Yokohama', 7);
INSERT INTO Firme VALUES(10, 'PlastRom', 'Bucuresti', 5);

SELECT * FROM Firme;

INSERT INTO Produse VALUES(1, 1, 1, '6600', 250, 'USD', 6, '655535 culori,


camera foto-video');
INSERT INTO Produse VALUES(2, 1, 4, 'P800', 300, 'USD', 8, '655535 culori,
camera foto-video 2 MPixeli');
INSERT INTO Produse VALUES(3, 1, 3, 'T650', 200, 'USD', 7, '32000 culori,
camera foto');
INSERT INTO Produse VALUES(4, 1, 5, 'Savy', 50, 'USD', 10, 'Infrarosii');
INSERT INTO Produse VALUES(5, 2, 9, 'Heavy 56', 20, 'USD', 20, 'Pentru Nokia
5110, 6150');
INSERT INTO Produse VALUES(6, 2, 9, 'Heavy 66', 30, 'USD', 15, 'Pentru Sony
Ericson');
INSERT INTO Produse VALUES(7, 3, 10, 'c1', 10, 'USD', 25, 'Pentru Nokia
3310');
INSERT INTO Produse VALUES(8, 3, 10, 'C2', 6, 'USD', 23, 'Pentru Nokia 5110');
INSERT INTO Produse VALUES(9, 3, 10, 'C3', 5, 'USD', 15, 'Pentru Philips
Savy');
INSERT INTO Produse VALUES(10, 4, 5, 'Husa Black', 12, 'USD', 35, 'Universala,
pentru telefoane medii');
INSERT INTO Produse VALUES(11, 5, 6, 'Cartela 5O', 5, 'USD', 20, 'Cartela
Orange Prepay 5$');
INSERT INTO Produse VALUES(12, 5, 6, 'Cartela 9O', 9, 'USD', 14, 'Cartela
Orange Prepay 9$+1$ bonus');
INSERT INTO Produse VALUES(13, 5, 7, 'Cartela 5C', 5, 'USD', 18, 'Cartela
Connex 5$');
INSERT INTO Produse VALUES(14, 5, 8, 'Cartela R', 135000, 'ROL', 42, 'Cartela
ROmTelecom 135000 lei, credit 1500000 lei');

SELECT * FROM Produse;


SELECT * FROM Firme;

-- Adaugam tabelei Firme coloana judet(jud).


ALTER TABLE Firme ADD(jud VARCHAR(1));

-- Stergem coloana jud.


ALTER TABLE Firme DROP COLUMN jud;

-- Adaugam tabelei Firme coloana judet(Jud).


ALTER TABLE Firme ADD(Jud VARCHAR(1));

SELECT * FROM Firme;

-- Schimbam lungimea campului judet


ALTER TABLE Firme MODIFY Jud VARCHAR(2);

UPDATE Firme SET Jud = 'OT' WHERE IdFirma = 1;


UPDATE Firme SET Jud = 'DJ' WHERE IdFirma = 2;
UPDATE Firme SET Jud = 'GJ' WHERE IdFirma = 3;
UPDATE Firme SET Jud = 'VL' WHERE IdFirma = 4;
UPDATE Firme SET Jud = 'MM' WHERE IdFirma = 5;
UPDATE Firme SET Jud = 'TM' WHERE IdFirma = 6;
UPDATE Firme SET Jud = 'AG' WHERE IdFirma = 7;
UPDATE Firme SET Jud = 'SB' WHERE IdFirma = 8;
UPDATE Firme SET Jud = 'CJ' WHERE IdFirma = 9;
UPDATE Firme SET Jud = 'AB' WHERE IdFirma = 10;
INSERT INTO Firme VALUES(10, 'PlastRom', 'Bucuresti', 5);

-- Dezactivare Foreign Key.


SET FOREIGN_KEY_CHECKS = 0;

UPDATE Firme SET Denumire = 'Ford', Adresa = 'Craiova', IdTara = '40' WHERE
IdFirma = 2;
-- Activare Foreign Key.
SET FOREIGN_KEY_CHECKS = 1;

SELECT * FROM Firme;

ALTER TABLE Firme DROP COLUMN JUD;


SELECT * FROM Firme;

-- Adaugam restrictia check pentru campul adresa din tabelul Firme.


ALTER TABLE Firme ADD CONSTRAINT CHK_adresa CHECK(Adresa = 'Bucuresti');
SELECT * FROM Firme;

CREATE TABLE Test AS SELECT IdProdus, IdCategorie, IdFirma, Model, Pret,


Moneda, Cantitate, Caracteristici
FROM Produse WHERE IdCategorie = 5;

SELECT * FROM Test;

-- Reduceti cu 4 cantitatea din produsul cu IdProdus = 3;


SELECT * FROM Produse;
UPDATE Produse SET Cantitate = Cantitate-4 WHERE IdProdus = 3;
SELECT * FROM Produse;

-- Sa se mareasca preturile produselor din categoria 2, adica cea a


acumulatoarelor cu 20%.
SELECT * FROM Produse;
UPDATE Produse SET Pret = Pret + 0.2*Pret WHERE IdCategorie = 2;
SELECT * FROM Produse;
SELECT * FROM Categorii;

-- Acumulatoarele Heavy 56 se scot la casare, iar in urma acestui fapt,


-- produsul respectiv se sterge din baza de date.
DELETE FROM Produse WHERE Model='Heavy 56'
AND IdCategorie = (SELECT IdCategorie FROM Categorii WHERE Denumire =
'Acumulatoare');
SELECT * FROM Produse;

-- Firma PlastRom isi muta sediul de la Bucuresti la Buzau.


UPDATE Firme SET Adresa = 'Buzau' WHERE Denumire = 'PlastRom';

-- Pe langa cele 10 bucati de telefoane Philips Savy existente, se mai aduc


inca 5 bucati.
UPDATE Produse SET Cantitate = 15 WHERE IdFirma =
(SELECT IdFirma FROM Firme WHERE Denumire = 'Philips')
AND Model = 'Savy';

-- Sa se afiseze toate produsle din categoria carcase.


SELECT * FROM Produse WHERE IdCategorie = 3;

-- Sa se afiseze datele despre firme


SELECT * FROM Firme;

-- Sa se afiseze toate produsele in functie de model si pret, ordonate


descrescator dupa pret.
SELECT Model, Pret FROM Produse ORDER BY PRET DESC;

-- Sa se afiseze modelele de produse care incep cu litera 'S'.


SELECT Model FROM Produse;
SELECT Model FROM Produse WHERE Model LIKE '%C';

-- Sa se afiseze cantitatile minime, maxime, medii pentru produsele din


categoria 1, cea a telefoanelor mobile.
SELECT MIN(cantitate), MAX(cantitate), AVG(cantitate) FROM PRODUSE WHERE
idcategorie=1;

-- Sa se afiseze denumirea, pretul si cantitatea tuturor produselor care sunt


din categoria ‘Husa’.
SELECT Model, Pret, Cantitate FROM Produse WHERE IdCategorie = (SELECT
IdCategorie
FROM Categorii WHERE Denumire = 'Huse');

-- Sa se afiseze tote denumirile firmelor care produc telefoane mobile.


SELECT Denumire FROM Firme WHERE IdFirma IN (SELECT IdFirma FROM Produse
WHERE IdCategorie = (SELECT IdCategorie FROM Categorii WHERE Denumire =
'Telefoane mobile'));

-- Sa se calculeze valoarea totala a produselor aflate in depozit.


SELECT SUM(pret*cantitate) FROM produse;

-- Sa se afiseze toate telefoanele mobile care au pret mai mare de 200 USD.
SELECT Model , Pret FROM Produse WHERE IdCategorie = 1 AND Pret > 200;

-- Sa se selecteze tarile de unde sunt firmele.


SELECT Denumire, Nume FROM Firme, Tari WHERE Firme.IdTara = Tari.IdTara;

-- Sa se selecteze preturile telefoanelor mobile cu valori intre 100 si 300 de


dolari, cu exceptia celor din modelul '6600'.
SELECT Pret FROM Produse WHERE Pret IN (100, 300) AND Model <> '6600';

-- Sa se afiseze valoarea totala a produselor pe fiecare tara.


SELECT SUM(P.Pret*P.Cantitate), T.IdTara FROM Produse P, Tari T, Firme F
WHERE P.IdFirma = F.IdFirma AND F.IdTara = T.IdTara GROUP BY T.IdTara;

-- Sa se afiseze numarul de produse pe fiecare categorie ordonata descrescator


in functie de numarul de produse.
SELECT COUNT(IdProdus), IdCategorie FROM Produse GROUP BY IdCategorie ORDER BY
COUNT(IdProdus) DESC;

-- Sa se creeze un view in care sa fie afisate firmele dn tarile lor,


exceptand Olanda.
CREATE VIEW Nume_Firme(Denumire, Adresa, Nume) AS SELECT F.Denumire, F.Adresa,
T.Nume FROM Firme F, Tari T
WHERE F.IdTara = T.IdTara AND T.Nume <> 'Olanda';

SELECT * FROM Nume_Firme;


SHOW CREATE VIEW nume_firme;

-- Sa se creeze un view cu caracteristicile modelelor telefoanelor mobile,


fara a putea fi actualizate.
CREATE VIEW Caracterizare(Caracteristici, Model) AS SELECT P.Caracteristici,
P.Model FROM Produse P WHERE IdCategorie = 1;
SELECT * FROM Caracterizare;

-- Sa se creeze index pentru tara.


CREATE INDEX Index_Tara ON Tari(IdTara);
SELECT * FROM Tari;
-- Sa se stearga indexul creat anterior.
ALTER TABLE Tari DROP INDEX Index_Tara;

S-ar putea să vă placă și