0% au considerat acest document util (0 voturi)
44 vizualizări5 pagini

Elemente de Baza SQL2

Documentul prezintă elementele de bază ale limbajului SQL pentru manipularea datelor din baze de date relaționale. Sunt explicate clauzele SELECT, DISTINCT, WHERE, LIKE, ORDER BY și se dau exemple de utilizare a acestora pentru a selecta, filtra și ordona înregistrări din tabele.

Încărcat de

Ramona Dumitriu
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
44 vizualizări5 pagini

Elemente de Baza SQL2

Documentul prezintă elementele de bază ale limbajului SQL pentru manipularea datelor din baze de date relaționale. Sunt explicate clauzele SELECT, DISTINCT, WHERE, LIKE, ORDER BY și se dau exemple de utilizare a acestora pentru a selecta, filtra și ordona înregistrări din tabele.

Încărcat de

Ramona Dumitriu
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 5

Elemente de baza SQL

Eliminarea liniilor duplicate

COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU


1 Ionescu Gheorghe Brasov 22 5 300
2 Georgescu Maria Iasi 30 6 890
3 Marinescu Angela Sibiu 3 2100
4 Antonescu Elena Sibiu 10 1 840
5 Bischin Paraschiva Brasov 22 500
6 Olaru Angela Ploiesti 22 2 1500
7 Vasilescu Vasile Cluj-Napoca 15 1 840
8 Popescu Ioan Bucuresti 10 2 1200

In tabela PERSOANE exista doua inregistrari de persoane care sunt din Brasov si lucreaza la aceeasi
firma 22. Daca dorim sa apara o singura data vom utiliza clauza DISTINCT in cadrul clauzei SELECT.
SELECT DISTINCT localitatea, firma FROM persoane
Daca dorim sa afisam doar localitatile ce apar in tabela PERSOANE, fiecare localitate sa apara o
singura data vom scrie:
SELECT DISTINCT localitatea FROM persoane

Filtrarea liniilor. Clauza WHERE

Daca dorim informatii despre persoanele dintr-o anumita localitate vom selecta doar acele linii care
ne intereseaza cu ajutorul clauzei WHERE, adaugara la comanda SELECT
SELECT* FROM persoane
WHERE localitatea=’Brasov’ OR localitatea=’Sibiu’

COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU


1 Ionescu Gheorghe Brasov 22 5 300
3 Marinescu Angela Sibiu 3 2100
4 Antonescu Elena Sibiu 10 1 840
5 Bischin Paraschiva Brasov 22 500

Operatorul LIKE utilizat pentru a verifica daca un sir de caractere respecta un anumit “model”. Daca
valoarea se potriveste modelului, operatorul va reurna valoarea true altfel, va returna valoarea false.
In model se pot utiliza caracterul de subliniere care tine locul unui singur character, oricare ar fi
acesta,dar si caracterul procent (%) care tine locul de zero sau mai multe caractere, oricare ar fi
acestea.
Daca dorim sa afisam toate peroanele al caror prenume contine litera a pe orice pozitie, vom scrie:
SELECT* FROM persoane
WHERE lower(prenume) LIKE ’%a%’

Modelul ’%a%’ precizeaza ca in fata caracterului a, in prenume, se pot gasi oricate caractere.
Se va afisa:
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
2 Georgescu Maria Iasi 30 6 890
3 Marinescu Angela Sibiu 3 2100
4 Antonescu Elena Sibiu 10 1 840
5 Bischin Paraschiva Brasov 22 500
6 Olaru Angela Ploiesti 22 2 1500
7 Vasilescu Vasile Cluj-Napoca 15 1 840
8 Popescu Ioan Bucuresti 10 2 1200
Daca dorim sa afisam persoanele a caror prenume contine litera a pe a doua pozitie vom folosi:
SELECT* FROM persoane
WHERE prenume LIKE ’_a%’
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
2 Georgescu Maria Iasi 30 6 890
5 Bischin Paraschiva Brasov 22 500
7 Vasilescu Vasile Cluj-Napoca 15 1 840

Pentru a afisa persoanele din tabela employees al caror job_id contine caracterul
underscore(_), pe a treia pozitie de la sfarsit, folosim comanda:
SELECT first_name,job_id FROM employees
WHERE job_id LIKE ’%&___’ ESCAPE ’&’
Daca dorim sa afisam persoanele al caror job_id contine un caracter underscore oriunde oriunde
in sir vom utiliza:
SELECT first_name,job_id FROM employees
WHERE job_id LIKE ’%&_%’ ESCAPE ’&’

Sortarea datelor

