ALTE DOCUMENTE
|
|||||||||
SQL (limbaj structurat de interogare) este limbajul standard pentru sistemele de gestionare a bazelor de date relationale, definit de ANSI (American National Standards Institute).
SQL este un limbaj neprocedural foarte simplu, dar performant, pentru comunicarea cu serverul Oracle. Toate operatiile executate īn baza de date Oracle sunt efectuate folosind instructiuni 424d316e SQL.
SQL poseda un set cuprinzator de comenzi pentru o mare diversitate de sarcini, printre care:
Interogarea datelor
Actualizarea, inserarea si eliminarea datelor
Crearea, modificarea si eliminarea obiectelor bazelor de date
Controlul accesului la baza de date
Asigurarea integritatii si consistentei datelor
O instructiune SQL este un set de directive care specifica serverului Oracle sa efectueze o actiune. Aceste instructiuni contin cuvinte rezervate si au o sintaxa specifica. O instructiune SQL incompleta nu poate fi executata; la īntālnirea unei astfel de instructiuni, programul Oracle returneaza o eroare.
Instructiunile SQL se īmpart īn urmatoarele categorii:
Instructiuni DML (Data Manipulation Language - limbaj de manipulare a datelor)
Instructiunile SQL interogheaza sau manipuleaza obiecte existente īn schema. De exemplu, ele va permit sa inserati noi Unii īntr-un tabel sau īntr-o vedere.
Instructiuni DDL (Data Definition Language -- limbaj de definire a datelor)
Instructiunile DDL definesc sau modifica structura obiectelor din schema. De exemplu, pentru crearea unui tabel, veti folosi instructiuni DDL.
Instructiuni pentru controlul tranzactiilor
Aceste instructiuni gestioneaza toate modificarile efectuate de instructiunile DML. De exemplu, instructiunile pentru controlul tranzactiilor safveaza datele.
Instructiuni SQL īncapsulate
Instructiunile SQL īncapsulate īncorporeaza instructiuni DML, DDL si instructiuni pentru controlul tranzactiilor īntr-un program scris īntr-un limbaj procedural. De exemplu, o instructiune SQL īncapsulata va permite sa creati si sa eliberati cursori.
Instructiuni pentru controlul sistemului
Exista o singura instructiune pentru controlul sistemului. Instructiunea alter session este utilizata pentru a termina executia proceselor si pentru a gestiona alti parametri de sistem.
Instructiuni pentru controlul sesiunii
Instructiunile pentru controlul sesiunii gestioneaza proprietatile sesiunii unui utilizator. De exemplu, veti folosi instructiuni pentru controlul sesiunii pentru a activa si dezactiva roluri.
SQL este un limbaj foarte performant de pe urma caruia beneficiaza toate tipurile de utilizatori ai bazelor de date Oracle, si anume:
Administratorii bazei de date
Creatorii de aplicatii
Administratorii de securitate ai bazei de date
Utilizatorii finali
SQL este un limbaj foarte flexibil care va permite sa dezvoltati programe performante. SQL va permite sa lucrati cu grupuri mari de date. īn plus, limbajul SQL permite utilizarea rezultatelor unei interogari ca date de intrare pentru o alta instructiune de interogare.
Limbajul SQL va scuteste de efortul de a stabili metoda corecta de acces. Sistemul Oracle utilizeaza propriile capacitati de optimizare pentru a determina cele mai rapide si eficiente mijloace de accesare a datelor. Acest lucru simplifica aplicatiile si reduce eforturile de proiectare.
Prin definirea limbajului SQL ca unic limbaj de accesare a bazei de date, programul Oracle elimina compromisurile potentiale referitoare la securitate si la date.
Limbajul SQL este folosit pentru a crea si a manipula toate obiectele Oracle. Aceste obiecte includ tabele, vederi, grupuri, instantanee, secvente, sinonime, roluri si spatii-tabel.
Paragraful urmator contine informatii de referinta despre elementele de daza ale limbajului SQL.
Limbajul SQL reprezinta mijlocul principal de comunicare cu baza de date Oracle. Ca atare, pentru īmbunatatirea comunicarii cu baza de. date Oracle trebuie īntelese cāteva stiluri si structuri, printre care:
Programul SQL*Plus trateaza comenzile dumneavoastra īn mod nediferentiat indiferent daca sunt tastate cu majuscule sau cu litere mici.
Singura exceptie o reprezinta cazul īn care se efectueaza o comparatie.
Instructiunile SQL īncep cu comanda SQL, urmata de restul instructiunii.
De exemplu, urmatoarea instructiune SQL foloseste comanda SQL drop table pentru a elimina din baza de date obiectul-tabel ang:
DROP TABLE ang;
Atunci cānd serverul Oracle genereaza un cod de eroare, acesta are urmatoarea structura:
error: cod eroare: descriere eroare
Multe dintre obiectele Oracle sunt compuse din parti pe care trebuie sa le denumiti atunci cānd creati obiectul. De exemplu, coloanele tabelelor si secventele sunt denumite īn timp ce sunt create. Limbajul SQL impune o serie de reguli privind denumirea obiectelor. Regulile urmatoare sunt valabile pentru numele obiectelor, precum si cele ale utilizatorilor bazei de date:
Numele trebuie sa aiba īntre 1 si 30 de octeti. Numele bazelor de date sunt limitate la opt octeti; legaturile bazelor de date pot avea pāna la 128 de octeti.
Numele nu pot fi īncadrate īntre ghilimele simple (apostroafe).
Nu se face distinctie īntre majuscule si litere mici.
Numele pot contine numai caractere alfanumerice si caracterele _, $ si #.
Numele legaturilor bazelor de date pot contine si caracterele. si @. Numele trebuie sa īnceapa cu un caracter alfabetic'.
Un nume nu poate fi un cuvānt rezervat Oracle sau SQL.
Numele
trebuie sa fie unic īn propriul spatiu al numelor. Fiecare dintre
urmatoarele aliniate reprezinta un singur spatiu al numelor.
Toate obiectele enumerate īntr-un anumit aliniat sunt continute īn
respectivul spatiu al numelor. Aceasta īnseamna, de exemplu, ca un
tabel si o vedere se gasesc īn acelasi spatiu al numelor
drept pentru care nu pot avea nume identice.
Spatiile-tabel se gasesc īn alt spatiu al numelor decāt
indecsii si prin urmare pot avea nume identice.
Tabele, vederi, secvente, instantanee, pachete, sinonime private, proceduri de sine statatoare si functii
Indecsi
Restrictii
Grupuri
Declansatori
Legaturi private de baze de date
Legaturi publice de baze de date
Spatii-tabel
Segmente de revenire
Sinonime publice
Rolurile utilizatorilor
Un nume poate fi īncadrat īntre ghilimele duble. Iata cāteva motive pentru folosirea ghilimelelor duble:
Daca numele contine blancuri
Daca vreti ca programul sa faca deosebirea īntre majuscule si literele mici
Daca vreti sa īncepeti numele cu orice altceva decāt un caracter alfabetic
Este recomandabil ca numele pe care īl atribuiti unui obiect sa fie descriptiv si sugestiv. De asemenea, pentru a descrie acelasi element, este bine sa folositi acelasi nume de coloana īn toate tabelele.
Sintaxa generala pentru referirea unui obiect sau a unei parti a unui obiect este
schema.nume_obiect.nume_parte_obiect@legatura_baza_de_date
Schema este locul īn care se gaseste obiectul. Acest identificator va permite sa faceti referire la un obiect situat īn baza de date a altui utilizator. Daca omiteti acest identificator, Oracle considera ca obiectul se gaseste īn schema dumneavoastra.
nume obiect este numele obiectului la care se face referire.
nume_parte obiect va permite sa faceti referire la o parte a unui obiect, cum ar fi o coloana a unui tabel. Acest parametru este optional.
legatura_baza_de_date este numele bazei de date care contine obiectul. Aceasta nu poate fi baza dumneavoastra de date - este baza de date a altui utilizator, pe care vreti sa o accesati. Daca este omis acest parametru, programul Oracle presupune ca faceti referire la un obiect din propria dumneavoastra baza de date.
Intr-o instructiune SQL care face referire la un obiect Oracle, programul evalueaza contextul instructiunii SQL si localizeaza obiectul īn spatiul numelor corespunzator. Daca programul Oracle nu reuseste sa gaseasca obiectul īn spatiul numelor corespunzator, returneaza o eroare. Programul Oracle īncearca īntotdeauna sa localizeze obiectul īn schema dumneavoastra īnainte de a lua īn considerare spatiile numelor din afara schemei dumneavoastra. Daca obiectul nu se gaseste īn schema dumneavoastra, programul Oracle cauta īn spatiul numelor care contine sinonimele publice. Daca obiectul nu este gasit, Oracle returneaza un mesaj de eroare.
Atunci cānd o aplicatie lanseaza o instructiune SQL, reprezentarea analizata sintactic a instructiunii SQL este īncarcata īn zona SQL partajata din server. Analiza presupune efectuarea urmatoarelor operatii:
Verificarea corectitudinii sintactice si semantice a instructiunilor SQL.
Stabilirea faptului daca procesul care a lansat instructiunea SQL poseda privilegiile necesare pentru executarea ei.
Consultarea dictionarului de date īn vederea analizarii definitiilor tabelului si ale coloanelor.
Instituirea de blocaje asupra obiectelor necesare astfel īncāt definitiile acestora sa nu se modifice īn timpul executiei.
Determinarea planului optim de executie care urmeaza sa fie utilizat īn momentul executarii instructiunii.
Analiza are loc numai daca nu exista nici o alta instructiune SQL identica īn zona SQL partajata. Daca īn aceasta zona exista deja o copie, sistemul Oracle foloseste copia din memorie īn loc sa analizeze copia codului sursa pe care īncercati sa o executati, īn cazul īn care nu exista nici o copie, sistemul Oracle trece la analiza instructiunii. Analiza instructiunii are loc o singura data, indiferent de cāte ori este executata instructiunea. Programul Oracle re-executa instructiunea analizata la fiecare referire ulterioara a instructiunii respective.
Validarea sintactica si semantica efectuata īn timpul analizei detecteaza numai erorile care pot fi gasite īnaintea executiei instructiunii. Exista īnsa erori pe care analiza nu le poate detecta. De exemplu,' erorile legate de conversia datelor nu pot fi depistate īnainte de executia instructiunii.
Procesarea interogarilor este putin diferita de a altor tipuri de instructiuni SQL deoarece interogarile returneaza date sub forma de rezultate daca executia instructiunii s-a īncheiat cu succes. Instructiunile non-interogative returneaza fie "succesul" fie "esecul", īnsa o interogare returneaza linii multiple de date. Aceste date sunt prezentate utilizatorului īn format tabelar.
Interogarile pot deveni interogari implicite īn anumite instructiuni SQL. De exemplu, fiecare dintre instructiunile urmatoare necesita o interogare ca parte a executiei:
update
delete from
create table as
Lista urmatoare specifica fazele executiei unei instructiuni SQL:
Este creat automat un cursor īn asteptarea executiei instructiunii SQL.
Programul Oracle analizeaza instructiunea SQL.
Īn cazul īn care rezultatele unei interogari nu sunt cunoscute, programul Oracle determina caracteristicile (tipul datelor si lungimea) datelor rezultatului.
Programul Oracle defineste domeniile datelor de iesire. Acestea includ locatia, dimensiunea si tipul de date ale variabilelor care urmeaza sa primeasca fiecare dintre valorile preluate.
Programul Oracle efectueaza legarea tuturor variabilelor, cu alte cuvinte, defineste valoarea fiecarei variabile. De exemplu, programul Oracle stabileste valoarea ang_nume īn timpul procesului de legare.
Īn sfārsit, programul Oracle executa instructiunea SQL.
Liniile de date sunt selectate (si ordonate daca este necesar) si fiecare preluare succesiva citeste o noua linie a rezultatului pāna īn momentul citirii tuturor liniilor.
SQL este limbajul nativ al serverului Oracle. Este limbajul folosit pentru comunicarea cu baza de date. ANSI a adoptat limbajul SQL drept standard pentru sistemele de gestiune a bazelor de date relationale.
SQL*Plus este un instrument al serverului Oracle care recunoaste si executa instructiuni SQL. SQL*Plus nu este o extensie sau un superset al limbajului SQL.
SQL*Plus reprezinta una dintre cele mai comune cai de comunicare interactiva cu baza de date Oracle. Unul dintre avantajele SQL*Plus este ca puteti sa editati sau sa salvati comenzi SQL care se gasesc īn tamponul SQL.
Tamponul SQL este o portiune a memoriei gestionate de SQL*Plus care stocheaza o singura comanda SQL la un moment dat. Aceasta comanda SQL ramāne īn tamponul SQL pāna cānd este lansata o noua comanda.
Ori de cāte ori aplicatia dumneavoastra transmite o instructiune serverului Oracle, aplicatia efectueaza un apel de functie. Aceste apeluri de functii necesita procesari suplimentare care conduc la scaderea performantelor serverului. Daca aceste apeluri sunt efectuate īn retea, scaderea performantelor poate fi semnificativa.
Procesarea vectoriala permite aplicatiei dumneavoastra sa execute o singura instructiune SQL de mai multe ori cu un singura apelare a programului Oracle. De exemplu, folosind procesarea vectoriala, aplicatia dumneavoastra poate efectua un singur apel pentru a executa o instructiune SQL de 50 de ori. In lipsa procesarii vectoriale, aplicatia dumneavoastra ar trebui sa lanseze aceasta instructiune SQL de 50 de ori. Prin reducerea numarului de apelari ale programului Oracle, se reduc procesarile suplimentare si cresc performantele serverului.
Instrumentele Oracle cum sunt SQL*Forms, SQL*Plus si SQL*Loader utilizeaza automat procesarea vectoriala.
Programul Oracle detecteaza daca doua sau mai multe aplicatii transmit serverului instructiuni SQL identice. Atunci cānd programul receptioneaza o instructiune SQL duplicat, el nu analizeaza aceasta a doua instructiune SQL.
Programul consulta zona SQL partajata pentru a detecta instructiuni identice. Aceste instructiuni pot proveni de la aplicatii, de la utilizatorii interactivi sau chiar de la instructiuni SQL recursive.
Atunci cānd sunt detectate instructiuni SQL duplicate, prima aparitie a instructiunii respective este utilizata īn comun de toate celelalte procese care au nevoie de ea. Utilizarea zonei SQL partajate reduce gradul de utilizare a memoriei serverului bazei de date, ducānd la īmbunatatirea performantelor.
SQL este singurul limbaj de comunicare cu baza de date Oracle. Acest limbaj poseda propria structura si sintaxa, dupa cum a fost ilustrat īn acest capitol.
Limbajul SQL faciliteaza interactiunea cu baza de date. El va permite sa lucrati cu obiectele de nivel īnalt ale schemei īn locul liniilor individuale. In plus, limbajul SQL limiteaza magistralele prin intermediul carora puteti interactiona cu serverul, īmbunatatind astfel securitatea serverului si reducānd' riscul compromiterii datelor.
Puteti comunica interactiv cu baza de date Oracle prin folosirea limbajului SQL. īn plus, chiar aplicatiile dumneavoastra utilizeaza limbajul SQL pentru a accesa baza de date. Folosirea limbajului SQL este simpla; exista doar cāteva reguli care trebuie respectate la crearea instructiunilor SQL, lucru care sporeste flexibilitatea si puterea acestor instructiuni.
|