ALTE DOCUMENTE
|
|||||||
Oracle stocheaza datele în tabele pe care unii utilizatori le pot citi; alti utilizatori au însa privilegiul de a actualiza, de a elimina si de a insera noi date în baza de date. Acest capitol trece în revista tehnicile utilizate pentru a efectua aceste actiuni.
Selectarea datelor din baza de date Oracle este sinonima cu adresarea unei întrebari bazei de date. Scopul dumneavoastra este sa primiti informatii din baza de date ca raspuns la întrebarile pe care le puneti sistemului Oracle. Puteti pune multe tipuri diferite de întrebari sistemului Oracle întrebari care sunt tratate în acest capitol.
întretinerea datelor în baza de date este o sarcina predominanta fa# 17517p152r 5;a de alte sarcini în server întretinerea datelor din baza de date Oracle implica eliminarea datelor nedorite, modificarea datelor existente si inserarea noilor date. Aceste actiuni sunt necesare pentru pastrarea intacta a integritatii si preciziei datelor. Baza de date ar fi inutila si nu si-ar justifica existenta daca utilizatorii nu ar avea înceredere n datele acesteia.
Selectarea datelor din baza de date reprezinta actiunea de interogare a serverului si de obtinere a unui raspuns la aceasta interogare. Utilizatorii, proiectantii, administratorii bazei de date si altii au cu totii nevoie sa selecteze date din baza de date. Utilizatorilor le este necesar accesul ia date pentru efectuarea sarcinilor zilnice legate de activitatile comerciale ale companiei. Proiectantii si administratorii bazei de date trebuie sa poata accesa datele pentru a dezvolta noi aplicatii, pentru a valida aplicatii existente si pentru a acorda asistenta utilizatorilor finali.
Activitatile curente ale unei companii necesita întretinerea continua a datelor. De exemplu, o companie poate adauga noi comeiizi în baza de date prin inserarea în server a unor linii noi continând comenzile. In plus, aceasta companie poate sa modifice cantitatile din comenzile existente prin modificarea liniilor din server corespunzatoare acestor comenzi.
Acest capitol trateaza diversele metode de a accesa datele bazei de date cu comanda select. De asemenea, sunt descrise si comenzile folosite pentru întretinerea datelor bazei de date.
Pe parcursul acestui capitol, este esential sa stiti exact ce tabele si coloane doriti sa selectati sau sa întretineti. Comanda'describe va poate ajuta'sa stabiliti daca într-adevar accesati tabelul, vederea sau sinonimul dorit. Comanda describe afiseaza structura tabelului, incluzând numele coloanelor, tipul, lungimea si precizia datelor si starea nuli sau not nuli a acestora.
Exemplul urmator utilizeaza comanda describe pentru a afisa structura tabelului ANG:
DESCRIBE ang
Datele de iesire sunt urmatoarele: |
||
Name |
Null? |
Type |
MARCA_ANG |
NOT NULL |
NUMBER |
PRENUME |
NOT NULL |
VARCHAR2 (30) |
NUME |
NOT NULL |
VARCHAR2 (30) |
COMENTARII |
VARCHAR2(5) |
În coloana Name din tabelul anterior sunt enumerate numele coloanelor. Acestea sunt numele la care faceti referire în instructiunile dumneavoastra de selectare si de manipulare a datelor Coloana Nuli? specifica daca o coloana trebuie sa contina date. O coloana jrebuie sa contina datele numai daca în dreptul ei apare cuvântul cheie Not Nuli. In coloana Type apare tipul datelor din fiecare colana a tabelului.
Pentru interogarea si afisarea datelor din baza de date Oracle, se foloseste instructiunea SQL select. Sintaxa generala a instructiunii select este urmatoarea:
select nume_coloana(e) from tabel (sau vedere sau instantaneu)
Programul Oracle aliniaza la stânga toate datele de tip caracter returnate de instructiunea select, respectiv la dreapta datele de tip numeric.
Pentru a afisa toate liniile unui tabel, folositi asteriscul (*) în instructiunea select. Exemplul urmator selecteaza toate liniile din tabelul ANG:
select * from ang;
Puteti de asemenea sa afisati toate coloanele unui tabel prin enumerarea numelor tuturor coloanelor în instructiunea select. De exemplu, instructiunea urmatoare returneaza acelasi rezultat ca si exemplul anterior:
select marca_ang, prenume, nume, comentarii from ang;
Uneori veti dori sa afisati toate liniile unui tabel. De exemplu, s ar putea sa doriti sa vedeti toate statele care sunt reprezentate prin vizitatorii unui muzeu în ziua curenta Pentru a vedea fiecare linie din baza de date registru, puteti lansa urmatoarea comanda:
select stat_musafir from registru;
Date de iesire:
STAT_MUSAFIR |
Alabama
Alabama
Arkansas
California
California
California
Wisconsin
Washington
Washington
Dupa cum puteti vedea din acest exemplu, este listata fiecare linie a bazei de date. Acest lucru face ceva mai dificil de stabilit ce state sunt reprezentate prin vizitatori. Ca alternativa, puteti folosi clauza distinct în instructiunea select pentru a afisa numai statele distincte din baza de date. Utilizarea clauzei distinct duce la eliminarea tuturor valorilor duplicate ale coloanei specificate în instructiunea select. Exemplul urmator foloseste clauza distinct:
select distinct stat_musafir from registru;
Date de iesire:
STAT_MUSAFIR |
Alabama
Arkansas
California
Wisconsin Washington
La afisarea rezultatelor returnate de o instructiune select, numele reale ale coloanelor sunt folosite drept antete. Dupa cum s-a putut vedea în exemplul anterior, antetul coloanei a preluat numele coloanei, stat_musafir
In instructiunea select, puteti defini un alt antet al coloanei prin includerea noului antet dupa numele coloanei. Daca noul antet contine blancuri sau caractere speciale, acesta trebuie încadrat între ghilimele. Exemplul urmator modifica antetul coloanei din stat_musafir (antetul prestabilit) în stat vizitator:
select distinct stat_musafir "Stat Vizitator" from registru;
Date de iesire:
Stat Vizitator |
Alabama
Arkansas
California
Wisconsin Washington
Pentru a selecta anumite linii de date dintr-un tabel, folositi clauza where în instructiunea select. Clauza where este compusa din nume de coloane, operatori de comparatie, constante si expresii. Puteti folosi oricare dintre operatorii de comparatie (=, <,' >, <=, >=, ike between, in sau nuli). Instructiunea urmatoare selecteaza numai acei angajati care apartin de departamentul Financiar:
select * from ang
where nume_dept = 'Financiar';
Clauza where accepta multi operatori diferiti în exemplul urmator, instructiunea select foloseste operatorul li ke pentru a r'eturna numai codurile de articole care încep cu CK1. Caracterul de înlocuire ( ) e folosit împreuna cu operatorul like, pentru a indica faptul ca se face comparatia cu tiparul numai pentru primele trei caractere ale fiecarei date din coloana. Oracle cauta coincidentele între caracterele CK1 si primele trei caracterele din coloana de date. Semnul procent este folosit pentru a indica faptul ca nu va fi comparat cu tiparul nici un caracter trecut de a treia pozitie.
Select * from lista articole "ARTICOLE CK1" where cod_articol lîke 'CK1%';
Datele de iesire:
ARTICOLE CK1 |
CK1-0921
CK1-A82
CK1723D
Instructiunea urmatoare foloseste comparatia cu un tipar având un caracter de înlocuire (-) care tine locul unui singur caracter. Instructiunea select returneaza numai acei agenti de vânzari al caror nume se încadreaza în tiparul sm-th, unde cratima poate fi orice caracter:
select nume_agent_vanzari from comenzi where nume_agent_vanzari LIKE 'SM-TH1;
Date de iesire:
SMITH SMYTH
Sistemul Oracle premite utilizarea unor conditii complexe în instructiunea select. Acest lucru înseamna ca puteti folosi orice numar de conditii în clauza where a instructiunii select. De exemplu, instructiunea urmatoare selecteaza acei angajati ai departamentului Financiar ale caror comisioane sunt mai mari decât 20 de procente si a caror data de angajare este anterioara datei de l Ianuarie 1990:
select * from ang
where nume_dept = 'Financiar' and comision_perceput > 20 and
data_angajare < '1-JAN-1990';
Puteti ordona liniile afisate de o interogare în ordine crescatoare sau descrescatoare în mod prestabilit, programul Oracle afiseaza liniile în ordinea în care acestea apar în baza de date. Aceasta înseamna ca de obicei liniile nu vor fi în nici o ordine. Pentru a ordona liniile rezultatului, folositi clauza order by în instructiunea select. Puteti include urmatoarele clauze împreuna cu clauza order b y pentru a obtine rezultatul dorit:
Asc - ordoneaza liniile în ordine crescatoare. Acesta este modul prestabilit pentru clauza order by.
Dese - ordoneaza liniile în ordine descrescatoare.
Exemplul urmator afiseaza liniile rezultante ale unei interogari în ordine crescatoare:
select nume_ang "Nume Angajat"
from ang
order by nume_ang ase;
Date de iesire:
Nume Angajat |
Adams Archibald
Baker Cutshall
Wilson Young
Instructiunea urmatoare afiseaza liniile interogarii ordonate întâi dupa cod uzina si apoi dupa nume_ang:
select cod_uzina, nume_ang, nr_dept from ang order by cod_uzina, nume_ang ASC;
COD_UZINA |
NUME_ANG |
NR_DEP |
Baker | ||
Young | ||
Cutshall | ||
Adams | ||
Archibald | ||
Wilson |
|