Pentru a preciza criterii dupa care se ordoneaza anumite datele folosim clauza ORDER BY. Aici vom
preciza coloanele sau expresiile dupa care se vor ordona liniile unei tabele inainte de a fi afisate.
Afisarea datelor din tabela PERSOANE in ordine alfabetica a localitatii se va face folosind comanda:
SELECT * FROM persoane
ORDER BY localitatea
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
1 Ionescu Gheorghe Brasov 22 5 300
5 Bischin Paraschiva Brasov 22 500
8 Popescu Ioan Bucuresti 10 2 1200
7 Vasilescu Vasile Cluj-Napoca 15 1 840
2 Georgescu Maria Iasi 30 6 890
6 Olaru Angela Ploiesti 22 2 1500
3 Marinescu Angela Sibiu 3 2100
4 Antonescu Elena Sibiu 10 1 840
Daca dorim ca persoanele din aceeasi localitate sa fie ordonate descrescator dupa salriu vom folosi
comanda:
SELECT * FROM persoane
ORDER BY localitatea, salariu DESC
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
5 Bischin Paraschiva Brasov 22 500
1 Ionescu Gheorghe Brasov 22 5 300
8 Popescu Ioan Bucuresti 10 2 1200
7 Vasilescu Vasile Cluj-Napoca 15 1 840
2 Georgescu Maria Iasi 30 6 890
6 Olaru Angela Ploiesti 22 2 1500
3 Marinescu Angela Sibiu 3 2100
4 Antonescu Elena Sibiu 10 1 840
9 Iordache Iolanda Sibiu 23 2 780
SELECT * FROM persoane
ORDER BY firma DESC
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
3 Marinescu Angela Sibiu 3 2100
2 Georgescu Maria Iasi 30 6 890
9 Iordache Iolanda Sibiu 23 2 780
1 Ionescu Gheorghe Brasov 22 5 300
5 Bischin Paraschiva Brasov 22 500
6 Olaru Angela Ploiesti 22 2 1500
7 Vasilescu Vasile Cluj-Napoca 15 1 840
8 Popescu Ioan Bucuresti 10 2 1200
4 Antonescu Elena Sibiu 10 1 840

Ex:
SELECT nume, prenume, salariu, localitatea
FROM persoane ORDER BY 3 DESC
Se va selecta descrescator liniile dupa salariu.
NUME PRENUME SALARIU LOCALITATEA
Marinescu Angela 2100 Sibiu
Olaru Angela 1500 Ploiesti
Popescu Ioan 1200 Bucuresti
Georgescu Maria 890 Iasi
Antonescu Elena 840 Sibiu
Vasilescu Vasile 840 Cluj-Napoca
Iordache Iolanda 780 Sibiu
Bischin Paraschiva 500 Brasov
Ionescu Gheorghe 300 Brasov
Ex:

SELECT nume||’’|| prenume AS ”Nume si prenume”, salariu, localitatea


FROM persoane ORDER BY ”Nume si prenume”
Nume si prenume SALARIU LOCALITATEA
AntonescuElena 840 Sibiu
BischinParaschiva 500 Brasov
Georgescu Maria 890 Iasi
IonescuGheorghe 300 Brasov
IordacheIolanda 780 Sibiu
MarinescuAngela 2100 Sibiu
OlaruAngela 1500 Ploiesti
PopescuIoan 1200 Bucuresti
VasilescuVasile 840 Cluj-Napoca
Ex:
SELECT * FROM persoane
WHERE localitatea IN ('Sibiu','Brasov')
ORDER BY salariu DESC

COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU


3 Marinescu Angela Sibiu 3 2100
4 Antonescu Elena Sibiu 10 1 840
9 Iordache Iolanda Sibiu 23 2 780
5 Bischin Paraschiva Brasov 22 500
1 Ionescu Gheorghe Brasov 22 5 300

Afisarea primelor n linii

Dorim sa afisam la sfarsitul datelor unei tabele doar primele n linii.

Avem nevoie de pseudocoloana ROWNUM care returneaza numarul de ordine al unei linii intr-o
tabela.

SELECT cod, nume, prenume, rownum

FROM persoane

COD NUME PRENUME ROWNUM


1 Ionescu Gheorghe 1
2 Georgescu Maria 2
3 Marinescu Angela 3
4 Antonescu Elena 4
5 Bischin Paraschiva 5
6 Olaru Angela 6
7 Vasilescu Vasile 7
8 Popescu Ioan 8
9 Iordache Iolanda 9

SELECT cod, nume, prenume, rownum


FROM persoane
WHERE ROWNUM<=3
COD NUME PRENUME ROWNUM
1 Ionescu Gheorghe 1
2 Georgescu Maria 2
3 Marinescu Angela 3

Daca vrem sa afisam persoanele cu cele mai mici salarii (primele trei) folosim subinterogarea:
SELECT *
FROM (SELECT * FROM persoane
ORDER BY salariu)
WHERE ROWNUM<=3
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
1 Ionescu Gheorghe Brasov 22 5 300
5 Bischin Paraschiva Brasov 22 500
9 Iordache Iolanda Sibiu 23 2 780

Pentru a afisa persoanele cu cele mai mari salarii folosim subinterogarea:


SELECT *
FROM (SELECT * FROM persoane
ORDER BY salariu desc)
WHERE ROWNUM<=4
COD NUME PRENUME LOCALITATEA FIRMA JOB SALARIU
3 Marinescu Angela Sibiu 3 2100
6 Olaru Angela Ploiesti 22 2 1500
8 Popescu Ioan Bucuresti 10 2 1200
2 Georgescu Maria Iasi 30 6 890

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