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.
S-ar putea sa vreti sa creati declaratii SQL care pot fi folosite si altadata.Aceasta lectie se refera  de asemenea  mediul iSQL*Plus unde executati declaratiile SQL.  

Nota: iSQL*Plus este un nou produs Oracle9i.Este un browser unde se executa comenzile SQL.In versiunile mai vechi de Oracle SQL*Plus era mediul default de executie al comenzilor SQL.SQL*Plus este inca disponibil.


Ce pot face declaratiile SQL SELECT?

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

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.



Selectarea unor anumite coloane

Exemplu:

Se selecteaza coloanele ename si deptno din tabela emp.



Scrierea declaratiilor SQL

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.



Valori Null

Exemplu :

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



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



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 :



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.



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





Interactiunea intre SQL si iSQL*Plus

 

SQL este un limbaj de comanda pentru comunicarea cu serverul Oracle din orice unealta sau aplicatie.iSQL*Plus este o unealta Oracle care recunoaste si trimite declaratiile SQL la serverul Oracle pentru executie si contine propriul sau limbaj de comanda.

Caracteristici ale SQL-ului

 Poate fi folosit de o mare varietate de utilizatori, inclusiv aceia cu putina sau nici o experienta de programare;este un limbaj non-procedural, cu o sintaxa asemanatore cu engleza.De asemenea, reduce timpul necesar pentru crearea si intretinerea sistemelor.

Caracteristici iSQL*Plus

Urmatorul tabel compara SQL si iSQL*Plus :

  SQL  

           

                                                                                  iSQL*Plus

 Este un limbaj pentru comunicarea cu serverul Oracle pentru a accesa datele Recunoaste declaratiile SQL si le trimite serverului
Este bazat pe standardul ANSI pentru SQL Este interfata Oracle pentur executia declaratiilor SQL
Manipuleaza datele definirea tabelelor in baza de date Nu permite manipularea valorilor din baza de date
Nu are un caracter de continuare Are o liniuta (-) drept caracter de continuare daca comanda este mai lunga de o linie
Nu poate fi abreviat Poate fi abreviat
Foloseste functiile pentru a face unele formatari Foloseste comenzile penru a formata datele

Vedere generala asupra iSQL*Plus

iSQL*Plus este un mediu in care puteti sa: Comenzile iSQL*Plus pot fi impartite in urmatoarele categorii:

Categorie

Scop

De mediu Afecteaza comportamentul general al declaratiilor SQL pentru o sesiune
De formatare Formateaza rezultatele cererilor
Pentru manipularea fisierelor Salveaza declaratiile in fisiere de scipt in format text si ruleaza declaratiile din aceste fisiere
Executie Trimite declaratiile SQL din browser la serverul Oracle
Editare Modifica declaratiile SQL din fereastra de editare
Interactiune Permite crearea si trimiterea variabilelor catre declaratii SQL, tiparirea valorilor variabilelor, si afisarea mesajelor pe ecran
Diverse Are diverse comenzi de conectare la baza de date, pentru a manipula mediul iSQL*Plus, si pentru a afisa definitiile coloanelor

Conectarea la iSQL*Plus

Pentru a va conecta printr-un browser:

         1.Porniti browser-ul

         2.Intoduceti adresa mediului iSQL*Plus

         .Completati campurile nume de utilizator(username), parola(password) si Oracle Connection Identifier.

Mediul iSQL*Plus

Fereastra iSQL*Plus are mai multe zone cheie:

  1.Fereastra de editare(Edit window):zona unde scrieti declaratiile SQL si comenzile iSQL*Plus.

  2.Butonul de executie:pentru executia declaratiilor si comenzilor din fereastra de editare

  3.Optiunea de iesire(Output Option):default este Work Screen, care afiseaza rezultatul declaratiei SQL sub fereastra de editare.Celelalte optiuni sunt File si Window.File salveaza continutul intr-un fisier specificat.Window muta afisajul pe ecran, dar intr-o ordine diferita.

  4.Butonul de stergere a ecranului(Clear Screen):sterge textul din fereastra de editare

  5.Butonul de salvare a scriptului(Save Script):salveaza continutul ferestrei de editare intr-un fisier

  6.Locatorul de script(Script Locator):identifica numele si locatia unui fisier script pe care vreti sa-l executati

  7.Butonul de navigare(Browse):folosit pentru a gasi un fisier script utilizand fereasta de dialog a Windows File Open

  8.Iesire(Exit):clic pentru a incheia sesiunea  iSQL*Plus si a va intoarce la fereasta de conectare

  9.Help:asigura accesul la documentatia  iSQL*Plus

  10.Butonul parola:folositi-l pentru a va schimba parola

Afisarea structurii tabelelor

 Comanda  iSQL*Plus DESCRIBE afiseaza structura unui tabel    DESCRIBE nume_tabel Comanda afiseaza numele coloanelor si si tipul de date al fiecareia, de asemenea si daca coloana raspectiva trebuie sa contina date.In rezultat, in coloana Null? se indica daca o anumita coloana trebuie sa contina date;NOT NULL arata ca aceea coloana trebuie sa contina date.Coloana Type afiseaza tipul de date pentru o coloana.
Tipurile de date sunt descrise in urmatorul tabel:

Tipul de date Descriere
NUMBER(p,s) Valoare numerica avand maximum p cifre, cu maxim s cifre dupa virgula
VARCHAR2(s) Valoare tip caracter de lungime variabila si maximum s
DATE dValoare de data si ora intre 1 ianuarie 4712 i.e.n.si 31 decembrie 9999 e.n.
CHAR(s) Valoare tip caracter de lungime fixa s

 

Lucrul cu fisierele script

Puteti salva comenzile si declaratiile din fereastra de editare intr-un fisier text dupa cum urmeaza:

1. Scrieti declaratiile SQL in fereastra de editare din  iSQL*Plus.

2. Click pe butonul Save script.Aceasta deschide fereastra de dialog Windows File Save.Scrieti numele fisierului.In mod normal va fi un fisier html.Puteti schimba tipul fisierului in fisier text sau sa-l salvati ca un fisier .sql.



Puteti utiliza comenzi si declaratii salvate anterior dintr-un fisier script in  iSQL*Plus astfel:

1.Scrieti numele fisierului si locatia.Sau, puteti apasa butonul Browse pentru a gasi numele scriptului si locatia.

2.Apasati butonul Save script.Continutul fisierului este incarcat in fereastra de editare  iSQL*Plus.

3.Apasati butonul Execute pentru a rula continutul ferestrei de editare  iSQL*Plus.



Puteti salva de asemenea rezultatele generate de o declaratie SQL sau o comanda  iSQL*Plus intr-un fisier:

1.Scrieti declaratiile SQL si comenzile iSQL*Plus in fereastra de editare.

2.Schimbati optiunea de iesire in Save.

3.Apasati butonul Execute.Astfel veti deschide fereastra de dialog Windows File Save.Alegeti un fisier(sau creati-l).Default, va fi un fisier html.Puteti schimba tipul fisierului.Rezultatele vor fi trimise in fisierul specificat.

 

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?




 
Rezolvari
 
 
  Acasa Capitolul urmator