Sunteți pe pagina 1din 13

CAP.

V Limbajul de baze de date SQL

SQL este un instrument pentru organizarea, administrarea i obinerea


informaiilor stocate ntr-o baz de date. Numele SQL este o abreviere pentru Structured
Query Language. Din motive istorice, SQL se pronun de obicei sequel dar se
utilizeaz, de asemenea, i pronunia "S.Q.L." . Aa cum arat i numele, SQL este un
limbaj utilizat pentru a interaciona cu baza de date. De fapt, SQL lucreaz numai cu un
anumit tip de baze de date, numite baze de date relaionale.

Figura 1.1 Utilizarea limbajului SQL pentru accesul la baza de date

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.

Rolul limbajului SQL

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.

Aa cum arat figura, SQL ndeplinete mai multe roluri :


SQL este un limbaj de interogare interactiv . Utilizatorul scrie comenzi SQL ntr-un
program SQL interactiv pentru a obine date i pentru a le afia pe ecran ; se obine astfel
un instrument uor de folosit pentru interogarea ad-hoc a bazei de date.
SQL este un limbaj de programare pentru baze de date. Programatorii includ
comenzi SQL n programele lor pentru a accesa baza de date. Att programele de
aplicaie scrise de ctre utilizator ct i programele utilitare (cum sunt cele pentru

2
realizarea formularelor sau ntocmirea de rapoarte) utilizeaz aceast tehnic pentru a
accesa baza de date.

Figura 1.2 Componentele unui SGBD tipic

SQL este un limbaj de administrare a bazelor de date. Administratorul bazei de date


utilizeaz SQL pentru a defini structura bazei de date i pentru a controla accesul la
datele stocate.
SQL este un limbaj client/server. Programele pentru PC-uri (Personal Comuter)
utilizeaz SQL pentru a comunica prin reea cu serverul de baze de date care partajeaz
datele. Acest arhitectur client/server a devenit foarte popular pentru aplicaiile de
ntreprindere.
SQL este un limbaj de accesare a datelor prin intemediul Internetului. Serverele
Web care interacioneaz cu datele pe care le stocheaz i serverele de aplicaii Internet
utilizeaz SQL ca un limbaj standard pentru accesarea datelor.
SQL este un limbaj pentru baze de date distribuite. Sistemele de gestiune a bazelor
de date distribuite utilizeaz SQL pentru a ajuta distribuirea datelor pe mai multe
calculatoare interconectate. Softul SGBD de pe fiecare sistem de calcul utilizeaz SQL
pentru a comunica cu celelalte sisteme, trimind cereri pentru accesarea datelor.
SQL este un limbaj gateway ("poart") pentru baze de date. ntr-o reea care reunete
produse SGBD diferite, SQL este adesea utilizat ntr-o poart care permite unui tip de
SGBD s comunice cu unul de un alt tip.

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

Limbajul SQL conine aproximativ 40 de instruciuni. Fiecare instruciune presupune o


aciune specific asupra bazei de date, cum ar fi crearea unei noi tabele, obinerea
informaiilor sau inserarea de noi date n baza de date. Toate instruciunile SQL au
aceeai form de baz, ilustrat n Figura 1.3.

Figura 1.3 Structura unei instruciuni SQL

Principalele instruciuni SQL

Instruciune Descriere

Manipularea Datelor

SELECT Extrage (obine) informai din baza de date

INSERT Adaug linii noi n baza de date

DELETE terge linii din baza de date

UPDATE Modific datele existente n baza de date

Definirea Datelor

CREATE TABLE Adaug o nou tabel la baza de date

4
DROP TABLE terge o tabel din baza de date

ALTER TABLE Modific structura unei tabele deja existente

CREATE VIEW Adaug o nou vedere la baza de date

DROP VIEW terge o vedere din baza de date

CREATE INDEX Creeaz un index pentru o coloan

DROP INDEX terge indexul asociat unei coloane

CREATE SCHEMA Adaug o nou schem la baza de date

DROP SCHEMA terge o schem din baza de date

CREATE DOMAIN Creeaz un nou domeniu de valori

ALTER DOMAIN Modific definiia unui domeniu

DROP DOMAIN terge un domeniu din baza de date

Controlul Accesului

GRANT Acord drepturi de acces utilizatorilor

REVOKE terge drepturile de acces ale utilizatorilor

Controlul Tranzaciilor

COMMIT ncheie tranzacia curent

ROLLBACK Se renun la tranzacia curent i se revine la starea


sistemului dinainte de nceperea tranzaciei

SET TRANSACTION Definete caracteristicile accesului la date pentru


tranzacia curent

SQL Programatic

DECLARE Definete un cursor pentru o interogare

EXPLAIN Descrie planul de acces la date pentru o interogare

OPEN Deschide un cursor pentru a obine datele unei interogri

5
FETCH Extrage o linie din rezultatul unei interogri
CLOSE nchide un cursor

Fiecare instruciune SQL ncepe cu un verb, un cuvnt rezervat care descrie ce


face instruciunea. SELECT, CREATE, INSERT, DELETE, i COMMIT sunt verbele
obinuite. Instruciunea continu cu una sau mai multe clauze. O clauz poate specifica
datele asupra crora opereaz instruciunea sau poate furniza mai multe detalii asupra a
ceea ce face instruciunea. Fiecare clauz ncepe cu un cuvnt rezervat, cum sunt
WHERE, FROM, INTO i HAVING. Unele clauze sunt opionale n timp ce altele sunt
obligatorii. Structura i coninutul variaz de la o clauz la alta. Multe dintre clauze
conin nume de tabele sau coloane; unele dintre ele pot conine cuvinte cheie
suplimentare, constante sau expresii.

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

Interogrile reprezint "inima" limbajului SQL. Instruciunea SELECT, utilizat


pentru a exprima interogrile, este cea mai puternic i complex dintre instruciunile
SQL. Cu toate c instruciunea SELECT ne ofer multiple opiuni, vom pleca de la
interogri simple i apoi vom construi interogri din ce n ce mai complexe. Acest
paragraf trateaz interogri SQL care extrag date dintr-o singur tabel.

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

S se afieze birourile de vnzri mpreun cu vnzrile curente.

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.

S se afieze oraul, regiunea i cantitatea aflat peste/sub planul de vnzri pentru


fiecare birou.

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)

Conceptual, SQL proceseaz interogarea parcurgnd tabela specifica n clauza FORM,


linie cu linie, aa cum se arat n Figura 1.5. Pentru fiecare linie, SQL ia valorile
coloanelor cerute n lista de selecie i produce o singur linie n rezultatul interogrii.
Astfel, pentru fiecare linie din tabel exist o linie n rezultatul interogrii.

S se afieze valoarea total pentru fiecare produs.

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.

S se afieze numele, luna i anul naterii pentru fiecare agent de vnzri.

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.

S se afieze vnzrile, pentru fiecare ora.

Prima i a treia coloan conin valori din tabela OFFICE. A doua coloan conine,
ntotdeauna, un ir de caractere constant.

Selectarea tuturor coloanelor

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.

S se afieze toate informaiile din tabela OFFICES.

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 :

S se afieze numrul angajatului (MGR) pentru toi managerii birourilor de vnzri.

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

S-ar putea să vă placă și