Rezolvari Baze de Date 2

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

----- 2.

STRUCTURA TABELELOR SI INSERARE DATE

DROP TABLE CONTRACTE;

DROP TABLE IMOBILE CASCADE CONSTRAINT;

CREATE TABLE IMOBILE (

CodImobil NUMBER(3),

TipImobil VARCHAR2(10),

Suprafata VARCHAR2(10),

NrCamere NUMBER(2),

Locatie VARCHAR2(9),

AnConstructie NUMBER(4),

TipAsigurare VARCHAR2(8),

CONSTRAINT pk_codimobil PRIMARY KEY (CodImobil),

CONSTRAINT ck_tipimobil CHECK (TipImobil IN ('Garsoniera', 'Apartament', 'Vila')),

CONSTRAINT ck_locatie CHECK (Locatie IN ('Zona A', 'Zona B', 'Periferie')),

CONSTRAINT ck_anconstructie CHECK (AnConstructie < 2022),

CONSTRAINT ck_tipasigurare CHECK (TipAsigurare IN ('Locuinta', 'Bunuri'))

);

CREATE TABLE CONTRACTE (

NrContract NUMBER(4),

CodImobil NUMBER(3),

TipContract VARCHAR2(10),

DataContract DATE DEFAULT SYSDATE,

Valoare NUMBER(5) NOT NULL,

NumeAgent VARCHAR2(30),

CONSTRAINT pk_nrContractImobil PRIMARY KEY (NrContract, CodImobil),

CONSTRAINT ck_tipcontract CHECK (TipContract IN ('Inchiriere', 'Vanzare')),

CONSTRAINT ck_valoare CHECK (Valoare > 0)


);

INSERT INTO IMOBILE (CodImobil, TipImobil, Suprafata, NrCamere, Locatie, AnConstructie, TipAsigurare)

VALUES (1, 'Garsoniera', '1000', 1, 'Periferie', 2018, 'Locuinta');

INSERT INTO IMOBILE ( )

VALUES (2, 'Apartament', '20000', 3, 'Zona A', 2019, 'Locuinta');

INSERT INTO CONTRACTE(NrContract, CodImobil, TipContract, Valoare, NumeAgent)

VALUES (1, 1, 'Vanzare', 2000, 'Florea Claudiu');

INSERT INTO CONTRACTE(NrContract, CodImobil, TipContract, Valoare, NumeAgent)

VALUES (2, 2, 'Inchiriere', 5000, 'Ionel Iacob');

--- 3. MODIFICARE STRUCTURA, SECVENTE SI ADAUGARE NOI INREGISTRARI

ALTER TABLE CONTRACTE ADD (Moneda VARCHAR2(4));

ALTER TABLE CONTRACTE ADD CONSTRAINT Moneda CHECK (Moneda IN('RON','EURO'));

UPDATE CONTRACTE

SET MONEDA = 'EURO'

WHERE NRCONTRACT = 1;

UPDATE CONTRACTE

SET Moneda = 'RON'

WHERE NRCONTRACT = 2;

SELECT i.TipImobil, c.Valoare, c.Moneda

FROM IMOBILE i

JOIN CONTRACTE c ON c.CODIMOBIL = i.CODIMOBIL;

-- --- 4.

ACCEPT tip PROMPT 'Introduce tip de asigurare:';

SELECT *

FROM IMOBILE i

WHERE i.TipImobile = 'Apartament'

AND i.NrCamere = 3 AND i.Locatie = 'Zona A'


AND i.AnContructie BETWEEN 2000 AND 2010

AND i.TipAsigurare = &tip;

--- 5.

ACCEPT nume PROMPT 'Introduce nume agent:';

SELECT *

FROM CONTRACTE c

JOIN IMOBILE i ON c.CODIMOBIL = i.CODIMOBIL

WHERE c.DataContract = SYSDATE

AND i.TipImobil = 'Garsoniera'

AND c.Moneda = 'RON'

AND c.NumeAgent = &nume;

--- 6.

SELECT *

FROM IMOBILE i

JOIN CONTRACTE c ON c.CODIMOBIL = i.CODIMOBIL

WHERE i.TipImobil = 'Vila'

AND i.Locatie = 'Periferie'

AND i.TipAsigurare = 'Bunuri'

AND c.TipContract = 'Vanzare'

AND c.Valoare > (

SELECT MAX(c.VALOARE)

FROM IMOBILE i

JOIN CONTRACTE c ON c.CODIMOBIL = i.CODIMOBIL

WHERE i.NrCamere = 3

AND i.TipImobil = 'Apartament'

AND i.Locatie = 'Zona A'

You might also like