Documente Academic
Documente Profesional
Documente Cultură
Figura 1.1 ne arat cum lucreaz SQL. Sistemul informatic din figur conine o
baz de date care stocheaz informaiiile importante ale ntreprinderii. (De exemplu, date
depre produse, vanzri, pli etc.). Cnd trebuie s obinem date din baza de date,
utilizm limbajul SQL pentru a efectua o cerere ctre SGBD. SGBD-ul proceseaz
cererea SQL, obine datele cerute i ni le returneaz. Acest proces de solicitare de date
din baza de date i de obinere (recepionare) a rezultatelor se numete interogare a
bazei de date (database query) de aici i denumirea de Structured Query Language.
Utilizarea denumirii de Structured Query Language este, n prezent, oarecum
improprie.
1. n primul rnd, SQL este mai mult dect un instrument de interogare, dei
acesta a fost scopul su iniial iar obinerea informaiilor stocate n baza de date este, n
continuare, una dintre funciile sale cele mai importante. SQL este utilizat pentru a
controla toate funciile pe care SGBD-ul le pune la dispoziia utilizatorilor, incluznd :
Definirea datelor: SQL permite utilizatorilor s defineasc structura datelor stocate n
baza de date, precum i relaiile dintre aceste date.
Obinerea datelor: SQL utilizatorilor sau programelor de aplicaie s obin i s
utilizeze informaiile stocate n baza de date.
1
Manipularea datelor: SQL permite utilizatorilor sau programelor de aplicaie s
actualizeze baza de date, prin adugarea de noi date, tergerea sau modificarea datelor
existente
Controlul accesului: SQL poate fi utilizat pentru a restriciona dreptul utilizatorilor de
a obine, aduga sau modifica datele, protejnd astfel datele stocate mptriva accesului
neautorizat.
Partajarea datelor: SQL este utilizat pentru a coordona accesul concurent al
utilizatoriilor la date, garantnd astfel c ei nu vor interfera.
Integritatea datelor: SQL permite definirea restriciilor de integritate n baza de date,
protejndu-le astfel mpotriva incorectitudinii datorate actualizrilor inconsistente sau
cderilor sistemului.
SQL este un limbaj cuprinztor pentru controlul i interaciunea cu SGBD-ul.
2. n al doilea rnd, SQL nu este un limbaj de programare complet, ca limbajele
C, C++, Java ntruct nu conine instruciuni de control (IF, FOR etc.). SQL este un
sublimbaj pentru baze de date, cuprinznd aproximativ patruzeci de instruciuni
specializate pentru efectuarea operaiilor asupra bazelor de date. Aceste instruciuni SQL
pot fi integrate n alte limbaje, cum sunt Cobol i C (pentru a extinde funcionalitile
acestora permindu-le accesul la baze de date) sau pot fi trimise explicit ctre SGBD
pentru a fi procesate (ca n cazul limbajelor C, C++, Java).
3. SQL nu este un limbaj structurat, mai ales dac l comparm cu limbajele
puternic structurate, ca C, Pascal sau Java. Instruciunile SQL seamn cu propoziiile din
limba englez i se termin cu caracterul ; .
SQL este un limbaj standard pentru utilizarea bazelor de date relaionale. SQL este att un
limbaj puternic ct i uor de nvat.
SQL nu este un produs de sine stttor ci este parte integrat a unui SGBD ; este
un limbaj i un instrument pentru comunicarea cu SGBD. Figura 1.2 ne arat cteva
dintre componentele unui SGBD tipic i cum SQL acioneaz ca un liant ntre acestea,
pentru a le interconecta.
Motorul de baze date este componeta pricipal a SGBD-ului ("inima" acestuia),
responsabil pentru definirea structurii, stocarea i obinerea datelor din baza de date. El
accept cereri SQL de la alte componente ale SGBD-ului (cum sunt utilitarele pentru
realizarea formularelor, ntocmirea rapoartelor, interogarea interactiv), de la programe
de aplicaie sau chiar de la alte calculatoare.
2
realizarea formularelor sau ntocmirea de rapoarte) utilizeaz aceast tehnic pentru a
accesa baza de date.
3
SQL apare astfel ca un instument util i puternic, care permite accesul persoanelor,
programelor de aplicaie i sistemelor de calcul la datele stocate ntr-o baz de date
relaional.
Instruciuni
Instruciune Descriere
Manipularea Datelor
Definirea Datelor
4
DROP TABLE terge o tabel din baza de date
Controlul Accesului
Controlul Tranzaciilor
SQL Programatic
5
FETCH Extrage o linie din rezultatul unei interogri
CLOSE nchide un cursor
Tipuri de dat
Standardul ANSI/ISO SQL precizeaz care sunt tipurile de dat care pot fi stocate n baza
de date i manipulate de ctre limbajul SQL. Standardul iniial, SQL1, specifica numai un
set minimal de tipuri de dat. Standardul SQL2 extinde lista, incluznd iruri de caractere
de lungime variabil, date calendaristice i timp, iruri de bii i alte tipuri. SGBD-urile
actuale pot prelucra o varietate larg de tipuri de dat i exist diferene considerabile
ntre tipurile de dat suportate de SGBD-uri diferite. Tipurile de dat tipice includ :
ntregi.
Numere zecimale Numere care au parte fracionar dar care trebuie calculat exact.
Numere n virgul mobil Numere reale exprimate n form tiinific i care pot fi
calculate cu aproximaie.
iruri de caractere cu lungime fix.
iruri de caractere cu lungime variabil.
Sume de bani.
Date calendaristice i timp.
Date de tip boolean.
Text lung- iruri de caractere cu lungime mai mare de 32.000 sau 65.000 de caractere.
iruri de bii Utilizate pentru reprezentarea n memorie a imaginilor video, a
secvenelor de cod executabil etc.
Interogri simple
6
Instruciunea SELECT
Instruciunea SELECT extrage date din baza de date i le returneaz utilizatorului sub
form de "rezultat al interogrii ".
Exemplele prezentate n continuare se refer la o baz de date pentru o companie mic de
distribuie. Baza de date, prezentat n Figura 1.4, stocheaz informaii despre :
Clieni - Persoane care cumpr produse ale companiei.
Produse Produsele vndute de companie.
Ageni de vnzri Persoane care vnd produsele companiei.
Birouri de vnzri Birourile n care lucreaz agenii de vnzri.
Comenzi Comenzi fcute de clienii companiei.
7
Figura 1.4 Baza de date pentru compania de distribuie
8
Instruciunea SELECT pentru o interogare simpl ca aceasta, include doar dou clauze
obligatorii. Clauza SELECT precizeaz numele coloanelor cerute; clauza FROM
precizeaz tabelele care conin aceste coloane.
Cmpuri calculate
n plus fa de colanele ale cror valori se extrag direct din baza de date, o interogare
SQL poate include coloane calculate, a cror valoare este determinat pe baza valorilor
stocate n baza de date. Pentru a obine o coloan calculat specificm o expresie SQL n
lista de selecie.
O expresie SQL poate include adunri, scderi, nmuliri i mpriri. n plus, se pot
utiliza parantezele pentru a construi expresii mai complexe. Coloanele referite n expresii
artimetice trebuie s fie de tip artimetic. Dac ncercm s adunm, scdem, nmulim sau
mprim coloane care conin date de tip text, SQL va raporta o eroare.
Pentru a procesa interogarea, SQL parcurge birourile, genernd n rezultat cte o linie
pentru fiecare linie din tabela OFFICES. Primele dou coloane ale rezultatului vin direct
din tabela OFFICES. A treia coloan a rezultatului interogrii este calculat, linie cu linie,
pe baza valorilor liniei curente din tabela OFFICES.
9
Figura 1.5 Procesarea unei interogri simple (fr clauza WHERE)
S se afieze numele, cota i valoarea mrit cu 3% din vnzrie anuale, pentru fiecare
agent de vnzri.
10
Multe dintre produsele SQL furnizeaz operaii aritmetice suplimentare, operaii cu iruri
de caractere i funcii predefinite care pot fi utilizate n expresiile SQL. Acestea pot fi
utilizate n lista de selecie.
Constantele SQL pot fi utilizate, de asemenea, n lista de selecie. Acest lucru poate fi util
n obinerea de rezulatate ale interogrilor care s fie uor de citit i interpretat.
Prima i a treia coloan conin valori din tabela OFFICE. A doua coloan conine,
ntotdeauna, un ir de caractere constant.
11
Uneori este convenabil s afism coninutul tuturor coloanelor unei tabele. n particular,
acest lucru poate fi util n cazul n care dorim s cunoatem repede structura unei tabele i
datele pe care aceasta le conine. Prin convenie, pentru a afia toate coloanele, plasm un
asterisc ( * ) n locul listei de selecie.
Rezultatul interogrii conine toate cele ase coloane ale tabelei OFFICES, n aceeai
ordine de la stnga-la-dreapta ca i n tabela respectiv.
Standardul ANSI/ISO SQL precizeaz c o instruciune SELECT poate avea fie o selecie
de tip "all column" fie o list de selecie, dar nu pe amndou.
Urmtoarea interogare produce acelai rezultat ca SELECT * FROM OFFICES.
Linii duplicate
Dac o interogare include cheia primar a unei tabele n lista de selecie atunci fiecare
linie din rezultat va fi unic (deoarece cheia primar are valori diferite pentru fiecare
linie). Dac cheia primar nu este inclus n rezultatul interogrii atunci pot aprea linii
duplicat. Considerm urmatoarea interogare :
12
Rezultatul interogrii are cinci linii (cte una pentru fiecare birou) dar dou dintre ele
sunt duplicat. De ce? Deoarece Larry Fitch conduce att biroul din Los Angeles ct i pe
cel din Denver iar numrul su de angajat (108) apare n ambele linii din tabela
OFFICES.
Putem elimina linii duplicate din rezultatul interogrii prin adugarea cuvntului rezervat
DISTINCT n instruciunea SELECT, naintea listei de selecie.
n continuare, este prezentat o nou versiune a interogrii anterioare n care sunt
eliminate liniile duplicat din rezultat.
13