Sunteți pe pagina 1din 77

Limbajul de definire a datelor (DDL).

CREATE, ALTER, DROP


Definirea tabelelor
1. Creati tabelul salariat_*** avnd urmtoarea !tru"tur#
$ume Cara"teri!ti"i Ti%
codang NOT NULL NUMBER(4)
nume VARCHAR2(25)
prenume VARCHAR2(25)
Iunctia VARCHAR2(20)
seI NUMBER(4)
dataangajarii Valoare implicit data curent DATE
varsta NUMBER(2)
email CHAR(50)
salariu Valoare implicit 0 NUMBER(9,2)
CREATE TABLE salariat (
codang NUMBER(4) NOT NULL,
nume VARCHAR2(25),
prenume VARCHAR2(25),
Iunctia VARCHAR2(20),
seI NUMBER(4),
dataangajarii DATE DEFAULT SYSDATE,
varsta NUMBER(2),
email CHAR(50),
salariu NUMBER(9,2) DEFAULT 0);
&. Afi!ati !tru"tura tabelului "reat anterior.
DESCRIBE salariat;
'. (e dau urmtoarele valori#
COD)A$
*
$+,E PRE$+,E -+$CT.A (E- DATA)A$* /AR(TA E,A.L (ALAR.+
1 ..... ..... director null ........ 30 ..... 5500
2 ..... ..... Iuctionar 1 ..... 25 ..... 0
3 ..... ..... economist 1 ..... 45 ..... 3000
4 ..... ..... Iunctionar 1 ..... 35 ..... 1000
0. .n!erati 1n tabelul !alariat)222 %rima 1nre3i!trare din tabelul de mai !u! fr ! %re"i4ati li!ta de "oloane
1n "omanda .$(ERT.
INSERT INTO salariat VALUES (
1, '.....', '.....', 'director', null ,`' , 30, '.....', 5500 );
5. .n!erati a doua 1nre3i!trare folo!ind o li!t de "oloane din "are e6"ludeti data)an3ajarii !i !alariul "are
au valori im%li"ite. Ob!ervati
a%oi re4ultatul.
COD)A$* $+,E PRE$+,E -+$CT.A (E- DATA)A$* /AR(TA E,A.L (ALAR.+
2 ..... ..... Iuctionar 1 ..... 25 ..... 0
1
INSERT INTO salariat (codang, nume, prenume, Iunctia, seI, varsta, email)
VALUES (2, '...', '...', 'Iunctionar', 1, 25, '...' );
7. .n!erati 1nre3i!trrile ' !i 0.
INSERT INTO salariat (codang, nume, prenume, Iunctia, seI, varsta, email, salariu) VALUES (3, '...', '...',
'economist', 1, 45, '...', 3000 );
INSERT INTO salariat (codang, nume, prenume, Iunctia, seI, varsta, email, salariu) VALUES (4, '...', '...',
'Iunctionar', 1, 35, '...', 1000 );
8. Creati tabelul fun"tionar)222 "are ! "ontin fun"tionarii din tabelul !alariat)***, avnd urmtoarele
"oloane# "odul, numele, !alariul anual !i data an3ajrii. /erifi"ati "um a fo!t "reat tabelul !i "e date "ontine.
CREATE TABLE Iunctionar
AS SELECT codang, nume, prenume, salariu, dataangajarii
FROM salariat WHERE Iunctia 'Iunctionar';
DESCRIBE Iunctionar;
SELECT * FROM Iunctionar;
9. Adu3ati o nou "oloan tabelului !alariat)*** "are ! "ontin data na!terii.
ALTER TABLE salariat
ADD (datan DATE);
:. ,odifi"ati dimen!iunea "oloanei nume la '; !i %e "ea a !alariului la 1& "u ' 4e"imale.
ALTER TABLE salariat
MODIFY (nume VARCHAR2(30), salariu NUMBER(12,3));
1;. ,odifi"ati ti%ul "oloanei email la VARCHAR2.
ALTER TABLE salariat
MODIFY (email VARCHAR2(50));
11. ,odifi"ati valoarea im%li"it a "oloanei data_angajarii la data !i!temului < o 4i.
ALTER TABLE salariat
MODIFY (dataangajarii DATE DEFAULT SYSDATE 1);
1&. Eliminati "oloana varsta din tabelul !alariat)222.
ALTER TABLE salariat
DROP COLUMN varsta;
1'. Redenumiti tabelul functionar)222 "u funct)222.
RENAME Iunctionar to Iunct;
10. Re"reati tabelul fun"tionar)222 utili4nd tabelul funct)222..
CREATE TABLE Iunctionar
AS SELECT codang, nume, prenume, salariu, dataangajarii
FROM Iunct;
15. Eliminati tabelul funct)222.
2
DROP TABLE Iunct;
17. (ter3eti !i a%oi "reati din nou tabelul !alariat)222 "u urmtoarea !tru"tur.
$+,E T.P CO$(TR=$*ERE
codang NUMBER(4) Cheie primar
nume VARCHAR2(25) NOT NULL
prenume VARCHAR2(25)
datanasterii DATE datanasteriidataangajarii
Iunctia VARCHAR2(9) NOT NULL
seI NUMBER(4) ReIer ca si cheie extern codang
din acelasi tabel
dataangajarii DATE
email VARCHAR2(20) unic
salariu
coddept NUMBER(4)
NUMBER(12,3) ~ 0
coddept NUMBER(4) CombinaNia NUME PRENUME
s Iie unic
Observatie: Constrngerile de tip CHECK se pot implementa la nivel de coloan doar dac nu reIer o alt
coloan a tabelului.
DROP TABLE salariat;
CREATE TABLE salariat (
codang NUMBER(4) PRIMARY KEY,
nume VARCHAR2(25) NOT NULL,
prenume VARCHAR2(25),
datanasterii DATE,
Iunctia VARCHAR2(9) NOT NULL,
seI NUMBER(4) REFERENCES salariat (codang),
dataangajarii DATE DEFAULT SYSDATE,
email VARCHAR2(20) UNIQUE,
salariu NUMBER(9,2) CHECK (salariu ~ 0),
coddep NUMBER(4),
CONSTRAINT constc CHECK (dataangajarii ~ datanasterii),
CONSTRAINT constu UNIQUE (nume, prenume, datanasterii));
18. (ter3eti tabelul !alariat)222, iar a%oi re"reati>l im%lementnd toate "on!trn3erile la nivel de tabel.
Observatie: Constrngerea de tip NOT NULL se poate declara doar la nivel de coloan.
DROP TABLE salariat;
CREATE TABLE salariat (
codang NUMBER(4),
nume VARCHAR2(25) NOT NULL,
prenume VARCHAR2(25),
datanasterii DATE,
Iunctia VARCHAR2(9) NOT NULL,
seI NUMBER(4),
dataangajarii DATE DEFAULT SYSDATE,
email VARCHAR2(20),
salariu NUMBER(9,2),
coddep NUMBER(4),
CONSTRAINT ccp PRIMARY KEY (codang),
CONSTRAINT cce FOREIGN KEY (seI) REFERENCES salariat (codang),
CONSTRAINT cu1 UNIQUE (email),
CONSTRAINT cc1 CHECK (dataangajarii ~ datanasterii),
3
CONSTRAINT cc2 CHECK (salariu ~ 0),
CONSTRAINT cu2 UNIQUE (nume,prenume,datanasterii));
19. Creati tabelul departament_*** "are ! aib urmtoarea !tru"tur.
$+,E T.P CO$(TR=$*ER.
CODDEP NUMBER(4) Cheie primar
NUME VARCHAR2(20) Not null
ORAS VARCHAR2(25)
CREATE TABLE departament (
coddep NUMBER(4) PRIMARY KEY,
nume VARCHAR2(20) NOT NULL,
oras VARCHAR2(25));
Adu3area "on!trn3erilor ulterior "rerii tabelului, eliminarea, a"tivarea !au de4a"tivarea "on!trn3erilor
(ALTER TA?LE)
- adaug constrngeri
ALTER TABLE numetabel
ADD |CONSTRAINT numeconstr| tipconstr (coloana);
- elimin constrngeri
ALTER TABLE numetabel
DROP |CONSTRAINT numeconstr| tipconstr (coloana);
- activarede!activare constrngere
ALTER TABLE numetabel
MODIFY CONSTRAINT numeconstr ENABLE,DISABLE;
sau
ALTER TABLE numetabel
ENABLE, DISABLE numeconstr;
1:. .n!erati o nou 1nre3i!trare 1n !alariat)222 de forma#
"od nume %renume data)n fun"tia !ef data)an3 email !alariu "od)de%
2 N2 P2 11-JUN-1960 economist 1 Sysdate E2 2000 10
INSERT INTO salariat VALUES (
2, 'N2' , 'P2' , '11-06-1960' , 'ECONOMIST', 1, SYSDATE, 'E2', 2000, 10 );
/*EROARE la linia 1: ORA-02291: constrngere de integritate (SCO!CCE" violata - c#eia $arinte negasita
Ce ob!ervati@ .ntrodu"eti 1nre3i!trarea dar !%e"ifi"nd valoarea $+LL %entru "oloana sef.
INSERT INTO salariat VALUES (
2, 'N2' , 'P2' , '11-06-1960' , 'ECONOMIST', Null, SYSDATE, 'E2', 2000, 10 ); /*1 %nregistrare creat&!*/
&;. An"er"ati ! adu3ati o "on!trn3ere de "Beie e6tern %e "od)de% din !alariat)222. Ce ob!ervati@
ALTER TABLE salariat
ADD CONSTRAINT cce2 FOREIGN KEY (coddep) REFERENCES departament (coddep);
/*EROARE la linia 2: ORA-0229': (SCO!CCE2" n( a $(t(t )i validata - n( a( )ost gasite c#eile $arinte
&1. .n!erati o nou 1nre3i!trare 1n de%artament)222. A%oi adu3ati "on!trn3erea de "Beie e6tern definit
anterior.
"od)de% nume lo"
10 Economic Bucuresti
INSERT INTO departament VALUES (
4
10, 'Ecomomic', 'Bucuresti' );
Adau3am "on!tran3erea de la e6.&;#
ALTER TABLE salariat
ADD CONSTRAINT cce2 FOREIGN KEY (coddep) REFERENCES departament (coddep);
&&. .n!erati noi 1nre3i!trri 1n !alariat)222, re!%e"tiv 1n de%artament)222. Care trebuie ! fie ordinea de
in!erare@
"o
d
n
ume
%renume datan functi
a
!ef data)an
3
e*ai
l
!alari
u
"od)de%
3 N3 P3 11-
JUN-
1967
jurist 2 Sysdate E3 2500 20
"od)de% nume lo"
20 Juridic Constanta
INSERT INTO departament VALUES (
20, 'Juridic', 'Constanta' );
INSERT INTO salariat VALUES (
3, `N3`, `P3 `, `11-06-1967`, `JURIST `, 2, ``, `E3`, 2500, 20 );
&'. (ter3eti de%artamentul &; din tabelul de%artament)222. Ce ob!ervati@
DELETE FROM departament
WHERE coddep20;
/*EROARE la linia 1: ORA-02292: constrngerea de integritate (SCO!CCE2" violata + gasita %nregistrarea
co$il
&0. (ter3eti "on!trn3erea ""e&)222. Re"reati a"ea!t "on!trn3ere adu3nd o%tiunea O$ DELETE
CA(CADE.
ALTER TABLE salariat
DROP CONSTRAINT cce2;
ALTER TABLE salariat
ADD CONSTRAINT cce2 FOREIGN KEY (coddep) REFERENCES departament (coddep) ON DELETE
CASCADE;
&5. (ter3eti de%artamentul &; din tabelul de%artament)222. Ce ob!ervati 1n tabelul !alariat)222@ Anulati
modifi"rile.
DELETE FROM departament
WHERE coddep20;
ROLLBACK;
&7. (ter3eti "on!trn3erea ""e&)222. Re"reati a"ea!t "on!trn3ere adu3nd o%tiunea O$ DELETE (ET
$+LL.
ALTER TABLE salariat DROP CONSTRAINT cce2;
ALTER TABLE salariat
ADD CONSTRAINT cce2
FOREIGN KEY (coddep)
REFERENCES departament (coddep)
ON DELETE SET NULL;
&8. An"er"ati ! !ter3eti de%artamentul 1; din tabelul de%artament)222. Ce ob!ervati@
DELETE FROM departament
5
WHERE coddep10;
/*1 %nregistrare stears&!
/erifi"am "ontinutul tabelului de%artament
SELECT * FROM departament;
Con!ultarea di"tionarului datelor
"nformatii despre ta#elele create se gsesc $n vi!uali!rile %
USERTABLES inIormatii complete despre tabelele utilizatorului curent.
ALLTABLES inIormatii complete despre tabelele tuturor utilizatorilor.
COLS inIormatii despre coloane.
TAB inIormatii de baz despre tabelele existente n schema utilizatorului curent.
"nformatii despre constrngeri gsim $n %
USERCONSTRAINTS inIormatii despre constrngerile deIinite de utilizatorul curent;
ALLCONSTRAINTS inIormatii despre cosntrngerile deIinite de toti
Definirea vi4uali4rilor
Sintaxa simpliIicat a comenzii CREATE VIEW este:
CREATE COR REPLACED C-ORCE E $O-ORCED /.EF nume)vieG C(alia!, alia!, ..)D
A( !ub"erere
CF.TH CHECI OPT.O$ CCO$(TRA.$T nume)"on!trDD
CF.TH READ O$LJ CCO$(TRA.$T nume)"on!trDDK
- FORCE permite crearea vizualizarea nainte de a deIini tabelele de baz;
- subcererea poate Ii orict de complex dar nu poate conNine clauza ORDER BY;
- WITH CHECK OPTION permite inserarea si modiIicarea prin intermediul vizualizrii numai a liniilor ce sunt
accesibile vizualizrii; dac lipseste numele constrngerii atunci sistemul asociaz un nume implicit de tip
SYSCn acestei constrngeri;
- WITH READ ONLY asigur c prin intermediul vizualizrii nu se pot executa operatii LMD.
Eliminarea unei vizualizri se Iace prin comanda DROP VIEW :
DROP VIEW numeviz;
1. ( !e "ree4e vi4uali4area v)em%)222 "are ! "ontin "odul !i numele !alariatilor din tabelul em%)222. (
!e afi!e4e "ontinutul a"e!teia. ( !e in!ere4e o nou 1nre3i!trare 1n a"ea!t vi4uali4are. Ce ob!ervati@ ( !e
!tear3 vi4uali4area v)em%)222.
(e "rea4a tabelul em%
CREATE TABLE emp (
employeeid NUMBER(4) PRIMARY KEY,
lastname VARCHAR2(64),
email VARCHAR2(64),
hiredate DATE DEFAULT SYSDATE,
salary NUMBER(8,2) DEFAULT 1000,
jobid VARCHAR2(10));
(e "rea4a vi4uali4area v)em%
CREATE VIEW vemp (cod, nume)
AS SELECT employeeid, lastname
FROM emp;
(e afi!ea4a "ontinutul vi4uali4arii
6
select * Irom vemp;
/*nici o %nregistrare selectat&
.n!eram o noua inre3i!trare
INSERT INTO vemp
VALUES (400,`N1`);
(e !ter3e vi4uali4area v)em%
DROP VIEW vemp;
&. ( !e "ree4e vi4uali4area v)em%)222 "are ! "ontin "odul, numele, emailul, data an3ajrii, !alariul !i
"odul jobului !alariatilor din tabelul em%)222. ( !e anali4e4e !tru"tura !i "ontinutul vi4uali4rii. ( !e
in!ere4e o nou 1nre3i!trare 1n a"ea!t vi4uali4are. ( !e verifi"e " noua 1nre3i!trare a fo!t in!erat !i 1n
tabelul de ba4.
CREATE VIEW vemp
AS
SELECT employeeid, lastname, email, hiredate, salary,jobid
FROM emp;
DESC vemp
SELECT * FROM vemp;
INSERT INTO vemp
VALUES (400,`N1`,`E1`,SYSDATE,5000,`SAREP`);
SELECT employeeid, lastname, email, hiredate, salary, jobid
FROM emp;
/* restrictia (nica (SCO!S,S-C002'0." n( este res$ectata + linia / si .
'. ( !e mrea!" "u 1;;; !alariul an3ajatului avnd "odul 0;; din vi4uali4area "reat anterior. Ce efe"t va
avea a"ea!t a"tiune a!u%ra tabelului de ba4@
UPDATE vemp
SET salary salary 1000
WHERE employeeid 400;
SELECT * FROM vemp;
SELECT * FROM emp;
/* salari(l anga0at(l(i c( cod(l 100 devine 20002 in rest n( se sc#i*ba ni*ic
0. ( !e !tear3 an3ajatul avnd "odul 0;; din vi4uali4area "reat anterior. Ce efe"t va avea a"ea!t
a"tiune a!u%ra tabelului de ba4@
DELETE FROM vemp
WHERE employeeid 400;
/* tabel(l e*$ n( *ai contine nici o inregistrare
5.a) S se creeze vizualizarea vempdept*** care s contin employeeid, lastname, hiredate, jobid,
departmentid din tabelul emp*** si coloana departmentname din tabelul dept***.
Cream tabelul de%t
CREATE TABLE dept (
departmentid NUMBER(2) PRIMARY KEY,
departmentdescriere VARCHAR2(128));
.n!eram in tabelul de%t "oloana de%artment)name
7
Alter table dept
Add (departmentname VARCHAR2(20));
Tabelul em% nu are "oloana de%artment)id a!a "a trebuie "reata %entru a %utea "ontinua
ALTER TABLE emp
ADD departmentid NUMBER(2);
(e "rea4a vi4uali4area
CREATE VIEW vempdept
AS SELECT e.employeeid, e.lastname, e.hiredate, e.jobid, e.departmentid, d.departmentname
FROM emp e, dept d
WHERE e.departmentid d.departmentid;
5.b) ( 1n"er"e in!erarea 1nre3i!trrii (5;;, L$&L, LE&L,(J(DATE,M(A)REPM,';, LAdmini!trativL) 1n
vi4uali4area "reat anterior.
INSERT INTO vempdept VALUES (
500, 'N2', 'E2', SYSDATE,'SA-REP',30, 'Administrativ');
/*EROARE la linia 1: ORA-00913: $rea *(lte valori
5.") Care dintre "oloanele vi4uali4rii v)em%)de%t)222 !unt a"tuali4abile@
SELECT columnname, updatable
FROM userupdatablecolumns
WHERE UPPER(tablename) UPPER('vempdept');
/* oate s(nt act(ali4abile in a)ara de de$arta*ent-na*e
5.d) Adu3ati tabelului em%)222 "on!trn3erea de "Beie e6tern "are refer tabelul de%t)222, a%oi
verifi"ati "e "oloane din vi4uali4area v)em%)de%t)222 !unt a"tuali4abile.
ALTER TABLE emp
ADD CONSTRAINT dep FOREIGN KEY (departmentid)
REFERENCES dept1(departmentid);
SELECT columnname, updatable
FROM userupdatablecolumns
WHERE UPPER(tablename) UPPER('vempdept');
/* oate s(nt act(ali4abile in a)ara de de$arta*ent-na*e
5.e) Re"reati vi4uali4area v)em%)de%t)222, a%oi verifi"ati "e "oloane !unt a"tuali4abile.
CREATE OR REPLACE VIEW vempdept
AS SELECT e.employeeid, e.lastname, e.hiredate, e.jobid, e.departmentid, d.departamentname
FROM emp e, dept d
WHERE e.departmentid d.departmentid;
SELECT columnname, updatable
FROM userupdatablecolumns
WHERE UPPER(tablename) UPPER('vempdept');
/* oate s(nt act(ali4abile in a)ara de de$arta*ent-na*e
7. ( !e "ree4e vi4uali4area v)de%t)222 "are ! "ontine "odul !i numele de%artamentului, numrul de
an3ajati din de%artamentul re!%e"tiv !i !uma alo"at %entru %lata !alariilor. A"ea!t vi4uali4are %ermite
a"tuali4ri@
CREATE VIEW vdept (cod, nume, nrangajati, valsalarii)
AS SELECT e.departmentid, departmentname, COUNT(*) nrangajati,
SUM(salary) valsalarii
8
FROM emp e, dept d
WHERE e.departmentid d.departmentid
GROUP BY e.departmentid, departmentname;
SELECT columnname, updatable
FROM userupdatablecolumns
WHERE UPPER(tablename) UPPER('vdept');
/*Aceasta vi4(ali4are n( $er*ite actiali4ari
8. a) ( !e "ree4e vi4uali4area v)em%';)222 "are ! "ontin numele, emailul, data an3ajrii, !alariul, "odul
jobului !i "odul de%artamentului "elor "are lu"rea4 1n de%artamentul ';. An a"ea!t vi4uali4are nu !e va
%ermite modifi"area !au in!erarea liniilor "e nu !unt a""e!ibile ei. Dati un nume "on!trn3erii.
CREATE VIEW vemp30
AS
SELECT employeeid, lastname, email, hiredate, salary, jobid,
departmentid
FROM emp
WHERE departmentid30
WITH CHECK OPTION CONSTRAINT ckoption1;
8. b) ( !e li!te4e !tru"tura !i "ontinutul vi4uali4rii v)em%';)222.
DESCRIBE vemp30;
SELECT * FROM vemp30;
/*nici o inregistrare selectata
8. ") ( !e 1n"er"e %rin intermediul vi4uali4rii in!erarea unui an3ajat 1n de%artamentul 1; !i a unui
an3ajat 1n de%artamentul ';
INSERT INTO vemp30
VALUES ( 600, 'N5', 'E5', SYSDATE, 4000, 'ADMIN', 10);
EROARE la linia 1: ORA-01102: %n vi4(ali4area 567 C7EC8 O96O: cla(4a ;#ere este %nc&lcat&
INSERT INTO vemp30 VALUES (
600, 'N5', 'E5', SYSDATE, 4000, 'ADMIN', 30);
/*<aca de$art*ent-id este 30 se )ace inserarea2 inregistrarea de regaseste in tabela e*$!
8. d) ( !e 1n"er"e %rin intermediul vi4uali4rii modifi"area de%artamentului unui an3ajat.
UPDATE vemp30
SET departmentid 20
WHERE employeeid 11;
/*0 %nregistr&ri act(ali4ate!
9. ( !e "ree4e o vi4uali4are (v)de%t)222) a!u%ra tabelului de%t)222 ! nu %ermit efe"tuarea ni"i unei
o%eratii L,D. Te!tati o%eratiile de in!erare, modifi"are !i !ter3ere a!u%ra a"e!tei vi4uali4ri.
CREATE VIEW vdept
AS SELECT * FROM dept
WITH READ ONLY;
/* EROARE la linia 1: ORA-009//: n(*ele este de0a (tili4at de (n obiect e=istent
CREATE OR REPLACE VIEW vdept
AS SELECT * FROM dept
WITH READ ONLY;
9
:. ( !e "on!ulte informatii de!%re vi4uali4area v)de%t)222. -olo!iti vi4uali4area di"tionarului datelor
+(ER)/.EF( ("oloanele /.EF)$A,E !i TENT).
&#s% Coloana TENT e!te de ti% LO$*. An "a4ul !ele"trii unei "oloane de ti% LO$* trebuie utili4at
"omanda '() *&+, n %entru a !eta numrul de "ara"tere afi!ate.
SET LONG 200
SELECT viewname, text
FROM userviews
WHERE UPPER(viewname)UPPER(`vdept`);
Definirea !e"ventelor
Sintaxa comenzii CREATE SEQUENCE este:
CREATE (EO+E$CE nume)!e"vent
C.$CRE,E$T ?J nD
C(TART F.TH valoare)!tartD
C P,AN/AL+E valoare)ma6im E $O,AN/AL+EQ D
C P,.$/AL+E valoare)minim E $O,.$/AL+EQ D
C PCJCLE E $OCJCLEQ D
C PCACHE n E $OCACHEQ DK
Stergerea secventelor se realizeaz cu ajutorul comenzii DROP SEQUENCE.
DROP SEQUENCE numesecv;
1;. ( !e "ree4e o !e"vent "are are %a!ul de in"rementare 1; !i 1n"e%e de la 1;, are "a valoare ma6im
1;;;; !i nu "i"lea4.
CREATE SEQUENCE sec
INCREMENT BY 10
START WITH 10
MAXVALUE 10000
NOCYCLE;
11. ( !e modifi"e toate liniile din tabelul em%)222, re3enernd "odul an3ajatilor a!tfel 1n"t ! utili4e4e
!e"venta !e")em%222. ( !e anule4e modifi"rile.
UPDATE emp
SET employeeid secemp.NEXTVAL;
ROLLBACK;
1&. ( !e introdu" un nou !alariat 1n tabelul em%)222 folo!indu>!e %entru "odul !alariatului !e"venta
"reat.
INSERT INTO emp VALUES (
secemp.NEXTVAL, 'N5', 'E5', SYSDATE, 2500, 'admin', 30);
1'. ( !e afi!e4e valoarea "urent a !e"ventei.
SELECT secemp.CURRVAL valoare FROM DUAL;
E6er"itiu
a) Creati o !e"vent %entru 3enerarea "odurilor de de%artamente, !eR)de%t)222. (e"venta va 1n"e%e de la
&;;, va "re!te "u 1; la fie"are %a! !i va avea valoarea ma6im &;;;;, nu va "i"la.
10
CREATE SEQUENCE seqdept
START WITH 200
INCREMENT BY 10
MAXVALUE 20000
NOCYCLE;
b) ( !e !ele"te4e informatii de!%re !e"ventele utili4atorului "urent (nume, valoare minim, ma6im, de
in"rementare, ultimul numr 3enerat). (e va utili4a vi4uali4area u!er)!eRuen"e!.
SELECT * FROM usersequences
WHERE sequencename'SEQDEPT';
") ( !e in!ere4e o 1nre3i!trare nou 1n DEPT)222 utili4nd !e"venta "reat.
INSERT INTO departments VALUES (
seqdept.NEXTVAL, 'contabil');
d) ( !e !ele"te4e valoarea "urent a !e"ventei.
SELECT seqdept.CURRVAL valoare FROM DUAL;
e) ( !e !tear3 !e"venta.
DROP SEQUENCE seqdept;
Definirea inde"!ilor
Sintaxa comenzii CREATE INDEX:
CREATE C+$.O+ED .$DEN nume)inde6
O$ tabel ("oloana1 C, "oloana&SD)K
ModiIicarea unui index se Iace prin comanda ALTER .$DEN.
Eliminarea unui index se Iace prin comanda: DROP .$DEN nume)inde6K
10. ( !e "ree4e un inde6 neuni", em%)la!t)name)id6)222, a!u%ra "oloanei la!t)name din tabelul em%)222.
CREATE INDEX emplastnameidx ON EMP (lastname);
15. ( !e "ree4e inde"!i uni"i a!u%ra "odului an3ajatului (em%loTee)id) !i a!u%ra "ombinatiei la!t)name,
fir!t)name, Bire)date.
CREATE UNIQUE INDEX employeeididx ON emp (employeeid);
CREATE UNIQUE INDEX employeeididx1 ON emp (lastname, hiredate);
17. Creati un inde6 neuni" a!u%ra "oloanei de%artment)id din em%)222 %entru a efi"ienti4a joinurile dintre
a"e!t tabel !i de%t)222.
CREATE INDEX empdepartmentidx ON EMP(departmentid);
Definirea !inonimelor
11
Comanda pentru crearea sinonimelor este:
CREATE CP+?L.CD (J$O$J, nume)!inonim
-OR obie"tK
Eliminarea sinonimelor se Iace prin comanda
DROP (J$O$J, nume)!inonimK
18. Creati un !inonim %ubli" !e)222 %entru tabelul em%)222.
CREATE SYNONYM se Ior emp;
19. Creati un !inonim %entru vi4uali4area v)de%t)222.
CREATE SYNONYM sydept FOR vdept;
1:. +tili4nd !inonimele "reate anterior, afi!ati informatii de%re !alariti !i de!%re de%artamente.
SELECT * FROM se;
SELECT * FROM sydept;
Limbajul de intero3are al datelor (DOL). (ELECT
CERER. ,O$OTA?EL
1. Analizati sintaxa simpliIicat a comenzii SELECT. Care dintre clauze sunt obligatorii?
(ELECT | D.(T.$CT , +$.O+E} , ALL| listacampuri , *}
-RO, |numeschem.|numeobiect |
|, |numeschem.|numeobiect .|
|FHERE condiNieclauzawhere|
|*RO+P ?J expresie |, expresie .|
|HA/.$* condiNieclauzahaving| |
|ORDER ?J expresie , poziNie} |, expresie , poziNie} .| |
&. ( !e li!te4e !tru"tura tabelelor din !"Bema HR (E,PLOJEE(, DEPART,E$T(, UO?)H.(TORJ,
UO?(, LOCAT.O$(, CO+$TR.E(, RE*.O$(), ob!ervnd ti%urile de date ale "oloanelor.
Ob!# (e va utili4a "omanda (OL2Plu! DE(CR.?E nume)tabel
12

(e "rea4a tabelele#
1. RE*.O$( TA?LE
CREATE TABLE regions
( regionid NUMBER
CONSTRAINT regionidnn NOT NULL ,
regionname VARCHAR2(25) );
&. CO+$TR.E( TA?LE
CREATE TABLE countries
( countryid CHAR(2)
CONSTRAINT countryidnn NOT NULL
, countryname VARCHAR2(40)
, regionid NUMBER
, CONSTRAINT countrycidpk
PRIMARY KEY (countryid) )
ORGANIZATION INDEX;
'. LOCAT.O$( TA?LE
CREATE TABLE locations
( locationid NUMBER(4)
, streetaddress VARCHAR2(40)
, postalcode VARCHAR2(12)
, city VARCHAR2(30)
CONSTRAINT loccitynn NOT NULL
, stateprovince VARCHAR2(25)
13
, countryid CHAR(2)
) ;
0. DEPARTA,E$T( TA?LE
CREATE TABLE departments
( departmentid NUMBER(4)
, departmentname VARCHAR2(30)
CONSTRAINT deptnamenn NOT NULL
, managerid NUMBER(6)
, locationid NUMBER(4)
) ;
5. UO?( TA?LE
CREATE TABLE jobs
( jobid VARCHAR2(10)
, jobtitle VARCHAR2(35)
CONSTRAINT jobtitlenn NOT NULL
, minsalary NUMBER(6)
, maxsalary NUMBER(6)
) ;
7. E,PLOJJE( TA?LE
CREATE TABLE employees
( employeeid NUMBER(6)
, Iirstname VARCHAR2(20)
, lastname VARCHAR2(25)
CONSTRAINT emplastnamenn NOT NULL
, email VARCHAR2(25)
CONSTRAINT empemailnn NOT NULL
, phonenumber VARCHAR2(20)
, hiredate DATE
CONSTRAINT emphiredatenn NOT NULL
, jobid VARCHAR2(10)
CONSTRAINT empjobnn NOT NULL
, salary NUMBER(8,2)
, commissionpct NUMBER(2,2)
, managerid NUMBER(6)
, departmentid NUMBER(4)
, CONSTRAINT empsalarymin
CHECK (salary ~ 0)
, CONSTRAINT empemailuk
UNIQUE (email)) ;
8. UO?)H.(TORJ TA?LE
CREATE TABLE jobhistory
( employeeid NUMBER(6)
CONSTRAINT jhistemployeenn NOT NULL
, startdate DATE
CONSTRAINT jhiststartdatenn NOT NULL
, enddate DATE
CONSTRAINT jhistenddatenn NOT NULL
, jobid VARCHAR2(10)
CONSTRAINT jhistjobnn NOT NULL
, departmentid NUMBER(4)
, CONSTRAINT jhistdateinterval
CHECK (enddate ~ startdate) ) ;
14
9. UO?)*RADE( TA?LE
CREATE TABLE JOBGRADES
(gradelevel VARCHAR2(3),
lowestsal NUMBER,
highestsal NUMBER);
&. ( !e li!te4e !tru"tura tabelelor din !"Bema HR (E,PLOJEE(, DEPART,E$T(, UO?)H.(TORJ,
UO?(, LOCAT.O$(, CO+$TR.E(, RE*.O$(), ob!ervnd ti%urile de date ale "oloanelor.
Ob!# (e va utili4a "omanda (OL2Plu! DE(CR.?E nume)tabel
DESCRIBE employees;
DESCRIBE departments;
DESCRIBE jobs;
DESCRIBE jobhistory;
DESCRIBE locations;
DESCRIBE countries;
DESCRIBE regions;
'.( !e li!te4e "ontinutul tabelelor din !"Bema "on!iderat, afi!nd valorile tuturor "m%urilor. &#s% (e va
utili4a "omanda (OL (ELECT 2 -RO, nume)tabelK
SELECT * FROM employees;
SELECT * FROM departments;
SELECT * FROM jobs;
SELECT * FROM jobhistory;
SELECT * FROM locations;
SELECT * FROM countries;
SELECT * FROM regions;
/*nici o %nregistrare selectat& + treb(ie sa insera* valori in )iecare tabel
1. .n!eram datele in tabelul RE*.O$(
INSERT INTO regions VALUES (
1, 'Europe' );
INSERT INTO regions VALUES (
2, 'Americas' );
INSERT INTO regions VALUES (
3, 'Asia' );
INSERT INTO regions VALUES (
4, 'Middle East and AIrica');
&. .n!eram datele in tabelul CO+$TR.E(
INSERT INTO countries VALUES (
'IT', 'Italy', 1);
INSERT INTO countries VALUES(
'JP', 'Japan', 3);
INSERT INTO countries VALUES (
'US', 'United States oI America', 2);
INSERT INTO countries VALUES (
'CA', 'Canada', 2);
INSERT INTO countries VALUES (
'CN', 'China'3);
INSERT INTO countries VALUES (
'IN', 'India'3);
INSERT INTO countries VALUES (
15
'AU', 'Australia'3);
INSERT INTO countries VALUES (
'ZW', 'Zimbabwe', 4);
INSERT INTO countries VALUES (
'SG', 'Singapore', 3 );
INSERT INTO countries VALUES (
'UK', 'United Kingdom', 1);
INSERT INTO countries VALUES (
'FR', 'France', 1 );
INSERT INTO countries VALUES (
'DE', 'Germany', 1);
INSERT INTO countries VALUES (
'ZM', 'Zambia', 4);
INSERT INTO countries VALUES (
'EG', 'Egypt', 4);
INSERT INTO countries VALUES (
'BR', 'Brazil', 2);
INSERT INTO countries VALUES (
'CH', 'Switzerland', 1);
INSERT INTO countries VALUES (
'NL', 'Netherlands', 1);
INSERT INTO countries VALUES (
'MX', 'Mexico', 2);
INSERT INTO countries VALUES (
'KW', 'Kuwait', 4);
INSERT INTO countries VALUES (
'IL', 'Israel', 4);
INSERT INTO countries VALUES (
'DK', 'Denmark', 1);
INSERT INTO countries VALUES (
'HK', 'HongKong', 3);
INSERT INTO countries VALUES (
'NG', 'Nigeria', 4);
INSERT INTO countries VALUES (
'AR', 'Argentina' , 2);
INSERT INTO countries VALUES (
'BE', 'Belgium', 1 );
'. .n!eram date in tabelul LOCAT.O$(
INSERT INTO locations VALUES (
1000, '1297 Via Cola di Rie', '00989', 'Roma', NULL, 'IT');
INSERT INTO locations VALUES (
1100, '93091 Calle della Testa', '10934', 'Venice', NULL, 'IT');
INSERT INTO locations VALUES (
1200, '2017 Shinjuku-ku', '1689', 'Tokyo', 'Tokyo PreIecture', 'JP');
INSERT INTO locations VALUES (
1300, '9450 Kamiya-cho', '6823', 'Hiroshima', NULL, 'JP');
INSERT INTO locations VALUES (
1400, '2014 Jabberwocky Rd', '26192', 'Southlake', 'Texas', 'US');
INSERT INTO locations VALUES (
1500, '2011 Interiors Blvd', '99236', 'South San Francisco', 'CaliIornia', 'US');
INSERT INTO locations VALUES (
1600, '2007 Zagora St', '50090', 'South Brunswick', 'New Jersey', 'US');
INSERT INTO locations VALUES (
1700, '2004 Charade Rd', '98199', 'Seattle', 'Washington', 'US');
16
INSERT INTO locations VALUES (
1800, '147 Spadina Ave', 'M5V 2L7', 'Toronto', 'Ontario', 'CA');
INSERT INTO locations VALUES ( 1900, '6092 Boxwood St', 'YSW 9T2', 'Whitehorse', 'Yukon', 'CA');
INSERT INTO locations VALUES (
2000, '40-5-12 Laogianggen', '190518', 'Beijing', NULL, 'CN');
INSERT INTO locations VALUES (
2100, '1298 Vileparle (E)', '490231', 'Bombay', 'Maharashtra', 'IN');
INSERT INTO locations VALUES(
2200 '12-98 Victoria Street', '2901', 'Sydney', 'New South Wales', 'AU');
INSERT INTO locations VALUES (
2300, '198 Clementi North', '540198', 'Singapore', NULL, 'SG');
INSERT INTO locations VALUES ( 2400, '8204 Arthur St', NULL, 'London', NULL, 'UK');
INSERT INTO locations VALUES (
2500 , 'Magdalen Centre, The OxIord Science Park', 'OX9 9ZB', 'OxIord', 'OxIord', 'UK');
INSERT INTO locations VALUES (
2600, '9702 Chester Road', '09629850293', 'StretIord', 'Manchester', 'UK');
INSERT INTO locations VALUES (
2700, 'Schwanthalerstr. 7031', '80925', 'Munich', 'Bavaria', 'DE');
INSERT INTO locations VALUES (
2800, 'Rua Frei Caneca 1360 ', '01307-002', 'Sao Paulo', 'Sao Paulo', 'BR');
INSERT INTO locations VALUES (
2900, '20 Rue des Corps-Saints', '1730', 'Geneva', 'Geneve', 'CH');
INSERT INTO locations VALUES (
3000, 'Murtenstrasse 921', '3095', 'Bern', 'BE', 'CH');
INSERT INTO locations VALUES (
3100, 'Pieter Breughelstraat 837', '3029SK', 'Utrecht', 'Utrecht', 'NL');
INSERT INTO locations VALUES (
3200 , 'Mariano Escobedo 9991', '11932', 'Mexico City', 'Distrito Federal,', 'MX');
0. .n!eram date in tabelul DEPART,E$T(
INSERT INTO departments VALUES (
10, 'Administration', 200, 1700);
INSERT INTO departments VALUES (
20, 'Marketing', 201, 1800);
INSERT INTO departments VALUES (
30, 'Purchasing', 114, 1700);
INSERT INTO departments VALUES (
40, 'Human Resources', 203, 2400);
INSERT INTO departments VALUES (
50, 'Shipping', 121, 1500);
INSERT INTO departments VALUES (
60, 'IT', 103, 1400);
INSERT INTO departments VALUES (
70, 'Public Relations', 204, 2700);
INSERT INTO departments VALUES (
80, 'Sales', 145, 2500);
INSERT INTO departments VALUES (
90, 'Executive', 100, 1700);
INSERT INTO departments VALUES (
100, 'Finance', 108, 1700);
INSERT INTO departments VALUES (
110, 'Accounting', 205, 1700);
INSERT INTO departments VALUES (
120, 'Treasury', NULL, 1700);
INSERT INTO departments VALUES (
17
130, 'Corporate Tax', NULL, 1700);
INSERT INTO departments VALUES (
140, 'Control And Credit'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 150
, 'Shareholder Services'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 160
, 'BeneIits'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 170
, 'ManuIacturing'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 180
, 'Construction'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 190
, 'Contracting'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 200
, 'Operations'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 210
, 'IT Support'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 220
, 'NOC'
, NULL
, 1700
);
INSERT INTO departments VALUES
18
( 230
, 'IT Helpdesk'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 240
, 'Government Sales'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 250
, 'Retail Sales'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 260
, 'Recruiting'
, NULL
, 1700
);
INSERT INTO departments VALUES
( 270
, 'Payroll'
, NULL
, 1700
);
5..n!eram date in tabelul UO?(
INSERT INTO jobs VALUES
( 'ADPRES'
, 'President'
, 20000
, 40000
);
INSERT INTO jobs VALUES
( 'ADVP'
, 'Administration Vice President'
, 15000
, 30000
);
INSERT INTO jobs VALUES
( 'ADASST'
, 'Administration Assistant'
, 3000
, 6000
);
INSERT INTO jobs VALUES
( 'FIMGR'
, 'Finance Manager'
, 8200
, 16000
19
);
INSERT INTO jobs VALUES
( 'FIACCOUNT'
, 'Accountant'
, 4200
, 9000
);
INSERT INTO jobs VALUES
( 'ACMGR'
, 'Accounting Manager'
, 8200
, 16000
);
INSERT INTO jobs VALUES
( 'ACACCOUNT'
, 'Public Accountant'
, 4200
, 9000
);
INSERT INTO jobs VALUES
( 'SAMAN'
, 'Sales Manager'
, 10000
, 20000
);
INSERT INTO jobs VALUES
( 'SAREP'
, 'Sales Representative'
, 6000
, 12000
);
INSERT INTO jobs VALUES
( 'PUMAN'
, 'Purchasing Manager'
, 8000
, 15000
);
INSERT INTO jobs VALUES
( 'PUCLERK'
, 'Purchasing Clerk'
, 2500
, 5500
);
INSERT INTO jobs VALUES
( 'STMAN'
, 'Stock Manager'
, 5500
, 8500
);
INSERT INTO jobs VALUES
( 'STCLERK'
, 'Stock Clerk'
, 2000
, 5000
);
INSERT INTO jobs VALUES
20
( 'SHCLERK'
, 'Shipping Clerk'
, 2500
, 5500
);
INSERT INTO jobs VALUES
( 'ITPROG'
, 'Programmer'
, 4000
, 10000
);
INSERT INTO jobs VALUES
( 'MKMAN'
, 'Marketing Manager'
, 9000
, 15000
);
INSERT INTO jobs VALUES
( 'MKREP'
, 'Marketing Representative'
, 4000
, 9000
);
INSERT INTO jobs VALUES
( 'HRREP'
, 'Human Resources Representative'
, 4000
, 9000
);
INSERT INTO jobs VALUES
( 'PRREP'
, 'Public Relations Representative'
, 4500
, 10500
);
.n!eram date in tabelul E,PLOJEE(
INSERT INTO employees VALUES
( 100
, 'Steven'
, 'King'
, 'SKING'
, '515.123.4567'
, TODATE('17-IUN-1987', 'dd-MON-yyyy')
, 'ADPRES'
, 24000
, NULL
, NULL
, 90
);
INSERT INTO employees VALUES
( 101
, 'Neena'
, 'Kochhar'
, 'NKOCHHAR'
21
, '515.123.4568'
, TODATE('21-SEP-1989', 'dd-MON-yyyy')
, 'ADVP'
, 17000
, NULL
, 100
, 90
);
INSERT INTO employees VALUES
( 102
, 'Lex'
, 'De Haan'
, 'LDEHAAN'
, '515.123.4569'
, TODATE('13-IAN-1993', 'dd-MON-yyyy')
, 'ADVP'
, 17000
, NULL
, 100
, 90
);
INSERT INTO employees VALUES
( 103
, 'Alexander'
, 'Hunold'
, 'AHUNOLD'
, '590.423.4567'
, TODATE('03-IAN-1990', 'dd-MON-yyyy')
, 'ITPROG'
, 9000
, NULL
, 102
, 60
);
INSERT INTO employees VALUES
( 104
, 'Bruce'
, 'Ernst'
, 'BERNST'
, '590.423.4568'
, TODATE('21-MAI-1991', 'dd-MON-yyyy')
, 'ITPROG'
, 6000
, NULL
, 103
, 60
);
INSERT INTO employees VALUES
( 105
, 'David'
, 'Austin'
, 'DAUSTIN'
, '590.423.4569'
, TODATE('25-IUN-1997', 'dd-MON-yyyy')
, 'ITPROG'
, 4800
22
, NULL
, 103
, 60
);
INSERT INTO employees VALUES
( 106
, 'Valli'
, 'Pataballa'
, 'VPATABAL'
, '590.423.4560'
, TODATE('05-FEB-1998', 'dd-MON-yyyy')
, 'ITPROG'
, 4800
, NULL
, 103
, 60
);
INSERT INTO employees VALUES
( 107
, 'Diana'
, 'Lorentz'
, 'DLORENTZ'
, '590.423.5567'
, TODATE('07-FEB-1999', 'dd-MON-yyyy')
, 'ITPROG'
, 4200
, NULL
, 103
, 60
);
INSERT INTO employees VALUES
( 108
, 'Nancy'
, 'Greenberg'
, 'NGREENBE'
, '515.124.4569'
, TODATE('17-AUG-1994', 'dd-MON-yyyy')
, 'FIMGR'
, 12000
, NULL
, 101
, 100
);
INSERT INTO employees VALUES
( 109
, 'Daniel'
, 'Faviet'
, 'DFAVIET'
, '515.124.4169'
, TODATE('16-AUG-1994', 'dd-MON-yyyy')
, 'FIACCOUNT'
, 9000
, NULL
, 108
, 100
);
23
INSERT INTO employees VALUES
( 110
, 'John'
, 'Chen'
, 'JCHEN'
, '515.124.4269'
, TODATE('28-SEP-1997', 'dd-MON-yyyy')
, 'FIACCOUNT'
, 8200
, NULL
, 108
, 100
);
INSERT INTO employees VALUES
( 111
, 'Ismael'
, 'Sciarra'
, 'ISCIARRA'
, '515.124.4369'
, TODATE('30-SEP-1997', 'dd-MON-yyyy')
, 'FIACCOUNT'
, 7700
, NULL
, 108
, 100
);
INSERT INTO employees VALUES
( 112
, 'Jose Manuel'
, 'Urman'
, 'JMURMAN'
, '515.124.4469'
, TODATE('07-MAR-1998', 'dd-MON-yyyy')
, 'FIACCOUNT'
, 7800
, NULL
, 108
, 100
);
INSERT INTO employees VALUES
( 113
, 'Luis'
, 'Popp'
, 'LPOPP'
, '515.124.4567'
, TODATE('07-DEC-1999', 'dd-MON-yyyy')
, 'FIACCOUNT'
, 6900
, NULL
, 108
, 100
);
INSERT INTO employees VALUES
( 114
, 'Den'
, 'Raphaely'
24
, 'DRAPHEAL'
, '515.127.4561'
, TODATE('07-DEC-1994', 'dd-MON-yyyy')
, 'PUMAN'
, 11000
, NULL
, 100
, 30
);
INSERT INTO employees VALUES
( 115
, 'Alexander'
, 'Khoo'
, 'AKHOO'
, '515.127.4562'
, TODATE('18-MAI-1995', 'dd-MON-yyyy')
, 'PUCLERK'
, 3100
, NULL
, 114
, 30
);
INSERT INTO employees VALUES
( 116
, 'Shelli'
, 'Baida'
, 'SBAIDA'
, '515.127.4563'
, TODATE('24-DEC-1997', 'dd-MON-yyyy')
, 'PUCLERK'
, 2900
, NULL
, 114
, 30
);
INSERT INTO employees VALUES
( 117
, 'Sigal'
, 'Tobias'
, 'STOBIAS'
, '515.127.4564'
, TODATE('24-IUL-1997', 'dd-MON-yyyy')
, 'PUCLERK'
, 2800
, NULL
, 114
, 30
);
INSERT INTO employees VALUES
( 118
, 'Guy'
, 'Himuro'
, 'GHIMURO'
, '515.127.4565'
, TODATE('15-NOI-1998', 'dd-MON-yyyy')
, 'PUCLERK'
25
, 2600
, NULL
, 114
, 30
);
INSERT INTO employees VALUES
( 119
, 'Karen'
, 'Colmenares'
, 'KCOLMENA'
, '515.127.4566'
, TODATE('10-AUG-1999', 'dd-MON-yyyy')
, 'PUCLERK'
, 2500
, NULL
, 114
, 30
);
INSERT INTO employees VALUES
( 120
, 'Matthew'
, 'Weiss'
, 'MWEISS'
, '650.123.1234'
, TODATE('18-IUL-1996', 'dd-MON-yyyy')
, 'STMAN'
, 8000
, NULL
, 100
, 50
);
INSERT INTO employees VALUES
( 121
, 'Adam'
, 'Fripp'
, 'AFRIPP'
, '650.123.2234'
, TODATE('10-APR-1997', 'dd-MON-yyyy')
, 'STMAN'
, 8200
, NULL
, 100
, 50
);
INSERT INTO employees VALUES
( 122
, 'Payam'
, 'KauIling'
, 'PKAUFLIN'
, '650.123.3234'
, TODATE('01-MAI-1995', 'dd-MON-yyyy')
, 'STMAN'
, 7900
, NULL
, 100
26
, 50
);
INSERT INTO employees VALUES
( 123
, 'Shanta'
, 'Vollman'
, 'SVOLLMAN'
, '650.123.4234'
, TODATE('10-OCT-1997', 'dd-MON-yyyy')
, 'STMAN'
, 6500
, NULL
, 100
, 50
);
INSERT INTO employees VALUES
( 124
, 'Kevin'
, 'Mourgos'
, 'KMOURGOS'
, '650.123.5234'
, TODATE('16-NOI-1999', 'dd-MON-yyyy')
, 'STMAN'
, 5800
, NULL
, 100
, 50
);
INSERT INTO employees VALUES
( 125
, 'Julia'
, 'Nayer'
, 'JNAYER'
, '650.124.1214'
, TODATE('16-IUL-1997', 'dd-MON-yyyy')
, 'STCLERK'
, 3200
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 126
, 'Irene'
, 'Mikkilineni'
, 'IMIKKILI'
, '650.124.1224'
, TODATE('28-SEP-1998', 'dd-MON-yyyy')
, 'STCLERK'
, 2700
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 127
27
, 'James'
, 'Landry'
, 'JLANDRY'
, '650.124.1334'
, TODATE('14-IAN-1999', 'dd-MON-yyyy')
, 'STCLERK'
, 2400
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 128
, 'Steven'
, 'Markle'
, 'SMARKLE'
, '650.124.1434'
, TODATE('08-MAR-2000', 'dd-MON-yyyy')
, 'STCLERK'
, 2200
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 129
, 'Laura'
, 'Bissot'
, 'LBISSOT'
, '650.124.5234'
, TODATE('20-AUG-1997', 'dd-MON-yyyy')
, 'STCLERK'
, 3300
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 130
, 'Mozhe'
, 'Atkinson'
, 'MATKINSO'
, '650.124.6234'
, TODATE('30-OCT-1997', 'dd-MON-yyyy')
, 'STCLERK'
, 2800
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 131
, 'James'
, 'Marlow'
, 'JAMRLOW'
, '650.124.7234'
28
, TODATE('16-FEB-1997', 'dd-MON-yyyy')
, 'STCLERK'
, 2500
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 132
, 'TJ'
, 'Olson'
, 'TJOLSON'
, '650.124.8234'
, TODATE('10-APR-1999', 'dd-MON-yyyy')
, 'STCLERK'
, 2100
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 133
, 'Jason'
, 'Mallin'
, 'JMALLIN'
, '650.127.1934'
, TODATE('14-IUN-1996', 'dd-MON-yyyy')
, 'STCLERK'
, 3300
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 134
, 'Michael'
, 'Rogers'
, 'MROGERS'
, '650.127.1834'
, TODATE('26-AUG-1998', 'dd-MON-yyyy')
, 'STCLERK'
, 2900
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 135
, 'Ki'
, 'Gee'
, 'KGEE'
, '650.127.1734'
, TODATE('12-DEC-1999', 'dd-MON-yyyy')
, 'STCLERK'
, 2400
, NULL
29
, 122
, 50
);
INSERT INTO employees VALUES
( 136
, 'Hazel'
, 'Philtanker'
, 'HPHILTAN'
, '650.127.1634'
, TODATE('06-FEB-2000', 'dd-MON-yyyy')
, 'STCLERK'
, 2200
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 137
, 'Renske'
, 'Ladwig'
, 'RLADWIG'
, '650.121.1234'
, TODATE('14-IUL-1995', 'dd-MON-yyyy')
, 'STCLERK'
, 3600
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 138
, 'Stephen'
, 'Stiles'
, 'SSTILES'
, '650.121.2034'
, TODATE('26-OCT-1997', 'dd-MON-yyyy')
, 'STCLERK'
, 3200
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 139
, 'John'
, 'Seo'
, 'JSEO'
, '650.121.2019'
, TODATE('12-FEB-1998', 'dd-MON-yyyy')
, 'STCLERK'
, 2700
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
30
( 140
, 'Joshua'
, 'Patel'
, 'JPATEL'
, '650.121.1834'
, TODATE('06-APR-1998', 'dd-MON-yyyy')
, 'STCLERK'
, 2500
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 141
, 'Trenna'
, 'Rajs'
, 'TRAJS'
, '650.121.8009'
, TODATE('17-OCT-1995', 'dd-MON-yyyy')
, 'STCLERK'
, 3500
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 142
, 'Curtis'
, 'Davies'
, 'CDAVIES'
, '650.121.2994'
, TODATE('29-IAN-1997', 'dd-MON-yyyy')
, 'STCLERK'
, 3100
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 143
, 'Randall'
, 'Matos'
, 'RMATOS'
, '650.121.2874'
, TODATE('15-MAR-1998', 'dd-MON-yyyy')
, 'STCLERK'
, 2600
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 144
, 'Peter'
, 'Vargas'
, 'PVARGAS'
31
, '650.121.2004'
, TODATE('09-IUL-1998', 'dd-MON-yyyy')
, 'STCLERK'
, 2500
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 145
, 'John'
, 'Russell'
, 'JRUSSEL'
, '011.44.1344.429268'
, TODATE('01-OCT-1996', 'dd-MON-yyyy')
, 'SAMAN'
, 14000
, .4
, 100
, 80
);
INSERT INTO employees VALUES
( 146
, 'Karen'
, 'Partners'
, 'KPARTNER'
, '011.44.1344.467268'
, TODATE('05-IAN-1997', 'dd-MON-yyyy')
, 'SAMAN'
, 13500
, .3
, 100
, 80
);
INSERT INTO employees VALUES
( 147
, 'Alberto'
, 'Errazuriz'
, 'AERRAZUR'
, '011.44.1344.429278'
, TODATE('10-MAR-1997', 'dd-MON-yyyy')
, 'SAMAN'
, 12000
, .3
, 100
, 80
);
INSERT INTO employees VALUES
( 148
, 'Gerald'
, 'Cambrault'
, 'GCAMBRAU'
, '011.44.1344.619268'
, TODATE('15-OCT-1999', 'dd-MON-yyyy')
, 'SAMAN'
, 11000
32
, .3
, 100
, 80
);
INSERT INTO employees VALUES
( 149
, 'Eleni'
, 'Zlotkey'
, 'EZLOTKEY'
, '011.44.1344.429018'
, TODATE('29-IAN-2000', 'dd-MON-yyyy')
, 'SAMAN'
, 10500
, .2
, 100
, 80
);
INSERT INTO employees VALUES
( 150
, 'Peter'
, 'Tucker'
, 'PTUCKER'
, '011.44.1344.129268'
, TODATE('30-IAN-1997', 'dd-MON-yyyy')
, 'SAREP'
, 10000
, .3
, 145
, 80
);
INSERT INTO employees VALUES
( 151
, 'David'
, 'Bernstein'
, 'DBERNSTE'
, '011.44.1344.345268'
, TODATE('24-MAR-1997', 'dd-MON-yyyy')
, 'SAREP'
, 9500
, .25
, 145
, 80
);
INSERT INTO employees VALUES
( 152
, 'Peter'
, 'Hall'
, 'PHALL'
, '011.44.1344.478968'
, TODATE('20-AUG-1997', 'dd-MON-yyyy')
, 'SAREP'
, 9000
, .25
, 145
, 80
33
);
INSERT INTO employees VALUES
( 153
, 'Christopher'
, 'Olsen'
, 'COLSEN'
, '011.44.1344.498718'
, TODATE('30-MAR-1998', 'dd-MON-yyyy')
, 'SAREP'
, 8000
, .2
, 145
, 80
);
INSERT INTO employees VALUES
( 154
, 'Nanette'
, 'Cambrault'
, 'NCAMBRAU'
, '011.44.1344.987668'
, TODATE('09-DEC-1998', 'dd-MON-yyyy')
, 'SAREP'
, 7500
, .2
, 145
, 80
);
INSERT INTO employees VALUES
( 155
, 'Oliver'
, 'Tuvault'
, 'OTUVAULT'
, '011.44.1344.486508'
, TODATE('23-NOI-1999', 'dd-MON-yyyy')
, 'SAREP'
, 7000
, .15
, 145
, 80
);
INSERT INTO employees VALUES
( 156
, 'Janette'
, 'King'
, 'JKING'
, '011.44.1345.429268'
, TODATE('30-IAN-1996', 'dd-MON-yyyy')
, 'SAREP'
, 10000
, .35
, 146
, 80
);
INSERT INTO employees VALUES
( 157
, 'Patrick'
34
, 'Sully'
, 'PSULLY'
, '011.44.1345.929268'
, TODATE('04-MAR-1996', 'dd-MON-yyyy')
, 'SAREP'
, 9500
, .35
, 146
, 80
);
INSERT INTO employees VALUES
( 158
, 'Allan'
, 'McEwen'
, 'AMCEWEN'
, '011.44.1345.829268'
, TODATE('01-AUG-1996', 'dd-MON-yyyy')
, 'SAREP'
, 9000
, .35
, 146
, 80
);
INSERT INTO employees VALUES
( 159
, 'Lindsey'
, 'Smith'
, 'LSMITH'
, '011.44.1345.729268'
, TODATE('10-MAR-1997', 'dd-MON-yyyy')
, 'SAREP'
, 8000
, .3
, 146
, 80
);
INSERT INTO employees VALUES
( 160
, 'Louise'
, 'Doran'
, 'LDORAN'
, '011.44.1345.629268'
, TODATE('15-DEC-1997', 'dd-MON-yyyy')
, 'SAREP'
, 7500
, .3
, 146
, 80
);
INSERT INTO employees VALUES
( 161
, 'Sarath'
, 'Sewall'
, 'SSEWALL'
, '011.44.1345.529268'
, TODATE('03-NOI-1998', 'dd-MON-yyyy')
35
, 'SAREP'
, 7000
, .25
, 146
, 80
);
INSERT INTO employees VALUES
( 162
, 'Clara'
, 'Vishney'
, 'CVISHNEY'
, '011.44.1346.129268'
, TODATE('11-NOI-1997', 'dd-MON-yyyy')
, 'SAREP'
, 10500
, .25
, 147
, 80
);
INSERT INTO employees VALUES
( 163
, 'Danielle'
, 'Greene'
, 'DGREENE'
, '011.44.1346.229268'
, TODATE('19-MAR-1999', 'dd-MON-yyyy')
, 'SAREP'
, 9500
, .15
, 147
, 80
);
INSERT INTO employees VALUES
( 164
, 'Mattea'
, 'Marvins'
, 'MMARVINS'
, '011.44.1346.329268'
, TODATE('24-IAN-2000', 'dd-MON-yyyy')
, 'SAREP'
, 7200
, .10
, 147
, 80
);
INSERT INTO employees VALUES
( 165
, 'David'
, 'Lee'
, 'DLEE'
, '011.44.1346.529268'
, TODATE('23-FEB-2000', 'dd-MON-yyyy')
, 'SAREP'
, 6800
, .1
, 147
36
, 80
);
INSERT INTO employees VALUES
( 166
, 'Sundar'
, 'Ande'
, 'SANDE'
, '011.44.1346.629268'
, TODATE('24-MAR-2000', 'dd-MON-yyyy')
, 'SAREP'
, 6400
, .10
, 147
, 80
);
INSERT INTO employees VALUES
( 167
, 'Amit'
, 'Banda'
, 'ABANDA'
, '011.44.1346.729268'
, TODATE('21-APR-2000', 'dd-MON-yyyy')
, 'SAREP'
, 6200
, .10
, 147
, 80
);
INSERT INTO employees VALUES
( 168
, 'Lisa'
, 'Ozer'
, 'LOZER'
, '011.44.1343.929268'
, TODATE('11-MAR-1997', 'dd-MON-yyyy')
, 'SAREP'
, 11500
, .25
, 148
, 80
);
INSERT INTO employees VALUES
( 169
, 'Harrison'
, 'Bloom'
, 'HBLOOM'
, '011.44.1343.829268'
, TODATE('23-MAR-1998', 'dd-MON-yyyy')
, 'SAREP'
, 10000
, .20
, 148
, 80
);
INSERT INTO employees VALUES
( 170
37
, 'Tayler'
, 'Fox'
, 'TFOX'
, '011.44.1343.729268'
, TODATE('24-IAN-1998', 'dd-MON-yyyy')
, 'SAREP'
, 9600
, .20
, 148
, 80
);
INSERT INTO employees VALUES
( 171
, 'William'
, 'Smith'
, 'WSMITH'
, '011.44.1343.629268'
, TODATE('23-FEB-1999', 'dd-MON-yyyy')
, 'SAREP'
, 7400
, .15
, 148
, 80
);
INSERT INTO employees VALUES
( 172
, 'Elizabeth'
, 'Bates'
, 'EBATES'
, '011.44.1343.529268'
, TODATE('24-MAR-1999', 'dd-MON-yyyy')
, 'SAREP'
, 7300
, .15
, 148
, 80
);
INSERT INTO employees VALUES
( 173
, 'Sundita'
, 'Kumar'
, 'SKUMAR'
, '011.44.1343.329268'
, TODATE('21-APR-2000', 'dd-MON-yyyy')
, 'SAREP'
, 6100
, .10
, 148
, 80
);
INSERT INTO employees VALUES
( 174
38
, 'Ellen'
, 'Abel'
, 'EABEL'
, '011.44.1644.429267'
, TODATE('11-MAI-1996', 'dd-MON-yyyy')
, 'SAREP'
, 11000
, .30
, 149
, 80
);
INSERT INTO employees VALUES
( 175
, 'Alyssa'
, 'Hutton'
, 'AHUTTON'
, '011.44.1644.429266'
, TODATE('19-MAR-1997', 'dd-MON-yyyy')
, 'SAREP'
, 8800
, .25
, 149
, 80
);
INSERT INTO employees VALUES
( 176
, 'Jonathon'
, 'Taylor'
, 'JTAYLOR'
, '011.44.1644.429265'
, TODATE('24-MAR-1998', 'dd-MON-yyyy')
, 'SAREP'
, 8600
, .20
, 149
, 80
);
INSERT INTO employees VALUES
( 177
, 'Jack'
, 'Livingston'
, 'JLIVINGS'
, '011.44.1644.429264'
, TODATE('23-APR-1998', 'dd-MON-yyyy')
, 'SAREP'
, 8400
, .20
, 149
, 80
);
INSERT INTO employees VALUES
( 178
39
, 'Kimberely'
, 'Grant'
, 'KGRANT'
, '011.44.1644.429263'
, TODATE('24-MAI-1999', 'dd-MON-yyyy')
, 'SAREP'
, 7000
, .15
, 149
, NULL
);
INSERT INTO employees VALUES
( 179
, 'Charles'
, 'Johnson'
, 'CJOHNSON'
, '011.44.1644.429262'
, TODATE('04-IAN-2000', 'dd-MON-yyyy')
, 'SAREP'
, 6200
, .10
, 149
, 80
);
INSERT INTO employees VALUES
( 180
, 'Winston'
, 'Taylor'
, 'WTAYLOR'
, '650.507.9876'
, TODATE('24-IAN-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 3200
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 181
, 'Jean'
, 'Fleaur'
, 'JFLEAUR'
, '650.507.9877'
, TODATE('23-FEB-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 3100
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 182
40
, 'Martha'
, 'Sullivan'
, 'MSULLIVA'
, '650.507.9878'
, TODATE('21-IUN-1999', 'dd-MON-yyyy')
, 'SHCLERK'
, 2500
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 183
, 'Girard'
, 'Geoni'
, 'GGEONI'
, '650.507.9879'
, TODATE('03-FEB-2000', 'dd-MON-yyyy')
, 'SHCLERK'
, 2800
, NULL
, 120
, 50
);
INSERT INTO employees VALUES
( 184
, 'Nandita'
, 'Sarchand'
, 'NSARCHAN'
, '650.509.1876'
, TODATE('27-IAN-1996', 'dd-MON-yyyy')
, 'SHCLERK'
, 4200
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 185
, 'Alexis'
, 'Bull'
, 'ABULL'
, '650.509.2876'
, TODATE('20-FEB-1997', 'dd-MON-yyyy')
, 'SHCLERK'
, 4100
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 186
41
, 'Julia'
, 'Dellinger'
, 'JDELLING'
, '650.509.3876'
, TODATE('24-IUN-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 3400
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 187
, 'Anthony'
, 'Cabrio'
, 'ACABRIO'
, '650.509.4876'
, TODATE('07-FEB-1999', 'dd-MON-yyyy')
, 'SHCLERK'
, 3000
, NULL
, 121
, 50
);
INSERT INTO employees VALUES
( 188
, 'Kelly'
, 'Chung'
, 'KCHUNG'
, '650.505.1876'
, TODATE('14-IUN-1997', 'dd-MON-yyyy')
, 'SHCLERK'
, 3800
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 189
, 'JenniIer'
, 'Dilly'
, 'JDILLY'
, '650.505.2876'
, TODATE('13-AUG-1997', 'dd-MON-yyyy')
, 'SHCLERK'
, 3600
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 190
42
, 'Timothy'
, 'Gates'
, 'TGATES'
, '650.505.3876'
, TODATE('11-IUL-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 2900
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 191
, 'Randall'
, 'Perkins'
, 'RPERKINS'
, '650.505.4876'
, TODATE('19-DEC-1999', 'dd-MON-yyyy')
, 'SHCLERK'
, 2500
, NULL
, 122
, 50
);
INSERT INTO employees VALUES
( 192
, 'Sarah'
, 'Bell'
, 'SBELL'
, '650.501.1876'
, TODATE('04-FEB-1996', 'dd-MON-yyyy')
, 'SHCLERK'
, 4000
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 193
, 'Britney'
, 'Everett'
, 'BEVERETT'
, '650.501.2876'
, TODATE('03-MAR-1997', 'dd-MON-yyyy')
, 'SHCLERK'
, 3900
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 194
43
, 'Samuel'
, 'McCain'
, 'SMCCAIN'
, '650.501.3876'
, TODATE('01-IUL-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 3200
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 195
, 'Vance'
, 'Jones'
, 'VJONES'
, '650.501.4876'
, TODATE('17-MAR-1999', 'dd-MON-yyyy')
, 'SHCLERK'
, 2800
, NULL
, 123
, 50
);
INSERT INTO employees VALUES
( 196
, 'Alana'
, 'Walsh'
, 'AWALSH'
, '650.507.9811'
, TODATE('24-APR-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 3100
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 197
, 'Kevin'
, 'Feeney'
, 'KFEENEY'
, '650.507.9822'
, TODATE('23-MAI-1998', 'dd-MON-yyyy')
, 'SHCLERK'
, 3000
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 198
44
, 'Donald'
, 'OConnell'
, 'DOCONNEL'
, '650.507.9833'
, TODATE('21-IUN-1999', 'dd-MON-yyyy')
, 'SHCLERK'
, 2600
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 199
, 'Douglas'
, 'Grant'
, 'DGRANT'
, '650.507.9844'
, TODATE('13-IAN-2000', 'dd-MON-yyyy')
, 'SHCLERK'
, 2600
, NULL
, 124
, 50
);
INSERT INTO employees VALUES
( 200
, 'JenniIer'
, 'Whalen'
, 'JWHALEN'
, '515.123.4444'
, TODATE('17-SEP-1987', 'dd-MON-yyyy')
, 'ADASST'
, 4400
, NULL
, 101
, 10
);
INSERT INTO employees VALUES
( 201
, 'Michael'
, 'Hartstein'
, 'MHARTSTE'
, '515.123.5555'
, TODATE('17-FEB-1996', 'dd-MON-yyyy')
, 'MKMAN'
, 13000
, NULL
, 100
, 20
);
INSERT INTO employees VALUES
( 202
45
, 'Pat'
, 'Fay'
, 'PFAY'
, '603.123.6666'
, TODATE('17-AUG-1997', 'dd-MON-yyyy')
, 'MKREP'
, 6000
, NULL
, 201
, 20
);
INSERT INTO employees VALUES
( 203
, 'Susan'
, 'Mavris'
, 'SMAVRIS'
, '515.123.7777'
, TODATE('07-IUN-1994', 'dd-MON-yyyy')
, 'HRREP'
, 6500
, NULL
, 101
, 40
);
INSERT INTO employees VALUES
( 204
, 'Hermann'
, 'Baer'
, 'HBAER'
, '515.123.8888'
, TODATE('07-JUN-1994', 'dd-MON-yyyy')
, 'PRREP'
, 10000
, NULL
, 101
, 70
);
INSERT INTO employees VALUES
( 205
, 'Shelley'
, 'Higgins'
, 'SHIGGINS'
, '515.123.8080'
, TODATE('07-IUN-1994', 'dd-MON-yyyy')
, 'ACMGR'
, 12000
, NULL
, 101
, 110
);
INSERT INTO employees VALUES
( 206
46
, 'William'
, 'Gietz'
, 'WGIETZ'
, '515.123.8181'
, TODATE('07-IUN-1994', 'dd-MON-yyyy')
, 'ACACCOUNT'
, 8300
, NULL
, 205
, 110
);
.n!eram date in tabelul UO?)H.(TORJ
INSERT INTO jobhistory
VALUES (102
, TODATE('13-IAN-1993', 'dd-MON-yyyy')
, TODATE('24-IUL-1998', 'dd-MON-yyyy')
, 'ITPROG'
, 60);
INSERT INTO jobhistory
VALUES (101
, TODATE('21-SEP-1989', 'dd-MON-yyyy')
, TODATE('27-OCT-1993', 'dd-MON-yyyy')
, 'ACACCOUNT'
, 110);
INSERT INTO jobhistory
VALUES (101
, TODATE('28-OCT-1993', 'dd-MON-yyyy')
, TODATE('15-MAR-1997', 'dd-MON-yyyy')
, 'ACMGR'
, 110);
INSERT INTO jobhistory
VALUES (201
, TODATE('17-FEB-1996', 'dd-MON-yyyy')
, TODATE('19-DEC-1999', 'dd-MON-yyyy')
, 'MKREP'
, 20);
INSERT INTO jobhistory
VALUES (114
, TODATE('24-MAR-1998', 'dd-MON-yyyy')
, TODATE('31-DEC-1999', 'dd-MON-yyyy')
, 'STCLERK'
, 50
);
INSERT INTO jobhistory
VALUES (122
, TODATE('01-IAN-1999', 'dd-MON-yyyy')
, TODATE('31-DEC-1999', 'dd-MON-yyyy')
, 'STCLERK'
, 50
47
);
INSERT INTO jobhistory
VALUES (200
, TODATE('17-SEP-1987', 'dd-MON-yyyy')
, TODATE('17-IUN-1993', 'dd-MON-yyyy')
, 'ADASST'
, 90
);
INSERT INTO jobhistory
VALUES (176
, TODATE('24-MAR-1998', 'dd-MON-yyyy')
, TODATE('31-DEC-1998', 'dd-MON-yyyy')
, 'SAREP'
, 80
);
INSERT INTO jobhistory
VALUES (176
, TODATE('01-IAN-1999', 'dd-MON-yyyy')
, TODATE('31-DEC-1999', 'dd-MON-yyyy')
, 'SAMAN'
, 80
);
INSERT INTO jobhistory
VALUES (200
, TODATE('01-IUL-1994', 'dd-MON-yyyy')
, TODATE('31-DEC-1998', 'dd-MON-yyyy')
, 'ACACCOUNT'
, 90
);
.n!eram datele in tabelul UO?)*RADE(
INSERT INTO JOBGRADES VALUES (1, 2000, 5000);
INSERT INTO JOBGRADES VALUES (2, 5001, 7000);
INSERT INTO JOBGRADES VALUES (3, 7001, 10000);
INSERT INTO JOBGRADES VALUES (4, 10001,13000);
INSERT INTO JOBGRADES VALUES (5, 13001,16000);
INSERT INTO JOBGRADES VALUES (6, 16001,19000);
INSERT INTO JOBGRADES VALUES (7, 19001,99000);
Reluam e6er"itiul
SELECT * FROM employees;
/*10. %nregistr&ri selectate!*/
SELECT * FROM departments;
/*2> %nregistr&ri selectate!*/
SELECT * FROM jobs;*/
/*19 nregistrri selectate.*/
SELECT * FROM jobhistory;
/*10 %nregistr&ri selectate!*/
SELECT * FROM locations;
*/22 %nregistr&ri selectate!
SELECT * FROM countries;
48
*/22 %nregistr&ri selectate!
SELECT * FROM regions;
*/1 inregistrari */
0. ( !e obtin 1n" o dat re4ultatul "ererii %re"edente, fr a re!"rie "ererea.
&#s% +ltima "omand (OL lan!at de "tre "lient e!te %!trat 1n buffer>ul (OL. Pentru rularea a"e!teia !e
utili4ea4 VWX !au R+$.
R+$ !au W
/* Acelasi re4(ltat ca la e=! 3
5. Li!tati !tru"tura tabelului E,PLOJEE( !i a%oi dati "omanda R+$ (!au VWX). Ce ob!ervati@ Comen4ile
(OL2Plu! !unt %!trate 1n buffer@
DESC employees
RUN
/*Co*en4ile s(nt $astrate in b())er!
7. ( !e afi!e4e "odul an3ajatului, numele, "odul job>ului, data an3ajrii. (alvati in!tru"iunea (OL 1ntr>un
fi!ier numit %1)10.!Rl.
&#s% Pentru !alvarea ultimei "omen4i (OL !e utili4ea4 "omanda (A/E. Pre"i4area e6ten!iei Y.!RlX a
fi!ierului nu e!te obli3atorie.
(ELECT em%loTee)id, la!t)name, job)id, Bire)date
-RO, em%loTee!K
(A/E 4#ZSZ %1)10.!Rl
SELECT employeeid, lastname, jobid, hiredate
FROM employees;
SAVE E:\Oracle\p114.sql
8. Ree6e"utati "ererea folo!ind fi!ierul %1)10.!Rl.
(TART 4#ZSZ %1)10.!Rl !au [ 4#ZSZ %1)10.!Rl
START E:\Oracle\p114.sql?
E:\Oracle\p114.sql?
9. Editati fi!ierul %1)10.!Rl, adu3nd "oloanelor "te un alia! ("od, nume, "od job, data an3ajarii).
ED.T 4#ZSZ %1)10.!Rl
EDIT E:\Oracle\p114.sql;
SELECT employeeid cod, lastname nume, jobid "cod job", hiredate "data angajarii"
FROM employees;
:. ( !e li!te4e, "u !i fr du%li"ate, "odurile job>urilor din tabelul E,PLOJEE(.
&#s. D.(T.$CT \ +$.O+E
SELECT DISTINCT jobid FROM employees;
sa(
SELECT UNIQUE jobid FROM employees;
SELECT jobid FROM employees;
1;. ( !e afi!e4e numele "on"atenat "u %renumele, !e%arate %rin !%atiu. Eti"Betati "oloana V$ume !i
%renumeX.
&#s% O%eratorul de "on"atenare e!te VEEX. (irurile de "ara"tere !e !%e"ifi" 1ntre a%o!trofuri ($+ 3Bilimele,
"a4 1n "are ar fi inter%retate "a alia!>uri).
SELECT lastname,,' ',,Iirstname "Nume si prenume"
49
FROM employees;
11. ( !e li!te4e numele !i !alariul an3ajatilor "are "!ti3 mai mult de 1;;;; ].
SELECT lastname, salary
FROM employees
WHERE salary ~ 10000;
1&. ( !e modifi"e "ererea anterioar a!tfel 1n"t ! afi!e4e numele !i !alariul %entru toti an3ajatii al "ror
!alariu e!te "u%rin! 1ntre 5;;;] !i1;;;;].
&#s% Pentru te!tarea a%artenentei la un domeniu de valori !e %oate utili4a o%eratorul C$OTD ?ETFEE$
valoare- A$D valoare2
SELECT lastname, salary
FROM employees
WHERE salary BETWEEN 5000 AND 10000;
1'. ( !e "ree4e o "erere %entru a afi!a numele an3ajatului !i numrul de%artamentului %entru an3ajatul
1;0.
SELECT lastname, departmentid
FROM employees WHERE employeeid 104;
10. ( !e afi!e4e numele !i !alariul %entru toti an3ajatii din de%artamentele 1; !au ';, 1n ordine alfabeti" a
numelor.
&#s% A%artenenta la o multime finit de valori !e %oate te!ta %rin intermediul o%eratorului .$, urmat de
li!ta valorilor 1ntre %arante4e !i !e%arate %rin vir3ule#
e.presie .$ (valoare_-, valoare_2, S, valoare_n)
SELECT lastname, salary
FROM employees
WHERE departmentid IN (10, 30)
ORDER BY lastname;
/*a)isea4a n(*ai n(*ele salariatilor in ordine al)abetica
(au
SELECT lastname,,' ',,Iirstname "Nume complet", salary
FROM employees
WHERE departmentid IN (10,30)
ORDER BY lastname, Iirstname;
/* a)isea4a last-*a*e si )rist-na*e (n(*ele co*$let" in ordine al)abetica!
15. ( li!te4e numele !i !alariile an3ajatilor "are "!ti3 mai mult de 1;;;; ] !i lu"rea4 1n de%artamentul
1; !au ';. (e vor eti"Beta "oloanele dre%t An3ajat !i (alariu lunar.
SELECT lastname "Angajat", salary "Salariu lunar"
FROM employees
WHERE departmentid IN(10,30);
17. Care e!te data "urent@
Obs: 9se(docoloana care ret(rnea4@ data c(rent@ este S,S<AE! 9entr( co*$letarea sinta=ei obligatorii a
co*en4ii SEAEC2 se (tili4ea4@ tabel(l <BAA:
SEAEC S,S<AE
CROD d(al?
<atele calendaristice $ot )i )or*atate c( a0(tor(l )(nctiei O-C7AR(data2 )or*at"2 (nde )or*at(l $oate )i
alc@t(it dintr-o co*binatie a (r*@toarelor ele*ente#
50
Element (emnifi"aie
D Numrul zilei din sptmn (duminic1;
luni2; .smbt6).
DD Numrul zilei din lun.
DDD Numrul zilei din an.
DY Numele zilei din sptmn, printr-o
abreviere de 3 litere (MON, THU etc.)
DAY Numele zilei din sptmn, scris n
ntregime.
MM Numrul lunii din an.
MON Numele lunii din an, printr-o abreviere de 3
litere (JAN, FEB etc.)
MONTH Numele lunii din an, scris n ntregime.
Y Ultima ciIr din an
YY, YYY, YYYY Ultimele 2, 3, respectiv 4 ciIre din an.
YEAR Anul, scris n litere (ex: two thousand
Iour).
HH12, HH24 Orele din zi, ntre 0-12, respectiv 0-24.
MI Minutele din or.
SS Secundele din minut.
SSSSS Secundele trecute de la miezul nopNii.
SELECT sysdate FROM DUAL;
18. ( !e afi!e4e numele !i data an3ajrii %entru fie"are !alariat "are a fo!t an3ajat 1n 1:98. (e "er & !olutii#
una 1n "are !e lu"rea4 "u formatul im%li"it al datei !i alta %rin "are !e formatea4 data.
Varianta-- cu formatul implicit al datei
SELECT lastname, hiredate
FROM employees
WHERE hiredate LIKE ('87');
Varianta 2 / cu data formatata
SELECT lastname, hiredate
FROM employees
WHERE TOCHAR(hiredate, 'YYYY' ) 1987;
(unt obli3atorii 3Bilimelele de la !irul ^1:98M@ Ce ob!ervati@
$u !unt obli3atorii.
19. ( !e afi!e4e numele !i job>ul %entru toti an3ajatii "are nu au mana3er.
SELECT lastname, jobid
FROM employees
WHERE managerid IS NULL;
1:. ( !e afi!e4e numele, !alariul !i "omi!ionul %entru toti !alariatii "are "!ti3 "omi!ioane. ( !e !orte4e
datele 1n ordine de!"re!"toare a !alariilor, iar %entru "ei "are au a"ela!i !alariu 1n ordine "re!"toare a
"omi!ioanelor.
SELECT lastname, salary, commissionpct
FROM employees
WHERE commissionpct IS NOT NULL
ORDER BY salary DESC, commissionpct ASC;
&;. ( !e li!te4e numele tuturor an3ajatilor "are au a treia litera din nume LaL.
51
Obs: Pentru a Iorma mstile de caractere utilizate mpreun cu operatorul LIKE cu scopul de a compara sirurile
de caractere, se utilizeaz:
- reprezentnd orice sir de caractere, inclusiv sirul vid; (underscore) reprezentnd un singur caracter.
SELECT DISTINCT lastname
FROM employees WHERE lastname LIKE 'a';
&1. -olo!ind data "urent ! !e afi!e4e urmtoarele informatii#
> numele 4ilei, numrul 4ilei din !%tmn, numrul 4ilei din luna, re!%e"tiv numrul 4ilei din anK
SELECT TOCHAR(SYSDATE,'DAY,D,DD,DDD') FROM DUAL;
> numrul lunii din an, numele lunii "u abreviere la ' "ara"tere, re!%e"tiv numele "om%let al luniiK
SELECT TOCHAR(SYSDATE,'MM-MON-MONTH') FROM DUAL;
> ora "urent (ora, minute, !e"unde).
SELECT TOCHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
&&. ( !e li!te4e numele de%artamentelor "are fun"tionea4 1n lo"atia avnd "odul 18;; !i al "ror mana3er
e!te "uno!"ut.
SELECT departmentname
FROM departments
WHERE locationid1700 AND managerid IS NOT NULL;
&'. ( !e afi!e4e "odurile de%artamentelor 1n "are lu"rea4 !alariati.
SELECT DISTINCT departmentid
FROM employees
WHERE departmentid IS NOT NULL
ORDER BY departmentid;
&0. ( !e afi!e4e numele !i %renumele !alariatilor an3ajati 1n luna mai 1:98.
SELECT lastname, Iirstname
FROM employees
WHERE TOCHAR(hiredate, 'MON,YYYY') 'may-1987';
Sa(
SELECT lastname, Iirstname
FROM employees
WHERE TOCHAR (hiredate, 'mm-YYYY') '05-1987';
&5. ( !e li!te4e "odurile an3ajatilor "are au avut !i alte joburi fat de "el %re4ent. ( !e ordone4e re4ultatul
de!"re!"tor du% "odul an3ajatului.
SELECT departmentname FROM departments
WHERE managerid IS NOT NULL;
&7. ( !e afi!e4e numele !i data an3ajrii %entru "ei "are lu"rea4 1n de%artamentul 9; !i au fo!t an3ajati 1n
luna martie a anului 1::8.
SELECT lastname, hiredate
FROM employees
WHERE TOCHAR(hiredate, 'MON-YYYY') 'MAR-1987' AND departmentid 80;
&8. ( !e afi!e4e numele joburilor "are %ermit un !alariu "u%rin! 1ntre 9';;] !i 10;;;].
52
SELECT DISTINCT j.jobtitle, s.salary
FROM jobs j, employees s
WHERE j.jobid s.jobid and salary BETWEEN 8300 AND 14000
ORDER BY salary DESC;
&9. Care e!te 3rila de !alari4are %entru un !alariu de 1;;;;]@
SELECT * FROM employees WHERE salary 10000;
&:. ( !e li!te4e numele tuturor an3ajatilor "are au & litere LLL 1n nume !i lu"rea4 1n de%artamentul '; !au
mana3erul lor e!te 1&'.
SELECT lastname,,' ',,Iirstname "Numele si prenumele"
FROM employees
WHERE lastname LIKE 'LL'
AND departmentid 30 OR
managerid 123;
';. ( !e afi!e4e numele, job>ul !i !alariul %entru toti !alariatii al "ror job "ontine !irul LCLERIL !au
LREPL !i !alariul nu e!te e3al "u 1;;;, &;;; !au ';;; ].
'1. ( !e afi!e4e numele, !alariul !i "omi!ionul %entru toti an3ajatii al "ror !alariu e!te mai mare de"t de
5 ori valoarea "omi!ionului (!alarT2"ommi!!ion)%"t25).
SELECT lastname,,' ',,Iirstname "Numele si prenumele", commissionpct
FROM employees
WHERE salary ~ commissionpct*5;
-+$C_.. (OL (!in3le>roG)
Prin"i%alele fun"tii (OL %ot fi "la!ifi"ate 1n urmtoarele "ate3orii#
` -un"tii !in3le>roG
` -un"tii multi%le>roG (fun"tii a3re3at)
-un"tiile !in3le>roG returnea4 "te o linie re4ultat %entru fie"are linie a tabelului !au vi4uali4rii
intero3ate. A"e!te fun"tii %ot a%rea 1n li!tele (ELECT, "lau4ele FHERE, (TART F.TH, CO$$ECT ?J
!i HA/.$*.
1. Anali4ati urmtoarele fun"tii %entru %relu"rarea !irurilor de "ara"tere#
LOFER (expresie) - Converteste un sir de caractere la minuscule.
LOFER (LAbCdEL) \ Lab"deL
+PPER (expresie) - Converteste un sir de caractere
+PPER (LAbCdEL) \ LA?CDEL
.$.TCAP (expresie) - Converteste un sir de caractere la un sir care ncepe cu majuscul si continu cu
.$.TCAP (LAbCdEL) \ LAb"deL
.$.TCAP (expresie) - Converteste un sir de caractere la un sir care ncepe cu majuscul si continu cu minuscule.
.$.TCAP (LAbCdEL) \ LAb"deL
53
(+?(TR (expresie, m|, n|) - Extrage din expresia de tip sir de caractere, n caractere ncepnd cu pozitia *. Dac
lipseste argumentul n, atunci extrage toate caracterele pn la sIrsitul sirului. Dac * este negativ numrtoarea
poziNiilor ncepe de la sIrsitul sirului de caractere spre nceput.
(+?(TR (LAbCdEL, &) \ LbCdEL
(+?(TR (LAbCdEL, >',&) \ LCdL
(+?(TR (LAbCdEL, >') \ LCdEL
LE$*TH (expresie) - Returneaz numrul de caractere al expresiei.
LE$*TH (LAbCdEL) \ 5
.$(TR (expresie, expr1|, m||, n|) - Returneaz pozitia la care se gseste a n-a ocurent a expresiei 'expr1' n
cadrul expresiei 'expresie', cutarea ncepnd de la poziNia *. Daca * sau n lipsesc, valorile implicite sunt 1
pentru ambele.
.$(TR (LOFER(LAbCdE a?"DeL), LabL, 5) \ 8
.$(TR (LOFER(LAbC a?"DeL), LabL, 5, &) \ ;
LTR., (expresie|, expr1|) sau RTRIM (expresie|, expr1|) - Reversul Iunctiilor LPAD, RPAD. Truncheaz
expresia RTRIM (expresie|, expr1|) caracter la stnga sau la dreapta prin eliminarea succesiv a caracterelor din
expresia expr1. Implicit, daca lipseste, expr1 'abcde'
RTR., (Lab"deNNNNL, LNL) \ Lab"deL
LTR., (L ab"deL) \ Lab"deL
TR., (LEAD.$* E TRA.L.$* E ?OTH "ara"tere)trim -RO, e6%re!ie) - Permite eliminarea caracterelor
speciIicate (caracteretrim) de la nceputul (leading) , sIrsitul (trailing) sau din ambele prti, dintr-o expresie
caracter data.
TR., (LEAD.$* LNL -RO,
LNNNab"deNNNL) \ Lab"deNNNL
TR., (TRA.L.$* LNL -RO,
LNNNab"deNNNL) \ LNNNab"deL
TR., ( ?OTH LNL -RO,
NNNab"deNNNL) \ Lab"deL
TR., (L ab"de L) \ Lab"deL
&. ( !e afi!e4e %entru fie"are an3ajat din de%artamentul &; un !ir de "ara"tere de forma a-un"tia
!alariatului P%renumeQ PnumeQ e!te P"od fun"tieQa.
( !e afi!e4e %renumele "u initiala litera mare, iar numele "u litere mari ((te%Ben I.$*), iar "odul fun"tiei
! !e afi!e4e "u litere mi"i.
SELECT 'Functia salariatului ' ,, INITCAP(Iirstname),,' ',,UPPER(lastname) ,,' este ' ,,LOWER(jobid),,' .' AS
"Angajatul si codul Iunctiei"
FROM employees
WHERE departmentid 20;
'. ( !e afi!e4e %entru an3ajatul "u numele LH.**.$(L "odul, numele !i "odul de%artamentului. Cum !e
!"rie "onditia din FHERE a!tfel 1n"t ! e6i!te !i3uranta "a an3ajatul LH.**.$(L va fi 3!it ori"um ar fi
fo!t introdu! numele a"e!tuia@ Cutarea trebuie ! nu fie "a!e>!en!itive, iar eventualele blanb>uri "are
%re"ed !au urmea4 numelui trebuie i3norate.
SELECT employeeid, lastname, departmentid
FROM employees
WHERE UPPER(TRIM(lastname)) 'HIGGINS';
0. ( !e afi!e4e %entru toti an3ajatii al "ror nume !e termin 1n LnL, "odul, numele, lun3imea numelui !i
%o4itia din nume 1n "are a%are %rima data litera LaL. A!o"iati alia!uri "oloanelor returnate de "erere.
54
SELECT employeeid, lastname, LENGTH(lastname), INSTR(UPPER(lastname), 'A')
FROM employees
WHERE SUBSTR(lastname,-1)'n';
5. Anali4ati urmtoarele fun"tii aritmeti"e#
RO+$D (expresie |, n|) - Returneaz valoarea rotunjit a expresiei pn la n zecimale. Daca n este negativ sunt
rotunjite ciIre din stnga virgulei. Valoarea implicit pentru n este 0.
RO+$D(1.7) \ &
RO+$D(1.0) \ 1
RO+$D (1&'0.57,1) \ 1&'0.7
RO+$D (1&';.57, >&) \ 1&;;
RO+$D (1&7;.57, >&) \ 1';;
,OD (m,n) - Returneaz restul mprtirii lui * la n.
,OD (11, 0) \ ,OD (11, >0) \ '
,OD(>11, 0) \ ,OD (>11, >0) \ >'
8. ( !e afi!e4e numele, !alariul !i numrul de mii al !alariului rotunjit la & 4e"imale %entru "ei "are nu au
!alariul divi4ibil "u 1;;;.
SELECT lastname, salary, ROUND(salary/1000 ,2) "MII LEI"
FROM employees
WHERE MOD(salary,1000) !0;
9. Anali4ati urmtoarele o%eratii %e e6%re!ii de ti% dat "alendari!ti"#
date >W< number - Date - Scade/Adaug un numr de zile dintr-o / la o dat.
date1 > date& - Number - ntoarce numrul de zile dintre dou date calendaristice.
date <W> numberW&0 Date - Scade/Adaug un numr de ore la o / dintr-o dat calendaristic.
:. S se aIiseze data (luna, ziua, ora, minutul si secunda) de peste 10 zile.
SYSDATE10
SELECT TOCHAR(SYSDATE30, MONTH DD HH24:MM:SS`) 'Data
FROM DUAL;
1;. ( !e afi!e4e numrul de 4ile rma!e %n la !fr!itul anului. RO+$D(TO)DATE(M'1>DEC>&;;:M)>
(J(DATE)
SELECT ROUND(TODATE('31-DEC-2009') - SYSDATE) FROM DUAL;
11. a. ( !e afi!e4e data de %e!te 1& ore. (J(DATE<1&W&0
SELECT SYSDATE 12/24 FROM DUAL;
Sa(
SELECT TOCHAR(SYSDATE12/24, DD/MM HH24:MM:SS`) 'Data
FROM DUAL;
11. b. ( !e afi!e4e data de %e!te 5 minute. (J(DATE<1W&99
SELECT SYSDATE 1/288 FROM DUAL;
Sa( + data2 incl(4iv *in(tele si sec(ndele
SELECT TOCHAR(SYSDATE1/288, DD/MM HH24:MM:SS`) 'Data
FROM DUAL;
1&. Anali4ati urmtoarele fun"tii %entru %relu"rarea datelor "alendari!ti"e#
55
(J(DATE - ntoarce data si timpul curent
,O$TH()?ETFEE$ (date1, date2) - Returneaz numrul de luni dintre data date1 si data date2. Rezultatul
poate Ii pozitiv sau negativ dup cum date1 este mai recent sau nu Iat de date2. Zecimalele reprezint parti
dintr-o luna!
RO+$D(,O$TH()?ETFEE$
((J(DATE < '1, (J(DATE)) \ 1
ADD),O$TH( (date, n) - Adaug n luni la o data speciIicat. Valoarea n trebuie s Iie ntreag (pozitiv sau
negativ).
ADD),O$TH( (date, n)
,O$TH()?ETFEE$
(ADD),O$TH(((J(DATE, '),
(J(DATE) \ '
$ENT)DAJ (date, "Bar) - Returneaz data corespunztoare primei zile a sptmnii speciIicate (char) care
urmeaz dup date.
$ENT)DAJ(L15>de">&;;7L,L,ondaTL) \ L19>de">&;;7L
$ENT)DAJ (L15>de">&;;7L,1) \ L19>de">&;;7L
1'. ( !e afi!e4e numele an3ajatului, data an3ajrii !i data ne3o"ierii !alariului, "are a avut lo" 1n %rima 4i
de Luni, du% 7 luni de !ervi"iu. Eti"Betati a"ea!t "oloan V$e3o"iereX.
$ENT)DAJ(ADD),O$TH((Bire)date, 7), ^,ondaTM)
SELECT lastname, hiredate,
NEXTDAY(ADDMONTHS(hiredate, 6), 'Luni') "Negociere"
FROM employees;
10. Pentru fie"are an3ajat ! !e afi!e4e numele !i numrul de luni de la data an3ajrii. Eti"Betati
"oloanaVLuni lu"rateX. ( !e ordone4e re4ultatul du% numrul de luni lu"rate. (e va rotunji numrul de
luni la "el mai a%ro%iat numr 1ntre3.
SELECT lastname, ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) 'Luni lucrate
FROM employees
ORDER BY MONTHSBETWEEN(SYSDATE, hiredate);
SELECT lastname, ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) 'Luni lucrate
FROM employees
ORDER BY 'Luni lucrate;
SELECT lastname, ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) 'Luni lucrate
FROM employees
ORDER BY 2;
15. Anali4ati urmtoarele fun"tii de "onver!ie#
&#s. Conversiile implicite asigurate de server-ul Oracle sunt:
de la VARCHAR2 sau CHAR la NUMBER;
de la VARCHAR2 sau CHAR la DATE;
de la NUMBER la VARCHAR2 sau CHAR;
de la DATE la VARCHAR2 sau CHAR.
SELECT lastname
FROM employees
WHERE TOCHAR(hiredate,'yyyy')1994;
/* a)isea4a o sing(ra coloana c( n(*ele salariatilor care a( )ost anga0ati in an(l 1991*/
SELECT lastname
56
FROM employees
WHERE hiredate'07-IUN-1994';
/*a)isea4a n(*ele salariatilor care a( )ost anga0ati in > i(nie 1991*/
SELECT employeeid,,' ',,lastname,,' ',,hiredate
FROM employees
WHERE departmentid10;
/* a)isea4a id anga0at2 n(*ele si data anga0arii salariatilor din de$arta*ent(l c( id 10*/
17. ( !e afi!e4e numele !i %renumele %entru toti an3ajatii "are !>au an3ajat 1n luna mai.
SELECT lastname, Iirstname
FROM employees
WHERE TOCHAR(hiredate,'MON') 'MAY';
sa(
SELECT lastname, Iirstname
FROM employees
WHERE TOCHAR(hiredate,'mm') 05;
19. ( !e afi!e4e numele an3ajatilor !i "omi!ionul. Da" un an3ajat nu "!ti3 "omi!ion, ! !e !"rie V-ara
"omi!ionX. Eti"Betati "oloana VComi!ionX.
$/L(TO)CHAR("ommi!!ion)%"t), ^-ara "omi!ionM)
UPDATE employees SET commissionpct NULL WHERE lastname ' Kochhar';
SELECT lastname, NVL(TOCHAR(commissionpct),'Fara comision') "Comision"
FROM employees;
1:. ( !e li!te4e numele, !alariul !i "omi!ionul tuturor an3ajatilor al "ror venit lunar de%!e!te 1;;;;].
!alarT 2 $/L("ommi!!ion)%"t, ;) venit)lunar
SELECT lastname, salary, commissionpct
FROM employees
WHERE salary 2 NVL(commissionpct, 0) ~10000;
&1. ( !e afi!e4e numele, "odul fun"tiei, !alariul !i o "oloana "are ! arate !alariul du% mrire. (e !tie "
%entru .T)PRO* are lo" o mrire de 1;c, %entru (T)CLERI 15c, iar %entru (A)REP o mrire de &;c.
Pentru "eilalti an3ajati nu !e a"ord mrire. ( !e denumea!" "oloana a(alariu revi4uita.
.T)PRO* dd 00
(T)CLERI dd 55
(A)REP dd ::
SELECT lastname, jobid, salary,
DECODE(jobid, ITPROG`, salary*1.1, `STCLERK`, salary*1.15, SAREP`, salary*1.2, salary ) 'salariu
revizuit
FROM employees;
SELECT lastname, jobid, salary,
CASE jobid WHEN ITPROG` THEN salary* 1.1
WHEN `STCLERK` THEN salary*1.15
WHEN SAREP` THEN salary*1.2
ELSE salary
END 'salariu revizuit
FROM employees;
SELECT lastname, jobid, salary,
CASE WHEN jobid ITPROG` THEN salary* 1.1
57
WHEN jobid`STCLERK` THEN salary*1.15
WHEN jobid SAREP` THEN salary*1.2
ELSE salary
END 'salariu revizuit
FROM employees;
&&. ( !e afi!e4e numele !alariatului !i "odul de%artamentului 1n "are a"e!ta lu"rea4. Da" e6i!t !alariati
"are nu au un "od de de%artament a!o"iat, atun"i %e "oloana id_depratment ! !e afi!e4e# te6tul Vfara
de%artamentXK valoarea 4ero.
SELECT lastname, NVL(TOCHAR(departmentid) , 'Fara departament') "department"
FROM employees;
SELECT lastname, NVL(TOCHAR(departmentid) , 0) "department"
FROM employees;
SELECT lastname,
CASE WHEN departmentid IS NULL THEN 'Fara departament'
ELSE TOCHAR(departmentid)
END "DEPARTAMENT"
FROM employees;
SELECT lastname,
CASE WHEN departmentid IS NULL THEN 0
ELSE departmentid
END "DEPARTAMENT"
FROM employees;
&'. a. ( !e afi!e4e numele an3ajatilor "are nu au mana3er.
SELECT lastname FROM employees WHERE managerid IS NULL;
sa(
SELECT lastname,,' ',,Iirstname FROM employees WHERE managerid IS NULL;
&'.b. ( !e afi!e4e numele an3ajatilor !i "odul mana3erilor lor. Pentru an3ajatii "are nu au mana3er !
a%ar te6tul Vnu are !efX.
SELECT lastname,
CASE WHEN managerid IS NULL THEN 'Nu are seI'
ELSE TOCHAR(managerid)
END "manager"
FROM employees;
Sa(
SELECT lastname,,' ',,Iirstname,
CASE WHEN managerid IS NULL THEN 'Nu are seI'
ELSE TOCHAR(managerid)
END "manager"
FROM employees;
&0. ( !e afi!e4e numele !alariatului !i#
58
` venitul anual da" are "omi!ionK
` !alariul da" nu are "omi!ion.
(e va utili4a fun"tia $/L&.
-un"tie
NVL2 (expr1, expr2, expr3)
E6%li"atie
Dac expr1 este nenul atunci returneaz expr2, altIel Returneaz expr3
E6em%lu
NVL2 (1, 2, 3) 2
NVL2 (NULL, 2, 3) 3
&0. ( !e afi!e4e numele !alariatului !i#
` venitul anual da" are "omi!ionK
` !alariul da" nu are "omi!ion.
(e va utili4a fun"tia $/L&.
/*si aici voi aduna salariul cu comisionul*/
SELECT lastname NVL2(commissionpct, salarycommissionpct, 0) "It's about money"
FROM employees;
/*nu am inteles exact ce ar trebui sa Iacem asa ca am pus sa aIiseze si separat pe doua coloane */
SELECT lastname, NVL2(commissionpct, salarycommissionpct, 0) "astia au comision",
NVL2(commissionpct, 0, salary) "astia nu au comision"
FROM employees;
?????????
&5. ( !e afi!e4e numele !alariatului, !alariul !i !alariul revi4uit a!tfel#
> da" lu"rea4 de mai mult de &;; de luni atun"i !alariul va fi mrit "u &;cK
> da" lu"rea4 de mai mult de 15; de luni, dar mai %utin de &;; de luni, atun"i !alariul va fi mrit "u 15cK
> da" lu"rea4 de mai mult de 1;; de luni, dar mai %uein de 15; de luni, atun"i !alariul va fi mrit "u
1;cK
> altfel, !alariul va fi mrit "u 5c.
SELECT lastname, salary,
CASE WHEN ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) ~ 200 THEN salary*1.2
WHEN ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) ~ 150 THEN salary*1.15 WHEN
ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) ~ 100 THEN salary*1.1
ELSE salary*1.05
END "SALARIU REVIZUIT"
FROM employees;
59
CERER. ,+LT.TA?EL, (+?CERER.
Ti%uri de join#
- eRuijoin (se mai numeste inner 0oin sau si*$le 0oin) - compunerea a dou tabele diIerite dup o conditie ce
contine operatorul de egalitate.
(ELECT la!t)name, de%artment)name, lo"ation)id, e.de%artment)id
-RO, em%loTee! e, de%artment! d
FHERE e.de%artment)id \ d.de%artment)idK
&#s% :(*ele sa( alias-(rile tabelelor s(nt obligatorii %n dre$t(l coloanelor care a( acelasi n(*e
%n *ai *(lte tabele!
- noneRuijoin - compunerea a dou relatii tabele dup o conditie oarecare, ce NU contine operatorul de egalitate.
(ELECT la!t)name, !alarT, 3rade)level
-RO, em%loTee!, job)3rade!
FHERE !alarT ?ETFEE$ loGe!t)!al A$D Bi3Be!t)!alK
- outerjoin - compunerea extern a dou tabele diIerite completnd una dintre relatii cu valori NULL acolo unde
nu exist n aceasta nici un tuplu ce ndeplineste conditia de corelare. Relatia completat cu valori NULL este cea
n dreptul creia apare '(). Operatorul () poate Ii plasat n orice parte a conditiei de join, dar nu n ambele
prti. Full outer join LeIt outer join UNION Right outer join.
(ELECT la!t)name, de%artment)name,lo"ation)id
-RO, em%loTee! e, de%artment! d
FHERE e.de%artment)id(<) \ d.de%artment)idK
- !elfjoin - compunerea extern a unui tabel cu el nsusi dup o conditie dat.
(ELECT !ef.la!t)name, an3ajat.la!t)name
-RO, em%loTee! !ef, em%loTee! an3ajat
FHERE !ef.em%loTee)id \ an3ajat.mana3er)id
ORDER ?J !ef.la!t)nameK
1. Pentru fie"are an3ajat ! !e afi!e4e numele, "odul !i numele de%artamentului.
SELECT lastname, e.departmentid, departmentname
FROM employees e, departments d
WHERE e.departmentid d.departmentid;
&. ( !e afi!e4e numele an3ajatului, numele de%artamentului %entru toti an3ajatii "are "!ti3 "omi!ion.
SELECT lastname, departmentname
FROM employees e, departments d
WHERE e.departmentid d.departmentid
AND commissionpct IS NOT NULL;
'. ( !e li!te4e numele job>urile "are e6i!t 1n de%artamentul ';.
SELECT DISTINCT jobtitle
FROM employees e, jobs j
WHERE e.jobid j.jobid
AND departmentid 30;
0. (a !e afi!e4e numele, job>ul !i numele de%artamentului %entru tot an3ajati "are lu"rea4 1n (eattle.
60
SELECT lastname, jobid, departmentname
FROM employees e, departments d, locations s
WHERE e.departmentid d.departmentid
AND d.locationid s.locationid
AND city Seattle`;
Sau
SELECT lastname, e.jobid, departmentname
FROM employees e, departments d
WHERE e.departmentid d.departmentid
AND locationid (SELECT locationid FROM locations WHERE city 'Seattle');
5. ( !e afi!e4e numele, !alariul, data an3ajrii !i numele de%artamentului %entru toti %ro3ramatorii "are
lu"rea4 1n Ameri"a.
re3ion)name \ ^Ameri"a!M
job)title \ ^Pro3rammerM
SELECT lastname, salary, hiredate, departmentname
FROM employees e, departments d, locations s, countries c, regions r, jobs j
WHERE e.departmentid d.departmentid
AND d.locationid s.locationid
AND s.countryid c.countryid
AND c.regionid r.regionid
AND e.jobid j.jobid
AND regionname Americas`
AND jobtitle Programmer`;
7. ( !e afi!e4e numele !alariatilor !i numele de%artamentelor 1n "are lu"rea4. (e vor afi!a !i !alariatii "are
nu lu"rea4 1ntr>un de%artament (ri3Bt outBer join).
SELECT lastname, departmentname
FROM employees e, departments d
WHERE e.departmentid d.departmentid();
8. ( !e afi!e4e numele de%artamentelor !i numele !alariatilor "are lu"rea4 1n ele. (e vor afi!a !i
de%artamentele "are nu au !alariati (left outBer join).
SELECT departmentname, lastname
FROM employees e, departments d
WHERE e.departmentid() d.departmentid;
9. ( !e afi!e4e numele, job>ul, numele de%artamentului, !alariul !i 3rila de !alari4are %entru toti an3ajatii.
SELECT lastname, jobid, salary, departmentname, gradelevel
FROM employees e, departments d, jobgrades
WHERE e.departmentid d.departmentid
AND salary BETWEEN lowestsal AND highestsal;
:. ( !e afi!e4e "odul an3ajatului !i numele a"e!tuia, 1m%reun "u numele !i "odul !efului !u dire"t. (e vor
eti"Beta "oloanele An3f, An3ajat, ,3rf, ,ana3er. ( !e !alve4e in!tru"!iunea 1ntr>un fi!ier numit %'):.!Rl.
SELECT a.employeeid 'Ang#, a.lastname 'Angajat,
b.employeeid 'Mgr#, b.lastname'Manager
FROM employees a, employees b
WHERE a.managerid b. employeeid;
61
SAVE p39;
1;. ( !e modifi"e %'):.!Rl %entru a afi!a toti !alariatii, in"lu!iv %e "ei "are nu au !ef.
SELECT e.employeeid Ang#, e.lastname Angajat,
e.managerid Mgr#, m.lastname Manager
FROM employees e, employees m
WHERE e.managerid m.employeeid();
11. ( !e afi!e4e numele !alariatului !i data an3ajrii 1m%reun "u numele !i data an3ajrii !efului dire"t
%entru !alariatii "are au fo!t an3ajati 1naintea !efilor lor. (e vor eti"Beta "oloanele An3ajat, Data)an3,
,ana3er !i Data)m3r.
SELECT e.lastname Angajat, e.hiredate Dataang, m.lastname Manager, m.hiredate Datamgr
FROM employees e, employees m
WHERE e.managerid m.employeeid AND e.hiredatem.hiredate;
1&. Pentru fie"are an3ajat din de%artamentele &; !i '; ! afi!e4e numele, "odul de%artamentului !i toti
"ole3ii !i (!alariatii "are lu"rea4 1n a"ela!i de%artament "u el). (e vor eti"Beta "oloanele "ore!%un4tor.
SELECT a.lastname 'Angajat, a.departmentid Departament, b.lastname 'Coleg
FROM employees a, employees b
WHERE a.departmentid b.departmentid
AND a.employeeid ~ b.employeeid
AND a.departmentid IN (20,30)
ORDER BY a.lastname;
1'. ( !e afi!e4e numele !i data an3ajrii %entru !alariatii "are au fo!t an3ajati du% -aT.
SELECT lastname, hiredate
FROM employees
WHERE hiredate ~ (SELECT hiredate
FROM employees
WHERE lastname Fay`);
Sa(
SELECT a.lastname, a.hiredate
FROM employees a, employees b
WHERE UPPER(b.lastname)`FAY` AND a.hiredate~b.hiredate;
10. ("rieti o "erere %entru a afi!a numele !i !alariul %entru toti "ole3ii (din a"ela!i de%artament) lui -aT. (e
va e6"lude -aT.
SELECT lastname, salary
FROM employees
WHERE lastname ~ Fay`
AND departmentid (SELECT departmentid
FROM employees
WHERE lastname Fay`);
Sa(
SELECT lastname, salary
FROM employees
WHERE departmentid (SELECT departmentid
FROM employees WHERE lastname 'Fay')
AND lastname ! 'Fay';
62
15. ( !e afi!e4e "odul de%artamentului, "odul !i numele an3ajatilor "are lu"rea4 1n a"ela!i de%artament
"u "el %utin un an3ajat al "rui nume "ontine litera VTX. ( !e ordone4e du% "odul de%artamentului.
SELECT employeeid, lastname, departmentid
FROM employees
WHERE departmentid IN (SELECT DISTINCT departmentid
FROM employees
WHERE UPPER(lastname) LIKE T`)
ORDER BY departmentid;
17. ( !e afi!e4e numele !i !alariul an3ajatilor "ondu!i dire"t de (teven Iin3.
SELECT lastname, salary
FROM employees
WHERE managerid (SELECT employeeid
FROM employees
WHERE UPPER(lastname) 'KING'
AND UPPER(Iirstname) 'STEVEN' );
18. ( !e afi!e4e numele !i job>ul tuturor an3ajatilor din de%artamentul ^(ale!M.
SELECT lastname, jobid
FROM employees
WHERE departmentid (SELECT departmentid
FROM departments
WHERE departmentname 'Sales');
19. ( !e afi!e4e numele an3ajatilor, numrul de%artamentului !i job>ul tuturor !alariatilor al "ror
de%artament e!te lo"ali4at 1n (eattle.
SELECT lastname, jobid, departmentid
FROM employees
WHERE departmentid IN (SELECT departmentid
FROM departments
WHERE locationid (SELECT locationid
FROM locations
WHERE city Seattle`));
Re4olvati a"ea!t %roblem utili4nd join>uri.
1:. ( !e afle da" e6i!t an3ajati "are nu lu"rea4 1n de%artamentul ^(ale!M !i al "ror !alariu !i "omi!ion
"oin"id "u !alariul !i "omi!ionul unui an3ajat din de%artamentul ^(ale!M.
SELECT lastname, salary, commissionpct, departmentid
FROM employees
WHERE (salary, commissionpct) IN (SELECT salary, commissionpct
FROM employees e, departments d
WHERE e.departmentid d.departmentid
AND departmentname Sales`)
AND departmentid ~ (SELECT departmentid
FROM departments
WHERE departmentname Sales`);
&;. ("rieti o "erere %entru a afi!a numele, numele de%artamentului !i !alariul an3ajatilor "are nu "!ti3
"omi!ion, dar al "ror mana3er "oin"ide "u mana3erul unui an3ajat "are "!ti3 "omi!ion.
63
SELECT lastname, departmentname, salary
FROM employees e, departments d
WHERE e.departmentid d.departmentid
AND e.managerid IN (SELECT DISTINCT managerid
FROM employees
WHERE commissionpct IS NOT NULL)
AND commissionpct IS NULL;
&1. ("rieti o "erere %entru a afi!a an3ajatii "are "!ti3 mai mult de"t ori"are fun"tionar. (ortati
re4ultatele du% !alariu, 1n ordine de!"re!"toare.
SELECT lastname, salary, jobid
FROM employees
WHERE salary ~ (SELECT MAX(salary)
FROM employees
WHERE jobid LIKE 'CLERK')
ORDER BY salary DESC;
&&. ( !e afi!e4e "odul, numele !i !alariul tuturor an3ajatilor "are "!ti3 mai mult de"t !alariul mediu.
SELECT employeeid, lastname, salary
FROM employees
WHERE salary ~ (SELECT AVG(salary)
FROM employees);
&'. ( !e afi!e4e %entru fie"are !alariat an3ajat 1n luna martie numele !u, data an3ajrii !i numele jobului.
SELECT lastname, hiredate, jobtitle
FROM employees e, jobs j
WHERE TOCHAR(hiredate,'MON') 'MAR'
AND e.jobid j.jobid;
&0. ( !e afi!e4e %entru fie"are !alariat al "rui "!ti3 total lunar e!te mai mare de"t 1&;;;, numele !u,
"!ti3ul total lunar !i numele de%artamentului 1n "are lu"rea4.
SELECT lastname, salarycommissionpct "castig total lunar" , departmentname
FROM employees e, departments d
WHERE salarycommissionpct ~ 12000
AND e.departmentid d.departmentid;
&5. ( !e afi!e4e %entru fie"are an3ajat "odul !u !i numele joburilor !ale anterioare, %re"um !i intervalul
de tim% 1n "are a lu"rat %e jobul re!%e"tiv.@@
SELECT employeeid, jobid, startdate "data angaj job anterior",enddate"data Iinal job anterior",
ROUND(MONTHSBETWEEN(enddate, startdate)) "interval angajare"
FROM Jobhistory;
/* :( sti( daca este bine
EMPLOYEEID JOBID data angaj data Iinal interval angajare
----------- ---------- ---------- ---------- -----------------
102 ITPROG 13-01-1993 24-07-1998 66
101 ACACCOUNT 21-09-1989 27-10-1993 49
101 ACMGR 28-10-1993 15-03-1997 41
201 MKREP 17-02-1996 19-12-1999 46
114 STCLERK 24-03-1998 31-12-1999 21
122 STCLERK 01-01-1999 31-12-1999 12
64
176 SAREP 24-03-1998 31-12-1998 9
176 SAMAN 01-01-1999 31-12-1999 12
200 ACACCOUNT 01-07-1994 31-12-1998 54
200 ADASST 17-09-1987 17-06-1993 69
&7. ( !e modifi"e "ererea de la %un"tul &5 a!tfel 1n"t ! !e afi!e4e !i numele an3ajatului, re!%e"tiv "odul
jobului !u "urent.
SELECT lastname, jobid, hiredate "data angajarii", SYSDATE "data curenta",
ROUND(MONTHSBETWEEN(SYSDATE, hiredate)) "Vechime in Iirma"
FROM employees;
&8. ( !e modifi"e "ererea de la %un"tul &7 a!tfel 1n"t ! !e afi!e4e !i numele jobului !u "urent.
SELECT lastname, e.jobid, jobtitle, hiredate "data angajarii", SYSDATE "data curenta",
ROUND(MONTHSBETWEEN(SYSDATE, hiredate)),,' ' ,,'luni' "Vechime in Iirma"
FROM employees e, jobs j
WHERE e.jobid j.jobid;
&9. ( !e afi!e4e !alariatii "are au a"ela!i mana3er "a !i an3ajatul avnd "odul 10;.
SELECT Iirstname,,' ',,lastname
FROM employees
WHERE managerid ( SELECT managerid FROM employees WHERE employeeid 140);
&:. ( !e afi!e4e numele de%artamentelor "are fun"tionea4 1n Ameri"a.
-un"tii multiple-ro0 (3ru%). *ru%area datelor.
Aceste tipuri de Iunctii pot Ii utilizate pentru a returna inIormatia corespunztoare Iiecruia dintre
grupurile obtinute n urma divizrii liniilor tabelului cu ajutorul clauzei *RO+P ?J.
Pot aprea n clauzele (ELECT, ORDER ?J si HA/.$*.
Server-ul Oracle aplic aceste Iunctii Iiecrui grup de linii si returneaz un singur rezultat pentru Iiecare
multime.
Exemple de Iunctii grup: A/*, (+,, ,AN, ,.$, CO+$T etc.
Tipurile de date ale argumentelor Iunctiilor grup pot Ii CHAR, /ARCHAR&, $+,?ER sau DATE.
Functiile A/* si (+,, opereaz numai asupra valorilor numerice. Functiile ,AN si ,.$ pot opera
asupra valorilor numerice, caracter sau dat calendaristic.
Toate fun"tiile 3ru%, "u e6"e%tia lui CO+$T(2), i3nor valorile null. CO+$T(e6%re!ie)
returnea4 numrul de linii %entru "are e6%re!ia dat nu are valoarea null. FuncNia COUNT returneaz un
numr mai mare sau egal cu zero si nu ntoarce niciodat valoarea null.
Cnd e!te utili4at "lau4a *RO+P ?J, !erver>ul !ortea4 im%li"it multimea re4ultat 1n
ordinea "re!"toare a valorilor "oloanelor du% "are !e reali4ea4 3ru%area.
Absenta clauzei GROUP BY conduce la aplicarea IuncNiei grup pe mulNimea tuturor liniilor
tabelului.
An "lau4a *RO+P ?J !e tre" obli3atoriu toate "oloanele %re4ente 1n "lau4a (ELECT, "are nu !unt
ar3ument al fun"tiilor 3ru%.
1. ( !e afi!e4e "el mai mare !alariu, "el mai mi" !alariu, !uma !i media !alariilor tuturor an3ajatilor.
Eti"Betati "oloanele ,a6im, ,inim, (uma, re!%e"tiv ,edia. ( !e rotunjea!" re4ultatele.
65
SELECT MIN(salary) min, MAX(salary) max, SUM(salary) suma,
ROUND(AVG(salary)) media
FROM employees;
&. +tili4nd fun"tia 3ru% CO+$T ! !e determine#
a. numrul total de an3ajatiK
SELECT COUNT(*) "Total - angajati" FROM employees;
b. numrul de an3ajati "are au mana3erK
SELECT COUNT(*) "angajari cu manager" FROM employees WHERE managerid IS NOT NULL;
". numrul de mana3eri.
SELECT COUNT(*) "Numar manageri" FROM employees WHERE managerid IS NULL;
'. ( !e afi!e4e diferenta dintre "el mai mare !i "el mai mi" !alariu. Eti"Betati "oloana VDiferentaX.
SELECT MAX(salary) - MIN(salary) "DiIerenta" FROM employees;
0. ( !e li!te4e numrul de an3ajati din de%artamentul avnd "odul 5;.
SELECT COUNT(*) "ANGAJATI - DEP50" FROM employees WHERE departmentid 50;
5. Cati an3ajati din de%artamentul 9; "!ti3 "omi!ion@
SELECT COUNT(*) "ANGAJATI CU COMISION" FROM employees WHERE commissionpct IS NOT
NULL;
7. ( !e !ele"te4e valoarea medie !i !uma !alariilor %entru toti an3ajatii "are !unt re%re4entanti de vn4ri
((A),A$, (A)REP).
SELECT AVG(salary) media, SUM(salary)
FROM employees
GROUP BY jobid IN ( SAMAN, SAREP);
8. ( !e !ele"te4e data an3ajrii %rimei %er!oane "are a fo!t an3ajat de "om%anie.
SELECT MIN(hiredate) FROM employees;
9. ( !e afi!e4e numrul de an3ajati %entru fie"are job.
SELECT jobid, COUNT(employeeid) nrangajati
FROM employees
GROUP BY jobid;
:. ( !e afi!e4e minimul, ma6imul, !uma !i media !alariilor %entru fie"are de%artament.
SELECT departmentid, MIN(salary), MAX(salary), SUM(salary), AVG(salary)
FROM employees
GROUP BY departmentid;
1;. ( !e afi!e4e "odul de%artamentului !i media !alariilor %entru fie"are job din "adrul a"e!tuia.
SELECT departmentid, jobid, AVG(salary)
FROM employees
66
GROUP BY departmentid, jobid;
11. a. ( !e afi!e4e "odul de%artamentelor %entru "are !alariul minim de%!e!te 5;;;].
SELECT departmentid, MIN(salary)
FROM employees
GROUP BY departmentid
HAVING MIN(salary)~5000;
11.b. ( !e modifi"e "ererea anterioar a!tfel 1n"t ! !e afi!e4e !i ora!ul 1n "are fun"tionea4 a"e!te
de%artamente.
SELECT departmentid, MIN(salary), city
FROM employees, locations
GROUP BY departmentid, city
HAVING MIN(salary) ~ 5000;
1&. ( !e obtin "odul de%artamentelor !i numrul de an3ajati al a"e!tora %entru de%artamentele "are au
"el %utin 1; an3ajati.
SELECT departmentid, COUNT(employeeid)
FROM employees
GROUP BY departmentid
HAVING COUNT(employeeid) ~ 10;
1'. ( !e obtin "odul de%artamentelor !i !uma !alariilor an3ajatilor "are lu"rea4 1n a"e!tea, 1n ordine
de!"re!"toare du% !um. (e "on!ider an3ajatii "are au "omi!ion !i de%artamentele "are au mai mult de 5
an3ajati.
SELECT departmentid, SUM(salary)
FROM employees
WHERE commissionpct IS NOT NULL
GROUP BY departmentid
HAVING COUNT(employeeid) ~ 5
ORDER BY SUM(salary) DESC;
10. ( !e obtin job>ul %entru "are !alariul mediu e!te minim.
SELECT jobid
FROM employees
GROUP BY jobid
HAVING AVG(salary) (SELECT MIN(AVG(salary))
FROM employees
GROUP BY jobid);
15. ( !e afi!e4e "el mai mare dintre !alariile medii %e de%artamente.
SELECT AVG(salary)
FROM employees
GROUP BY departmentid
HAVING AVG(salary) (SELECT MAX(AVG(salary)) FROM employees GROUP BY departmentid);
17. a. ( !e afi!e4e "odul, numele de%artamentului !i !uma !alariilor %e de%artamente.
SELECT d.departmentid, departmentname,a.suma
FROM departments d, (SELECT departmentid ,SUM(salary) suma
67
FROM employees
GROUP BY departmentid) a
WHERE d.departmentid a.departmentid;
b. Dati o alt metod de re4olvare a a"e!tei %robleme.
SELECT d.departmentid, departmentname, SUM(salary)
FROM employees e, departments d
WHERE e.departmentid d.departmentid
GROUP BY d.departmentid, departmentname;
18. a. ("rieti o "erere %entru a afi!a numele de%artamentului, numrul de an3ajati !i !alariul mediu %entru
an3ajatii din a"el de%artament. Coloanele vor fi eti"Betate De%artament, $r. an3ajati, (alariu ,ediu.
SELECT departmentname 'Departament,
(SELECT COUNT(employeeid)
FROM employees
WHERE departmentid d.departmentid ) Nr. angajati,
(SELECT AVG(salary)
FROM employees
WHERE departmentid d.departmentid) Salariu mediu
FROM departments d;
b. Dati o alt metod de re4olvare %entru %roblema anterioar.
SELECT departmentname "Departament", COUNT(employeeid) "Nr. angajati", AVG(salary) "Salariu mediu"
FROM employees e, departments d
WHERE e.departmentid d.departmentid
GROUP BY departmentname;
/* n( ret(rnea4a de$art*anetele care n( a( anga0ati*/
19. ( !e "ree4e o "erere %rin "are ! !e afi!e4e numrul total de an3ajati !i, din a"e!t total, numrul "elor
"are au fo!t an3ajati 1n 1::8, 1::9, 1::: !i &;;;. Datele vor fi afi!ate 1n forma urmtoare#
Total 1::8 1::9 1::: &;;;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5; 1; 5 &5 1
(+,(DECODE(TO)CHAR(Bire)date,LTTTTL),1::8,1,;))
SELECT COUNT(employeeid) "Total",
SUM(DECODE(TOCHAR(hiredate,'yyyy'),1997,1,0)) "1997",
SUM(DECODE(TOCHAR(hiredate,'yyyy'),1998,1,0)) "1998",
SUM(DECODE(TOCHAR(hiredate,'yyyy'),1999,1,0)) "1999",
SUM(DECODE(TOCHAR(hiredate,'yyyy'),2000,1,0)) "2000"
FROM employees;
/*aIiseaza
Total 1997 1998 1999 2000
---------- ---------- ---------- ---------- ----------
106 28 23 18 11
68
O%eratorii R&**12 !i C13(
Clauza EROB9 F, permite gruparea liniilor selectate dup valorile expresiilor precizate n aceasta.
Pentru Iiecare grup, va Ii returnat o singur linie de inIormatie. Clauza EROB9 F, poate produce grupri
superagregat utiliznd extensiile CBFE sau ROAAB9.
R&**12
- grupeaz liniile selectate pe baza valorilor primelor n, n - 1, G, 0 expresii din speciIicatia
EROB9 F, si returneaz o singur linie pentru Iiecare grup.
- "reea4 3ru%ri %rin de%la!area 1ntr>o !in3ur dire"eie, de la drea%ta la !tn3a, de>a
lun3ul li!tei de "oloane !%e"ifi"ate 1n "lau4a *RO+P ?J
Apoi, se aplic Iunctia agregat acestor grupri. Dac sunt speciIicate n expresii n operatorul ROLLUP,
numrul de grupri generate va Ii n 1. Liniile care se bazeaz pe valoarea primelor n expresii se numesc linii
obisnuite, iar celelalte se numesc linii superagregat.
*RO+P ?J ROLL+P (e6%r)1, e6%r)&, S, e6%r)n) 3enerea4 n<1 ti%uri de linii, corespunztoare
urmtoarelor grupri:
GROUP BY (expr1, expr2, ., exprn-1, exprn)
GROUP BY (expr1, expr2, ., exprn-1)
.
GROUP BY (expr1, expr2)
GROUP BY (expr1)
GROUP BY () corespunztor absentei clauzei GROUP BY si deci, calculului IuncNiilor
grup din cerere pentru ntreg tabelul.
C13( grupeaz liniile selectate pe baza valorilor tuturor combinatiilor posibile ale expresiilor speciIicate
si returneaz cte o linie totalizatoare pentru Iiecare grup. Acest operator este Iolosit pentru a produce multimi de
rezultate care sunt utilizate n rapoarte. n vreme ce ROAAB9 produce subtotalurile doar pentru o parte dintre
combinatiile posibile, operatorul CBFE produce subtotaluri pentru toate combinatiile posibile de grupri
speciIicate n clauza EROB9 F,, precum si un total general.
Dac exist n coloane sau expresii n clauza EROB9 F,, vor e6i!ta &n "ombinatii %o!ibile superagregat.
1:. ( !e afi!e4e "odurile de%artamentelor 1n "are lu"rea4 "el %utin un an3ajat, iar %entru fie"are dintre
a"e!tea !i %entru fie"are mana3er "are lu"rea4 1n de%artamentul re!%e"tiv ! !e afi!e4e numrul de
!alariati. De a!emenea, ! !e afi!e4e numrul de !alariati %entru fie"are de%artament indiferent de mana3er
!i numrul total de an3ajati din "om%anie.
SELECT departmentid, managerid, COUNT(employeeid)
FROM employees
WHERE managerid IS NOT NULL AND departmentid IS NOT NULL
GROUP BY ROLLUP (departmentid, managerid);
&;. ( !e afi!e4e "odurile de%artamentelor 1n "are lu"rea4 "el %utin un an3ajat, iar %entru fie"are dintre
a"e!tea !i %entru fie"are mana3er "are lu"rea4 1n de%artamentul re!%e"tiv ! !e afi!e4e numrul de
!alariati. De a!emenea, ! !e afi!e4e numrul de !alariati %entru fie"are de%artament indiferent de
mana3er, numrul de an3ajati !ubordonati unui mana3er indiferent de de%artament !i numrul total de
an3ajati din "om%anie.
SELECT departmentid, managerid, COUNT(employeeid)
FROM employees
WHERE managerid IS NOT NULL AND departmentid IS NOT NULL
GROUP BY CUBE (departmentid, managerid);
&1. Pentru fie"are de%artament, job, re!%e"tiv an al an3ajrii ! !e afi!e4e numrul de !alariati. De
a!emenea !e va afi!a numrul de an3ajati#
> %entru fie"are de%artament !i job, indiferent de anul an3ajriiK
69
> %entru fie"are de%artament, indiferent de job !i de anul an3ajriiK
> la nivel de "om%anie.
(.emplu%
S se aIiseze valoarea total a operelor de art ale unui autor, expuse n cadrul Iiecrei galerii avnd codul mai
mic dect 50. De asemenea, s se aIiseze valoarea total a operelor din Iiecare galerie avnd codul mai mic dect
50, valoarea total a operelor Iiecrui autor indiIerent de galerie si valoarea total a operelor din galeriile avnd
codul mai mic dect 50.
SELECT codgalerie, codartist, SUM(valoare)
FROM opera
WHERE codgalerie 50
GROUP BY CUBE(codgalerie, codartist);
&&. ( !e afi!e4e !uma alo"at %entru %lata !alariilor %e joburi ("odul jobului), 1n "adrul de%artamentului
("odul de%artamentului). De a!emenea, ! !e afi!e4e valoarea total ne"e!ar %entru %lata !alariilor la nivel
de de%artament, valoarea total ne"e!ar %entru %lata !alariilor la nivel de job, indiferent de de%artament
!i valoarea total ne"e!ar %entru %lata !alariilor la nivel de "om%anie.
&'. -un"tia *RO+P.$*(e6%re!ie) 1ntoar"e#
> valoarea ;, da" e6%re!ia a fo!t utili4at %entru "al"ulul valorii a3re3at
> valoarea 1, da" e6%re!ia nu a fo!t utili4at.
&0. ( !e afi!e4e numele de%artamentelor, titlurile job>urilor !i valoarea medie a !alariilor, %entru#
> fie"are de%artament !i, 1n "adrul !u %entru fie"are jobK
> fie"are de%artament (indiferent de job)K
> 1ntre3 tabelul.
De a!emenea, ! !e afi!e4e !i o "oloan "are indi" interveneia "oloanelor department_name !i jo#_title 1n
obtinerea re4ultatului.
SET LINESIZE 100
COLUMN job FORMAT 99`
COLUMN dept FORMAT 99`
SELECT departmentname, jobtitle, AVG(salary) medie,
GROUPING(departmentname) dept, GROUPING(jobtitle) job
FROM employees e, departments d, jobs j
WHERE e.departmentid d.departmentid
AND e.jobid j.jobid
GROUP BY ROLLUP(departmentname, jobtitle);
&5. ,odifi"ati "ererea anterioar a!tfel 1n"t ! !e afi!e4e numele de%artamentelor, titlurile job>urilor !i
valoarea medie a !alariilor, %entru#
> fie"are de%artament !i, 1n "adrul !u %entru fie"are jobK
> fie"are de%artament (indiferent de job)K
> fie"are job(indiferent de de%artament)K
> 1ntre3 tabelul.
Cum intervin "oloanele 1n obtinerea re4ultatului@ ( !e afi!e4e MDe%tM, da" de%artamentul a intervenit 1n
a3re3are !i ^UobM, da" job>ul a intervenit 1n a3re3are.
DECODE(*RO+P.$*(de%artment)name), ;, ^De%tM)
SELECT departmentname, jobtitle, AVG(salary) medie,
DECODE(GROUPING(departmentname), 0, Dept`) dept,
DECODE(GROUPING(jobtitle), 0, Job`) job
FROM employees e, departments d, jobs j
WHERE e.departmentid d.departmentid
70
AND e.jobid j.jobid
GROUP BY CUBE(departmentname, jobtitle);
&7. +tili4ati "ererea de la %un"tul &;.
a. Eliminati "lau4a 4H(R( din a"ea!t "erere. Anali4ati re4ultatul obtinut.
b. ,odifi"ati "ererea obtinut a!tfel 1n"t ! !e identifi"e da" o valoare null din re4ultat e!te !to"at %e una
dintre "oloanele manager_id !au department_id !au e!te %rodu! de o%eratorul C13(.
/*Cererea de la $ct!20*/
SELECT departmentid, managerid, COUNT(employeeid)
FROM employees
WHERE managerid IS NOT NULL AND departmentid IS NOT NULL
GROUP BY CUBE (departmentid, managerid);
/* /1 de inregistrari selectate*/
SELECT departmentid, managerid, COUNT(employeeid)
FROM employees
GROUP BY CUBE (departmentid, managerid);
/*/' %nregistr&ri selectate!*/
/* se a)isea4a de$arta*entele care n( a( anga0ati si anga0atii care n( )ac $arte din nici (n de$arta*ent
&8. Clau4a *RO+P.$* (ET(. Permite obtinerea numai a anumitor 3ru%ri !u%era3re3at. A"e!tea %ot fi
%re"i4ate %rin intermediul "lau4ei#
*RO+P ?J *RO+P.$* (ET( ((e6%r)11, e6%r)1&, S, e6%r)1n), (e6%r)&1, e6%r)&&, Se6%r)&m),
S)
&9. ( !e afi!e4e numele de%artamentelor, numele job>urilor, "odurile mana3erilor an3ajatilor, ma6imul !i
!uma !alariilor %entru#
> fie"are de%artament !i, 1n "adrul !u, fie"are jobK
> fie"are job !i, 1n "adrul !u, %entru fie"are mana3erK
> 1ntre3 tabelul.
*RO+P.$* (ET( ((de%artment)name, job)title), (job)title, e.mana3er)id), ())K
SELECT departmentname, jobtitle, e.managerid, MAX(salary) 'Maxim, SUM(salary) 'Suma
FROM employees e, departments d, jobs j
WHERE e.departmentid d.departmentid
AND e.jobid j.jobid
GROUP BY GROUPING SETS ((departmentname, jobtitle), (jobtitle, e.managerid), ());
Limbajul de "ontrol al datelor (DCL). CO,,.T, (A/EPO.$T, ROLL?ACI.
Comanda CO,,.T permanentizeaz modiIicrile care au Iost realizate de tranzactia curent (o tranzactie este
un set de comenzi LMD); comanda suprim toate punctele intermediare deIinite n tranzactie si elibereaz
blocrile tranzactiei.
Observatie:
Sistemul realizeaz COMMIT implicit:
- la nchiderea normal a unui client Oracle (de exemplu SQL*Plus),
- dup Iiecare comand LDD (CREATE, ALTER, DROP).
Comanda (A/EPO.$T marcheaz un punct intermediar n procesarea tranzactiei. n acest mod este posibil
mprtirea tranzactiei n subtranzactii.
71
Comanda 'AV(2&"+) are !inta6a#
(A/EPO.$T nume)%"t)intermediarK
Comanda ROLL?ACI permite renuntarea la modiIicrile eIectuate; aceasta determin ncheierea tranzactiei,
anularea modiIicrilor asupra datelor si restaurarea strii lor precedente.
Comanda ROLL?ACI are !inta6a#
ROLL?ACI CTO (A/EPO.$T nume)%un"t)!alvareDK
Observatii:
- sistemul realizeaz ROLLBACK implicit dac se nchide anormal (deIectiune hardware sau soItware, pan de
curent etc.);
- nici o comanda LDD (CREATE, ALTER; DROP) nu poate Ii anulat.
1. Ce efe"t are urmtoarea !e"vent de in!tru"tiuni@
CREATE TABLE dept1
AS SELECT * FROM departments;
SELECT * FROM dept1;
SAVEPOINT a;
/* $(nct de salvare creat*/
DELETE FROM dept1;
INSERT INTO dept1
VALUES (300,`Economic`,100,1000);
/*EROARE la linia 1:ORA-00913: $rea *(lte valori*/
INSERT INTO dept1
VALUES (350,`Cercetare`,200,2000);
/*EROARE la linia 1:ORA-00913: $rea *(lte valori*/
SAVEPOINT b;
/* $(nct de salvare creat*/
INSERT INTO dept1
VALUES (400,`Juritic`,150,3000);
SELECT COUNT(*)
FROM dept1;
*/ COB:(*"
----------
0*/
ROLLBACK TO b;
/* revenire inc#eiata
SELECT COUNT(*)
FROM dept1;
*/COB:(*"
----------
0*/
ROLLBACK TO a;
*/ $(nct de salvare creat
INSERT INTO dept1
VALUES (500,`Contabilitate`,175,1500);
*/EROARE la linia 1: ORA-00913: $rea *(lte valori*/
CODD6?
*/Con)ir*are )inali4at&!*/
SELECT *
FROM dept1; */nici o %nregistrare selectat&*/
72
Limbajul de %relu"rare a datelor (D,L). .$(ERT, +PDATE, DELETE.
1. ( !e "ree4e tabele emp_*** !i dept_***, avnd a"eea!i !tru"tur !i date "a !i tabelele emplo5ees,
re!%e"tiv departments.
CREATE TABLE emp AS SELECT * FROM employees;
CREATE TABLE dept AS SELECT * FROM departments;
&. ( !e !ele"te4e toate 1nre3i!trrile din "ele dou tabele "reate anterior.
SELECT * FROM emp;
SELECT * Irom dept;
'.(ter3eti toate 1nre3i!trrile din "ele & tabele "reate anterior. (alvati modifi"rile.
DELETE FROM emp;
DELETE FROM dept;
COMMIT;
0. ( !e li!te4e !tru"tura tabelului emplo5ees !i ! !e "om%are "u !tru"tura tabelului emp_***. Ce ob!ervati@
DESCRIBE employees;
DESCRIBE emp;
/*A( aceeasi str(ct(ra!*/
5. (inta6a !im%lifi"at a "omen4ii "+'(R)
- pentru inserarea unei singure linii:
.$(ERT .$TO nume)tabel C("ol1,"ol&,...)D
/AL+E( (e6%re!ie1, e6%re!ie&, ...)K
- pentru inserarea liniilor rezultat ale unei comenzi SELECT:
.$(ERT .$TO nume)tabel C("ol1,"ol&,...)D
"omanda)(ELECTK
7. ( !e e6em%lifi"e "teva dintre erorile "are %ot ! a%ar la in!erare !i ! !e ob!erve me!ajul returnat de
!i!tem.
> li%!a de valori %entru "oloane $OT $+LL ("oloana department_name e!te definit $OT $+LL)
INSERT INTO dept (departmentid, locationid)
VALUES (200, 2000);
*/EROARE la linia 1: ORA-01100: n( $oate )i inserat :BAA %n (HSCOH!H<E93H!H<E9ARDE:-:ADEH"*/
> ne%otrivirea li!tei de "oloane "u "ea de e6%re!ii
INSERT INTO dept
VALUES (200, 2000);
INSERT INTO dept(departmentid, departmentname,locationid)
VALUES (200, 2000);
*/EROARE la linia 2: ORA-0091>: valori $rea $(tine*/
> ne%otrivirea ti%ului de date
INSERT INTO dept (departmentid, locationid)
VALUES (D23`, 2000);
*/EROARE la linia 2: ORA-01>22: n(*&r eronat*/
- valoare prea mare pentru coloan
.$(ERT .$TO de%t)222 (de%artment)id, lo"ation)id)
/AL+E( (15;;;, &;;;)K
73
8. .n!erati 1n tabelul emp_*** !alariatii (din tabelul emplo5ees) al "ror "omi!ion de%!e!te &5c din
!alariu.
INSERT INTO emp
SELECT * FROM employees WHERE salary*0.25 commissionpct ;
9. Creati tabele emp-_***, emp2_*** !i emp6_*** "u a"eea!i !tru"tur "a tabelul emplo5ees.
.n!erati, utili4nd o !in3ur "omand .$(ERT, informatii din tabelul emplo5ees#
> 1n tabelul emp-_*** !alariatii "are au !alariul mai mi" de"t 7;;;K
> 1n tabelul emp2_*** !alariatii "are au !alariul "u%rin! 1ntre 7;;; !i 1;;;;K
> 1n tabelul emp6_*** !alariatii "are au !alariul mai mare de"t 1;;;;.
/erifi"ati re4ultatele, a%oi !ter3eti toate 1nre3i!trrile din a"e!te tabele.
&#s. Clau4a ALL a "omen4ii .$(ERT determin evaluarea tuturor "onditiilor din "lau4ele FHE$. Pentru
"ele a "ror valoare e!te TR+E, !e in!erea4 1nre3i!trarea !%e"ifi"at 1n o%tiunea .$TO "ore!%un4toare.
CREATE TABLE emp11
AS SELECT * FROM employees WHERE 10;
CREATE TABLE emp21
AS SELECT * FROM employees WHERE 10;
CREATE TABLE emp31
AS SELECT * FROM employees WHERE 10;
INSERT ALL
WHEN salary 6000 THEN
INTO emp11
WHEN salary ~ 6000 AND salary 10000 THEN
INTO emp21
ELSE
INTO emp31
SELECT * FROM employees;
DELETE FROM emp11;
DELETE FROM emp21;
DELETE FROM emp31;
COMMIT;
:. ( !e "ree4e tabelul emp7_*** "u a"eea!i !tru"tur "a tabelul emplo5ees. .n!erati, utili4nd o !in3ur
"omand .$(ERT, informatii din tabelul emplo5ees#
> 1n tabelul emp7_*** !alariatii "are lu"rea4 1n de%artamentul 9;K
> 1n tabelul emp-_*** !alariatii "are au !alariul mai mi" de"t 7;;; ("are nu !e re3!e!" 1n tabelul
emp7_***)K
> 1n tabelul emp2_*** !alariatii "are au !alariul "u%rin! 1ntre 7;;; !i 1;;;; ("are nu !e re3!e!" 1n
tabelele emp7_*** !i emp-_***)K
> 1n tabelul emp6_*** !alariatii "are au !alariul mai mare de"t 1;;;; ("are nu !e re3!e!" 1n tabelele
emp7_***, emp-_*** !i emp2_***).
&#s.
Clau4a -.R(T a "omen4ii .$(ERT determin in!erarea "ore!%un4toare %rimei "lau4e FHE$ a "rei
"onditie e!te evaluat TR+E. Toate "elelalte "lau4e FHE$ !unt i3norate.
CREATE TABLE emp01
AS SELECT * FROM employees WHERE 10;
INSERT FIRST
WHEN departmentid 80 THEN
INTO emp01
WHEN salary 6000 THEN
INTO emp11
WHEN salary ~ 6000 AND salary 10000 THEN
INTO emp21
74
ELSE
INTO emp31
SELECT * FROM employees;
1;. (inta6a !im%lifi"at a "omen4ii 8(*()(
DELETE FROM numetabel
|WHERE conditie|;
11. (ter3eti toate 1nre3i!trrile din tabelele emp_*** !i dept_***. .n!erati 1n a"e!te tabele toate 1nre3i!trrile
"ore!%un4toare din emplo5ees, re!%e"tiv departments. Permanenti4ati tran4a"tia.
DELETE FROM dept;
DELETE FROM emp;
INSERT INTO emp
SELECT * FROM employees;
INSERT INTO dept
SELECT * FROM departments;
COMMIT;
1&. (ter3eti an3ajatii "are nu au "omi!ion. Anulati modifi"rile.
DELETE -RO, em%)222
FHERE "ommi!!ion)%"t .( $+LLK
ROLL?ACIK
DELETE FROM emp
WHERE commission IS NULL;
ROLLBACK;
1'. Eliminati de%artamentele "are nu au ni"i un an3ajat. Anulati modifi"rile.
DELETE FROM dept
WHERE departmentid NOT IN (SELECT DISTINCT departmentid
FROM emp
WHERE departmentid IS NOT NULL);
ROLLBACK;
10. Eliminati an3ajatii "are nu a%artin unui de%artament valid. Anulati modifi"rile.
DELETE FROM emp
WHERE departmentid NOT IN (SELECT departmentid
FROM dept)
OR departmentid IS NULL;
ROLLBACK;
15. (inta6a !im%lifi"at a "omen4ii 128A)(#
UPDATE numetabel |alias|
SET col1 expr1|, col2expr2|
|WHERE conditie|;
sa(
UPDATE numetabel |alias|
SET (col1,col2,...) (subcerere)
|WHERE conditie|;
17. ,riti !alariul tuturor an3ajatilor din tabelul emp_*** "u 5c. Anulati modifi"rile.
75
UPDATE emp
SET salary salary * 1.05;
ROLLBACK;
18. ("Bimbati jobul tuturor !alariatilor din de%artamentul 9; "are au "omi!ion 1n L(A)REPL. Anulati
modifi"rile.
UPDATE emp
SET jobid 'SAREP'
WHERE departmentid80 AND commissionpct IS NOT NULL;
ROLLBACK;
UPDATE emp
SET jobid 99
WHERE departmentid80 AND commission IS NOT NULL;
ROLLBACK;
19. ( !e modifi"e jobul !i de%artamentul an3ajatului avnd "odul 110, a!tfel 1n"t ! fie la fel "u "ele ale
an3ajatului avnd "odul &;5.
UPDATE emp
SET (jobid, departmentid) (SELECT jobid, departmentid
FROM emp
WHERE employeeid 205)
WHERE employeeid 114;
ROLLBACK;
1:. ("Bimbati !alariul !i "omi!ionul "elui mai %ro!t %ltit !alariat din firm, a!tfel 1n"t ! fie e3ale "u
!alariul !i "omi!ionul dire"torului.
DELETE FROM emp WHERE employeeid 123;
UPDATE emp
SET (salary, commission) (SELECT salary, commission
FROM emp
WHERE managerid IS NULL)
WHERE salary (SELECT MIN(salary)
FROM emp);
ROLLBACK;
&;. Pentru fie"are de%artament ! !e mrea!" !alariul "elor "are au fo!t an3ajaei %rimii a!tfel 1n"t !
devin media !alariilor din "om%anie.
UPDATE emp e
SET salary (SELECT AVG(salary)
FROM emp)
WHERE hiredate (SELECT MIN(hiredate)
FROM emp
WHERE departmentide.departmentid);
ROLLBACK;
&1. ( !e modifi"e valoarea emailului %entru an3ajatii "are "!ti3 "el mai mult 1n de%artamentul 1n "are
lu"rea4 a!tfel 1n"t a"e!ta ! devin initiala numelui "on"atenat "u %renumele. Da" nu are %renume
atun"i 1n lo" de a"e!ta a%are "ara"terul ^.M. Anulati modifi"rile.
UPDATE emp
SET email LOWER(SUBSTR(Iirstname,1,1)) ,, LOWER(NVL(lastname, '. '))
76
WHERE (departmentid, salary) IN (SELECT departmentid, MAX(salary)
FROM emp
GROUP BY departmentid);
ROLLBACK;
77

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