Sunteți pe pagina 1din 22

Cursul 4

SQL - DML
S.l.dr.ing Radu Parpala
Agenda Style
01 INSERT
Introduce înregistrări în baza de date

02 DELETE
Sterge înregistrări din baza de date

03 UPDATE
Modifică datele stocate în bazele de date

04 SELECT
Interoghează baza de date

05 FUNCȚII
Funcții disponibile în IBM-DB2
101001101001000010101

I
0011110111011011011010
101000011100101011001

NSERT
010100111010100010101
0001011010110110110100
010101110001010100010
1000101110101100010011
010011010010000101010
0111101110110110110101
010000111001010110010
101001110101000101010
INSERT INTO numetabel [(lista coloane)] VALUES (lista valori) 0010110101101101101001

INSERT INTO facultate


VALUES (1, 'Inginerie Electrica', 'Bucuresti','Valentin
Navrapescu');

INSERT INTO facultate (denumire, adresa, numedecan, codfac)


VALUES ('Energetica', 'Bucuresti','Constantin Bulacu', 2);

INSERT INTO facultate (denumire, codfac)


VALUES ('Automatica si calculatoare', 3);

BIG DATA
101001101001000010101

D
0011110111011011011010
101000011100101011001

ELETE
010100111010100010101
0001011010110110110100
010101110001010100010
1000101110101100010011
010011010010000101010
0111101110110110110101
010000111001010110010
DELETE FROM Nume tabel 101001110101000101010
0010110101101101101001
[WHERE] Conditii selectare

delete from facultate;

delete from facultate where codfac > 5 and codfac < 8;

delete from facultate where an = 3 and semestru = 2;

BIG DATA
101001101001000010101

U
0011110111011011011010
101000011100101011001

P DAT E
010100111010100010101
0001011010110110110100
010101110001010100010
1000101110101100010011
010011010010000101010
0111101110110110110101
010000111001010110010
UPDATE Nume tabel 101001110101000101010
0010110101101101101001
SET nume coloana = expresie
[, numecoloana = expresie ….]
[WHERE] Conditie
UPDATE studenti SET bursa = 'nu’;

UPDATE facultate SET denumire = 'Automatica Industriala' WHERE


denumire = 'Automatica si Calculatoare’;

update studenti set bursa = 'nu'


where media > 8; BIG DATA
101001101001000010101

S
0011110111011011011010
101000011100101011001

ELECT
010100111010100010101
0001011010110110110100
010101110001010100010
1000101110101100010011
010011010010000101010
0111101110110110110101
010000111001010110010
SELECT Lista coloane, lista functii pe coloane 101001110101000101010
0010110101101101101001
FROM Lista tabele
[WHERE] Conditii selectare
[GROUP BY] Lista coloane grupate pentru functii
[HAVING] Conditii pe functii de grup
[ORDER BY] Lista coloane pentru ordonare

SELECT * FROM facultate;

SELECT count(*) FROM facultate;


BIG DATA
SELECT
Operatorii acceptati in limbajul DB2:
= egalitate intre membru stang si membrul drept
!= sau <> diferit sau egal
> membrul stang mai mare decat membrul drept
>= membrul stang mai mare sau egal decat membrul drept
< membrul stang mai mic decat membrul drept
<= membrul stang mai mic sau egal decat membrul drept
LIKE compararea cu un sir de caractere (se pot folosii %; _; \ )
IN membrul stang se regaseste in enumerarea din membru drept
BETWEEN membrul stang se regaseste intre doua valori specificate
SELECT
select * from studpersonal
where locnastere in ('Constanta', 'Croiova', 'Ploiesti’);

select nume, prenume, locnastere


from studpersonal;

select nume || ' ' || prenume as "Nume student", locnastere


from studpersonal;

select nume, prenume, salariu * 0.15 as bonus from angajati


where departament = ‘PRO’;

select from materii where grupa in ('311CA', '641BC', '612AC', '621BB’);

select nume, prenume, email from angajati


where email like '%.ro’

select * from studenti


where grupa like '_3_BB';
SELECT
select min(media) from studenti;

select codstud from studenti


where media > 8;

select nume, prenume, adresa


from studpersonal
where codstud = (select min(media) from studenti);

select nume, prenume, adresa


from studpersonal
where codstud in (select codstud from studenti
where media > 8);
SELECT - JOIN
select nume, prenume, grupa from studenti, studpersonal

Select nume, prenume, grupa from studenti, studpersonal


where studenti.codstud = studpersonal.codstud
SELECT - JOIN

select * from materii


join specializare on materii.codspec = specializare.codspec;
select * from materii
join specializare on materii.codspec = specializare.codspec
SELECT - JOIN

select * from materii


left outer join specializare on materii.codspec = specializare.codspec;
select * from materii
left outer join specializare on materii.codspec = specializare.codspec;
SELECT - JOIN

select * from materii


left outer join specializare on materii.codspec = specializare.codspec;
select * from materii
left join specializare on materii.codspec = specializare.codspec;
SELECT - JOIN

select * from materii


full outer join specializare on materii.codspec = specializare.codspec;
Funcții
• Funcții scalare
• Funcții care lucrează cu șiruri de caractere
upper, lower, ltrim, rtrim, concat, initcap, instr, locate, left, right, substring, trim
• Funcții calendaristice
add_days, add_months, add_years, add_hours, add_minutes, add_seconds
dayname, dayofmonth, dayofweek, dayofweek_iso, dayofyear
days_between, day, month, hour, minute, second, week
current time, current date, current timestamp
• Funcții matematice
radians, abs, sin, cos, asin, acos, atan, tan, ceiling, floor, round, sqrt,

• Funcții agregat
count, min, max, sum, avg
Funcții - șir de caractere
values (initcap('tEXt de formatat’));

select initcap(denumire) as "format titlu", lower(denumire) as "format l case",


upper(denumire) as "format u case", denumire from materii
Funcții - șir de caractere
select denumire, concat('Prof: ', numeprof) from materii;

select denumire, concat('Prof: ', numeprof) from materii;

values instr('Text de test' , 'te’)

values locate('te','Text de test' )

values (left('Sir de cautat' , 5))

values (right('Sir de cautat' , 5))


Funcții – date calendaristice
values (current date); values (year(current date));

1 1
---------- ----
2020-09-20 2020

values (current time); values (minute(current time));

1 1
-------- --
17:43:31 46

values (current timestamp); values (year(current timestamp));

1 1
----------------------- ----
2020-09-20 17:43:31.869 2020
Funcții – date calendaristice
select nume, prenume, datanasterii, dayname(datanasterii) as ziuanasterii,
year(current date) - year(datanasterii) as varsta from studpersonal
NUME PRENUME DATANASTERII ZIUANASTERII VARSTA
------- ------- ------------ ------------ ------
Andrei Calin 1985-08-15 Thursday 35
Popescu Marian 1989-03-01 Wednesday 31
Andrei Andrei 1988-06-09 Thursday 32
Ion Elena 1988-11-25 Friday 32
select nume, prenume, datanasterii, year(current date - datanasterii) as
varsta from studpersonal
NUME PRENUME DATANASTERII VARSTA
values(current date - '10/21/1998')
------- ------- ------------ ------
Andrei Calin 1985-08-15 35
Popescu Marian 1989-03-01 31
Andrei Andrei 1988-06-09 32
Ion Elena 1988-11-25 31
Funcții matematice
values(floor(18.456), ceiling(18.456), round(18.456,2))

values(sqrt(16))
1
---
4.0

values(sin(radians(30)), cos(Radians(30)), sqrt(3)/2)

1 2 3
------------------- ------------------ ------------------
0.49999999999999994 0.8660254037844387 0.8660254037844386
Funcții agregat
values(min(10,3,5,6,7,9))

select count(*) from materii


1
--
10

select min(media), max(media), avg(media) from studentii


1 2 3
--- ---- -----------------
6.0 9.87 7.884444444444444

select min(media), max(media), avg(media), count(*), grupa


from studenti
group by grupa
having grupa like '%B_%'
SELECT
select grupa from studenti;
select distinct grupa from studenti;

select nume, prenume, media


from studpersonal as sp join studenti as st on sp.codstud = st.codstud
order by media desc
fetch first 3 rows only

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