Sunteți pe pagina 1din 4

1.

Cereri simple SQL

Scopul lectiei

Pentru a extrage date din baza de date trebuie sa folositi declaratiile SQL SELECT.S-ar putea sa fie
nevoie sa restrictionati coloanele care sunt afisate.Aceasta lectie descrie toate declaratiile SQL
necesare pentru a realiza aceste actiuni.

Ce pot face declaratiile SQL SELECT?

O declaratie SQL extrage informatii din baza de date.Folosind o declaratie SELECT puteti face
urmatoarele:

 Proiectie:puteti alege coloanele din tabela pe care vreti sa vi le returneze cererea


facuta.Puteti alege oricate coloane doriti.

 Selectie:puteti alege randurile dintr-o tabela pe care le doriti a fi returnate de cerere.Puteti


alege diverse criterii pentru a restrictiona randurile pe care le vedeti.

 Join:puteti folosi capacitatea de join din SQL pentru a reuni date care sunt inregistrte in
diverse tabele creand o legatura intre ele.

Declaratia SELECT de baza

SELECT *|{[DISTINCT] coloana|expresie [alias],...}


FROM tabela;

SELECT este o lista de una sau mai multe coloane


* selecteaza toate coloanele
DISTINCT suprima dupicatele
coloana/expresie selecteaza coloana respectiva sau expresia
alias ii da coloanei selectate un alt header
FROM tabela specifica tabela continand coloanele

Exemplu:

Selectarea tuturor coloanelor dintr-o tabela.

SELECT *

FROM emp

Selectarea unor anumite coloane

Exemplu:

Se selecteaza coloanele ename si deptno din tabela emp.

SELECT ename,deptno

FROM emp

Scrierea declaratiilor SQL


 Declaratiile SQL nu sunt case sensitive.
 Declaratiile SQL pot fi pe une sau mai multe linii.
 Cuvintele cheie nu pot fi abreviate sau despartite pe doua randuri.
 Clauzele sunt plasate de obicei pe randuri diferite.

Expresii aritmetice

S-ar putea sa aveti nevoie sa modificati felul in care datele sunt afisate, sa faceti diferite calcule,
sau sa vedeti posibile scenarii.Pentru toate acestea e posibil sa folositi expresii aritmetice.O
expresie aritmetica poate contine nume de coloane, valori numerice constante, si operatori
aritmetici.

Operatori aritmetici

Puteti folosi operatori aritmetici in orice clauza a unei declaratii SQL cu exceptia clauzei FROM.

Folosirea operatorilor aritmetici

Exemplu:

Listeaza numele fiecarui angajat, salariul lunar si salariul anual dupa o marire lunara de 100.

SELECT ename, sal, 12*(sal+100)

FROM emp

Valori Null

 O valoare NULL este o valoare care nu este diponibila , nealocata, necunoscuta, sau
neaplicabila.
 Un NULL nu este acelasi lucru ca zero sau spatiu.
 Daca unui rand ii lipseste valoarea datei pentru o anumita coloana acea valoare este
considerata null, sau considerata a contine un null.
 Orice tip de coloana poate contine null.Totusi unele restrictii cum ar fi NOT NULL sau PRIMARY
KEY , nu permit ca o valoare null sa fie folosita in coloana.

Exemplu :

In rezultat, numai agentii de vanzari au comision.Ceilalti angajati nu au dreptul la comision.Un null


reprezinta acest fapt.

SELECT ename, job, comm

FROM emp

Daca orice valoare de coloana intr-o expresie aritmetica este null, atunci expresia este null.De
exemplu,daca incercati sa faceti impartirea prin zero, veti obtine o eroare.Totusi, daca divizati un
numar prin null, rezultatul este null.

Exemplu :

In acest exemplu , angajatii fara comision vor avea o valoare null in coloana a doua

SELECT ename,sal+comm

FROM emp

Alias-uri de coloana
Cand afiseaza rezultatul unei cereri, iSQL*Plus foloseste in mod normal numele coloanei selectate
ca header de coloana.Acest header s-ar putea sa nu fie descriptiv si de aceea, greu de
inteles.Puteti schimba header-ul de coloana folosind alias-urile de coloana.Alias-ul se specifica dupa
coloana in lista SELECT folosind spatiu ca separator.Ca default alias-urile apar cu litere mari in
header-ului coloanei.Daca alias-ul contine spatii sau caractere speciale(cum ar fi # sau $), sau este
case sensitive, trebuie inchis intre semne de citare(" ").
In exemplul care urmeaza se afiseaza numele si procetul comisionului pentru fiecare
angajat.Observati ca cuvatul cheie optional AS este in fata alias-ului de coloana.Rezultatul cererrii
este acelasi indiferent daca AS este folosit sau nu.Observati de asemenea ca declaratia SQL are
alias-urile de coloana scrise cu litere mici, pe cand in rezultat header-urile de coloana sunt afisate
cu litere mari(default).

Exemplu :

SELECT

deptno AS "numar departament", job AS post

FROM emp

Operatorul de concatenare

Puteti lega coloane cu alte coloane, expresii aritmetice, sau valori constante pentu a crea o
expresie de caractere folosind operatorul de concatenare (||).Coloanele din stanga sau dreapta
operatorului sunt combinate pentru a forma o singura coloana de iesire.

Exemplu :

In acest exemplu ename si job sunt concatenate, si le este dat alias-ul angajati.

SELECT ename||job AS angajati

FROM emp

Siruri literale de caractere

Un literal este un caracter, un numar sau o data care este inclusa in lista SELECT si nu este un
nume sau un alias de coloana.Este tiparit pentru fiecare rand intors.Sirurile literale de text
neformatat pot fi incluse in rezultatul cererii si sunt tratate la fel ca si coloanele in lista
SELECT.Literalii care sunt data sau caractere trebuie sa fie incadrate in semne simple
de citare (' ');literalii numerici nu.

Randuri duplicat

Daca nu indicati altfel, iSQL*Plus afiseaza rezultatele unei cereri fara a elimina randurile
duplicat.Pentru a elimina randurile duplicat, includeti cuvantul cheie DISTINCT in clauza SELECT
imediat dupa cuvantul cheie SELECT.Puteti specifica mai multe coloane dupa DISTINCT.Calificativul
DISTINCT afecteaza toate coloanele selectate,si rezultatul este fiecare combinatie distincta a
coloanelor.

Exemplu:

Se listeaza doar 10 randuri in loc de 15 cum s-ar fi listat fara cuvantul cheie DISTINCT

SELECT DISTINCT deptno, job

FROM emp
Exercitii

Exercitiul 1

Afisati coloanele ename, cu alias-ul Nume,job si salariul anual, cu alias-ul Salariu Anual.

Exercitiul 2

Afisati numele si postul fiecarui angajat sub forma ename este job si seful lui are numarul MGR, cu
alias-ul de coloana Detalii angajati.

Exercitiul 3

Afisati toate posturile si toti sefii(coloana MGR) acestora, fara a avea randuri duplicate.

Exercitiul 4

Afisati toate posturile, cu departamentele fiecaruia,cu seful fiecarui post(MGR) si cu salariul anual
cu alias-ul Salariu.

Exercitiul 5

La cerinta de mai inainte, nu mai afisati salariul,dar afisati seful fiecarui post si eliminati randurile
duplicate.Afisati primele doua coloane cu alias-ul Post si Departament sub forma:Un angajat cu
acest job lucreaza in departamentul deptno.De ce primul rand arata astfel?