You are on page 1of 2

1.

create table TransporturiSoferi


(
NumarTransport NUMBER(12) not null,
CodSofer NUMBER(6) not null,
NumarOreConduse NUMBER(8,2),
Pret/Km NUMBER(8,2),
Numar Km NUMBER(8.2)
);
alter table TransporturiSoferi
add constraint Trs_Sof_PK primary key (NumarTransport, CodSofer );
alter table RAND_COMENZI
add constraint Trs_Sof_CodSofer_FK foreign key (CodSofer)
references Soferi (CodSofer);
alter table TransporturiSoferi
add constraint Trs_Sof_NumarTransport_FK foreign key (NumarTransport)
references Transporturi (NumarTransport) on delete cascade;
alter table TransporturiSoferi
add constraint Tr_Sof_NumarOreConduse_CK
check (NumarOreConduse>=0);
alter table TransporturiSoferi
add constraint Trs_Sof_Numar Km_CK
check (Numar Km>=0);
alter table TransporturiSoferi
add constraint Trs_Sof_Pret/Km_CK
check (Pret/Km>=0);
create index Trs_Sof_CodSofer_IX on TransporturiSoferi (CodSofer);
create index Trs_Sof_NumarTransport_IX on TransporturiSoferi (NumarTransport);
alter table Transporturi
add constraint Transporturi_Data_NN
check ("Data" IS NOT NULL);

insert into Soferi2026 (CODSOFER, NUME,PRENUME,LOCALITATE)


values (1, 'Andreescu','Vasile','Buzau');
insert into COMANDA2026
(NUMARCOMANDA,GREUTATE,DATACOMANDA,DESTINATIE,CODCLIENT,NUMARV
EHICUL,NUMARTRANSPORT) values (72,to_date('25-02-2013', 'dd-mm-yyyy'),11,233);

UPDATE transporturisoferi26
SET numaroreconduse=numaroreconduse+25
WHERE numaroreconduse <200
SELECT * FROM transporturisoferi26

6.Actualizati Numaruloreconduse pt soferul cu codsofer=8 din tabela Transporturisofer2026 cu


nr de ore ale angajatului cu id=2 doar daca au mai putine ore conduse decat codsofer=2.
UPDATE transporturisoferi2026 SET (numaroreconduse)=(SELECT numaroreconduse
FROM transporturisoferi2026 WHERE codsofer=8) WHERE numaroreconduse<
(SELECT numaroreconduse from transporturisoferi2026 WHERE codsofer = 2) ;

Afisati numarultransport pt comenzile cu val cuprinsa intre 15.000 si 30.000.


SELECT transporturisoferi2026.numartransport, SUM(transporturisoferi2026.pretkm *
transporturisoferi2026.numarkm) total_comanda
FROM transporturisoferi2026,transporturi2026
WHERE transporturisoferi2026.numartransport=transporturi2026.numartransport
GROUP BY transporturisoferi2026.numartransport
HAVING SUM(transporturisoferi2026.pretkm * transporturisoferi2026.numarkm)
BETWEEN 15000 AND 30000
ORDER BY total_comanda DESC;

7. Sa se afiseze toti subordonatii lui 'De Haan':


SELECT id_angajat, nume, id_manager, LEVEL FROM angajati
CONNECT BY PRIOR id_angajat = id_manager
START WITH nume= 'De Haan'
ORDER BY LEVEL;

Exemplu 1. Sa creeze tabela salariati pe baza tabelei angajati fara a prelua si inregistrarile (doar
structura) si sa se adauge un nou angajat
CREATE TABLE salariati AS SELECT * FROM angajati WHERE 2=3;
INSERT INTO salariati (id_angajat, nume, salariul) VALUES (207, 'Ionescu', 4000);
INSERT INTO salariati (id_angajat, nume, salariul) VALUES (207, 'Poppescu', 4200);
SELECT * FROM salariati;

Exemplul 3. Sa se adauge in tabela salariati un angajat ale carui date sunt introduse de utilizator
de la tastatura
INSERT INTO salariati (id_angajat, nume, data_angajare, salariul)
VALUES ('&id_angajat','&nume', TO_DATE('&data_angajare', 'mon dd, yyyy'), '&salariul');

You might also like