Elemente de Baza SQL2
Elemente de Baza SQL2
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
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’
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:
Avem nevoie de pseudocoloana ROWNUM care returneaza numarul de ordine al unei linii intr-o
tabela.
FROM persoane
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