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 *