Oracle-Interogari/sortari

Elemente de baza ale limbajului ORACLE

1. Nume

Toate obiectele dintr-o baza de date: tabele,coloane, indecsi, vizualizari, sinonime, etc. Un nume poate fi alcatuit dintr-un sir de maximum 30 de caractere ce pot contine:

  • Litere mari si mici

  • Cifrele sistemului zecimal

  • Si unul dintre urmatoarele caractere speciale: ‘_’, #,$

primul caracter fiind obligatoriu o litera

2. Expresii: o expresie este formata din variabile (nume de coloana sau variabile sistem), constante, operatori si functii.

3. Operatori:

  • aritmetici: +,-,*,/ se respecta prioritatea operatorilor din matematica

  • alfanumerici: operatorul de concatenare ||

  • relationali: <,>,<=,>=,<> sau !=, =.

Limbajul Oracle mai implementează o serie de operatori speciali cum ar fi:

LIKE- este utilizat pentru a verifica daca un sir de caractere respecta un anumit “model”. Daca valoarea sa se potriveste modelului va returna valoarea true, in caz contrar, va returna valoarea false. In model se pot utiliza urmatoarele caractere speciale:

  • caracterul de subliniere “_” tine locul unui singur caracter, oricare ar fi acesta

  • caracterul procent “%” tine locul la zero sau mai multe caractere oricare ar fi acestea

Exemplu: Daca dorim sa afisam numele persoanelor care contin caracterul”a” putem scrie :

SELECT * FROM persoane WHERE nume LIKE ’%a%’

Modelul ‘%a%’ precizeaza ca in fata sau dupa caracterul ‘a’ pot exista oricate caractere, inclusiv zero.

Daca in schimb am dori sa afisam numele acelor persoane care au pe a doua pozitie litera ‘a’ comanda trebuie sa fie:

SELECT * FROM persoane WHERE lower(nume) LIKE ’_a%’

In cazul in care trebuie sa verificam daca un sir de caractere contine unul dintre caracterele speciale(‘_’, ‘\’,’%’) vom scrie in model caracterul respectiv precedat de orice caracter special(‘\’ sau ‘&’), iar dupa model vom preciza cu ajutorul clauzei ESCAPE care este caracterul special care introduce secventa caracterelor\,_.%

Exemplu: Pentru a afisa din tabela employees persoanele al căror job_id conține caracterul ‘_’ pe pozitia a treia folosim comanda:

SELECT * FROM persoane WHERE lower(nume) LIKE ’%&_ _ _’ ESCAPE ‘&’

sau

SELECT * FROM persoane WHERE lower(nume) LIKE ’%\_ _ _%’ ESCAPE ‘\’

Pentru a afișa din tabela employees persoanele al căror job_id conține caracterul ‘_’ în orice poziție folosim comanda:

SELECT * FROM persoane WHERE lower(nume) LIKE ’%&_%’ ESCAPE ‘&’

sau:

SELECT * FROM persoane WHERE lower(nume) LIKE ’%\_%’ ESCAPE ‘\’

•operatorul BETWEEN – verifica dacă o valoare se găsește într-un interval definit de doua valori:

expresia X BETWEEN a AND b este echivalenta cu expresia (x>=a) AND (x<=b)

•operatorul IN- verifică dacă o valoare aparține unei mulțimi de valori specificate:

expresia X IN (a,b,c) este echivalenta cu (x=a) OR (x=b) OR (x=c)

• operatorii IS NULL si IS NOT NULL - se utilizeaza pentru a verifica daca o expresie are sau nu valoarea NULL.

Interogari simple

Procesul de extragere de informații din baza de date se numește interogare, iar formularea unei interogări înseamna construirea și lansarea unei comenzi SELECT. O interogare poate avea ca scop extragerea de informații din una sau mai multe tabele. Dacă se dorește interogarea mai multor tabele atunci ele trebuiesc legate prin clauze JOIN.

Forma generala:

SELECT coloana1 AS “alias1”, coloana 2 AS “alias2”,… FROM nume_tabela

WHERE conditie

GROUP BY conditie

HAVING conditie

ORDER BY conditie

Pentru a afisa toate coloanele tabelei se poate inlocui lista coloanelor cu caracterul *