CATEGORII DOCUMENTE |
Limbajul SQL
SQL este un instrument pentru organizarea, administrarea si obtinerea informatiilor stocate intr-o baza de date. Numele SQL este o abreviere pentru Structured Query Language. Din motive istorice, SQL se pronunta de obicei "sequel" dar se utilizeaza, de asemenea, si pronuntia 'S.Q.L.' . Asa cum arata si numele, SQL este un limbaj utilizat pentru a interactiona cu baza de date. De fapt, SQL lucreaza numai cu un anumit tip de baze de date, numite baze de date relationale.
Figura 1.1 Utilizarea limbajului SQL pentru accesul la la baza de date
Figura 1.1 ne arata cum lucreaza SQL. Sistemul informatic din figura contine o baza de date care stocheaza informatiiile importante ale intreprinderii. (De exemplu, date depre produse, vanzari, plati etc.). Cand trebuie sa obtinem date din baza de date, utilizam limbajul SQL pentru a efectua o cerere catre DBMS. DBMS (SGBD) proceseaza cererea SQL, obtine datele cerute si ni le returneaza. Acest proces de solicitare de date din baza de date si de obtinere (receptionare) a rezultatelor se numeste interogare a bazei de date (database query) - de aici si denumirea de Structured Query Language.
Utilizarea denumirii de Structured Query Language este, in prezent, oarecum improprie.
1. In primul rand, SQL este mai mult decat un instrument de interogare, desi acesta a fost scopul sau initial iar obtinerea informatiilor stocate in baza de date este, in continuare, una dintre functiile sale cele mai importante. SQL este utilizat pentru a controla toate functiile pe care DBMS (SGBD) le pune la dispozitia utilizatorilor, incluzand :
Definirea datelor. SQL permite utilizatorilor sa defineasca structura datelor stocate in baza de date, precum si relatiile dintre aceste date.
Obtinerea datelor. SQL utilizatorilor sau programelor de aplicatie sa obtina si sa utilizeze informatiile stocate in baza de date.
Manipularea datelor. SQL utilizatorilor sau programelor de aplicatie sa actualizeze baza de date, prin adaugarea de noi date, stergerea sau modificarea datelor existente
Controlul accesului. SQL poate fi utilizat pentru a restrictiona dreptul utilizatorilor de a obtine, adauga sau modifica datele, protejand astfel datele stocate imptriva accesului neautorizat.
Partajarea datelor. SQL este utilizat pentru a coordona accesul concurent al utilizatoriilor la date, garantand astfel ca ei nu vor interfera.
Integritatea datelor. SQL permite definirea restrictiilor de integritate in baza de date, protejandu-le astfel impotriva incorectudinii datorate actualizarilor inconsistente sau caderilor sistemului.
SQL este un limbaj cuprinzator pentru controlul si interactiunea cu DBMS.
2. In al doilea rand, SQL nu este un limbaj de programare complet, ca limbajele C, C++, Java intrucat nu contine instructiuni de control (IF, FOR etc.). SQL este un sublimbaj pentru baze de date, cuprinzand aproximativ patruzeci de instructiuni specializate pentru efectuarea operatiilor asupra bazelor de date. Aceste instructiuni SQL pot fi integrate in alte limbaje, cum sunt Cobol si C (pentru a extinde functionalitatile acestora - permitandu-le accesul la baze de date) sau pot fi trimise explicit catre SGBD pentru a fi procesate (ca in cazul limbajelor C, C++, Java).
3. SQL nu este un limbaj structurat, mai ales daca il comparam cu limbajele puternic structurate, ca C, Pascal sau Java. Instructiunile SQL seamana cu propozitiile din limba engleza si se termina cu caracterul '; '.
SQL este un limbaj standard pentru utilizarea bazelor de date relationale. SQL este atat un limbaj puternic cat si usor de invatat.
Rolul limbajului SQL
SQL nu este un produs de sine statator ci este parte integrata a unui SGBD ; este un limbaj si un instrument pentru comunicarea cu SGBD. Figura 1.2 ne arata cateva dintre componentele unui SGBD (DBMS) tipic si cum SQL actioneaza ca un liant intre acestea, pentru a le interconecta.
Motorul de baze date este componeta pricipala ( inima ) a SGBD-ului, responsabila pentru structura, stocarea si obtinerea datelor din baza de date. El accepta cereri SQL de la alte componente ale SGBD-ului (cum sunt utilitarele pentru realizarea formularelor, intocmirea rapoartelor, interogarea interactiva), de la programe de aplicatie sau chiar de la alte calculatoare.
Asa cum arata figura, SQL indeplineste mai multe roluri :
SQL este un limbaj de interogare interactiv . Utilizatorul scrie comenzi SQL intr-un program SQL interactiv pentru a obtine date si pentru a le afisa pe ecran ; se obtine astfel un instrument usor de folosit pentru interogarea ad-hoc a bazei de date.
SQL este un limbaj de programare pentru baze de date. Programatorii includ comenzi SQL in programele lor pentru a accesa baza de date. Atat programele de aplicatie scrise de catre utilizator cat si programele utilitare (cum sunt cele pentru realizarea formularelor sau intocmirea de rapoarte) utilizeaza aceasta tehnica pentru a accesa baza de date.
Figura 1.2 Componentele unui DBMS tipic
SQL este un limbaj de administrare a bazelor de date. Administratorul bazei de date utilizeaza SQL pentru a defini structura bazei de date si pentru a controla accesul la datele stocate.
SQL este un limbaj client/server. Programele pentru PC-uri (Personal Comuter) utilizeaza SQL pentru a comunica prin retea cu serverul de baze de date care partajeaza datele. Acesta arhitectura client/server a devenit foarte populara pentru aplicatiile de intreprindere.
SQL este un limbaj de accesare a datelor prin intemediul Internetului. Serverele Web care interactioneaza cu datele pe care le stocheaza si serverele de aplicatii Internet utilizeaza 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 utilizeaza SQL pentru a ajuta distribuirea datele pe mai multe calculatoare interconectate. Softul SGBD de pe fiecare sistem de calcul utilizeaza SQL pentru a comunica cu celelalte sisteme, trimitand cereri pentru accesarea datelor.
SQL este un limbaj gateway ('poarta') pentru baze de date. Intr-o retea care reuneste produse SGBD diferite, SQL este adesea utilizat intr-o "poarta" care permite unui tip de SGBD sa comunice cu unul de un alt tip.
SQL apare astfel ca un instument util si puternic, care permite accesul persoanelor, programelor de aplicatie si sistemelor de calcul la datele stocate intr-o baza de date relationala.
Instructiuni
Limbajul SQl contine aproximativ 40 de instructiuni. Fiecare instructiune presupune o actiune specifica asupra bazei de date, cum ar fi crearea unei noi tabele, obtinerea informatiilor sau inserarea de noi date in baza de date. Toate instructiunile SQL au aceeasi forma de baza, ilustrata in Figura 1.3.
Figura 1.3 Structura unei instructiuni SQL
Principalele instructiuni SQL
Instructiune Descriere
Manipularea Datelor
SELECT Extrage (obtine) informati din baza de date
INSERT Adauga linii noi in baza de date
DELETE Sterge linii din baza de date
UPDATE Modifica datele existente in baza de date
Definirea Datelor
CREATE TABLE Adauga o noua tabela la baza de date
DROP TABLE Sterge o tabela din baza de date
ALTER TABLE Modifica structura unei tabele deja existente
CREATE VIEW Adauga o noua vedere la baza de date
DROP VIEW Sterge o vedere din baza de date
CREATE INDEX Creeaza un index pentru o coloana
DROP INDEX Sterge indexul asociat unei coloane
CREATE SCHEMA Adauga o noua schema la baza de date
DROP SCHEMA Sterge o schema din baza de date
CREATE DOMAIN Creeaza un nou domeniu de valori
ALTER DOMAIN Modifica definitia unui domeniu
DROP DOMAIN Sterge un domeniu din baza de date
Controlul Accesului
GRANT Acorda drepturi de acces utilizatorilor
REVOKE Sterge drepturile de acces ale utilizatorilor
Controlul Tranzactiilor
COMMIT Incheie tranzactia curenta
ROLLBACK Se renunta la tranzactia curenta si se revine la starea sistemului dinainte de inceperea tranzactiei
SET TRANSACTION Defineste caracteristicile accesului la date pentru tranzactia curenta
SQL Programatic
DECLARE Defineste un cursor pentru o interogare
EXPLAIN Descrie planul de acces la date pentru o interogare
OPEN Deschide un cursor pentru a obtine datele unei interogari
FETCH Extrage o linie din rezultatul unei interogari
CLOSE Inchide un cursor
Fiecare instructiune SQL incepe cu un verb, un cuvant rezervat care descrie ce face instructiunea. . CREATE, INSERT, DELETE, si COMMIT sunt verbele obisnuite. Instructiunea continua cu una sau mai multe clauze. O clauza poate specifica datele asupra carora opereaza instructiunea sau poate furniza mai multe detalii asupra a ceea ce face instructiunea. Fiecare clauza incepe cu un cuvant rezervat, cum sunt WHERE, FROM, INTO si HAVING. Unele clauze sunt optionale in timp ce altele sunt obligatorii. Structura si continutul variaza de la o clauza la alta. Multe dintre clauze contin nume de tabele sau coloane ; unele dintre ele pot contine cuvinte cheie suplimentare, constante sau expresii.
Tipuri de data
Standardul ANSI/ISO SQL precizeaza care sunt tipurile de data care pot fi stocate in baza de date si manipulate de catre limbajul SQL. Standardul initial, SQL1, specifica numai un set minimal de tipuri de data. Standardul SQL2 extinde lista, incluzand siruri de caractere de lungime variabila, date calendaristice si timp, siruri de biti si alte tipuri. SGBD-urile actuale pot prelucra o varietate larga de tipuri de data si exista diferente considerabile intre tipurile de data suportate de SGBD-uri diferite. Tipurile de data tipice includ :
Intregi.
Numere zecimale - Numere care au parte fractionara dar care trebuie calculata exact.
Numere in virgula mobila - Numere reale exprimate in forma stiintifica si care pot fi calculate cu aproximatie.
Siruri de caractere cu lungime fixa.
Siruri de caractere cu lungime variabila.
Sume de bani.
Date calendaristice si timp.
Date de tip boolean.
Text lung- Siruri de caractere cu lungime mai mare de 32.000 sau 65.000 de caractere.
Siruri de biti - Utilizate pentru reprezentarea in memorie a imaginilor video, a secventelor de cod executabil etc.
Interogari simple
Interogarile reprezinta 'inima' limbajului SQL. Instructiunea SELECT, care este utilizata pentru a exprima interogarile, este cea mai puternica si complexa dintre instructiunile SQL. Cu toate ca instructiunea SELECT ne ofera multiple optiuni, vom pleca de la interogari simple si apoi von construi interogari din ce in ce mai complexe. Acest paragraf trateaza interogari SQL care extrag date dintr-o singura tabela.
Instructiunea SELECT
Instructiunea SELECT extrage date din baza de date si le returneaza utilizatorului sub forma de 'rezultat al interogarii '.
Exemplele prezentate in continuare se refera la o baza de date pentru o companie mica de distributie. Baza de date, prezentata in Figura 1.4, stocheaza informatii despre :
Clienti - Persoane care cumpara produse ale companiei.
Comenzi - Comenzi facute de clientii companiei.
Agenti de vanzari - Persoane care vand produsele companiei.
Birouri de vanzari - Birourile in care lucreaza agentii de vanzari.
Figura 1.4 Baza de date pentru compania de distributie
Sa se afiseze birourile de vanzari impreuna cu vanzarile curente.
Instructiunea SELECT pentru o interogare simpla ca aceasta, include doar doua clauze obligatorii. Clauza SELECT pecizeaza numele coloanelor cerute; clauza FROM precizeaza tabelele care contin aceste coloane.
Campuri calculate
In plus fata de colanele ale caror valori se extrag direct din baza de date, o interogare SQL poate include coloane calculate, a caror valoare este determinata pe baza valorilor stocate in baza de date. Pentru a obtine o coloana calculata specificam o expresie QSL in lista de selectie.
O expresie SQL poate include adunari, scaderi, inmultiri si impartiri. In plus, se pot utilize parantezele pentru a construi expresii mai complexe. Coloanele referite in expresii artimetice trebuie sa fie de tip artimetic. Daca incercam sa adunam, scadem, inmulti sau imparti coloane care contin date de tip text, SQL va raporta o eroare.
Sa se afiseze orasul, regiunea si cantitatea aflata peste/sub planul de vanzari pentru fiecare birou.
Pentru a procesa interogarea, SQL parcurge birourile, generand in rezultat cate o linie pentru fiecare linie din tabela OFFICES. Primele doua coloane ale rezultatului vin direct din tabela OFFICES. A treia coloana a rezultatului interogarii este calculata, linie cu linie, pe baza valorilor liniei curente din tabela OFFICES.
Figura 1.5 Procesarea unei interogari simple (fara clauza WHERE)
Conceptual, SQL proceseaza interogarea parcurgand tabela specificata in clauza FORM, linie cu linie, asa cum se arata in Figura 1.5. Pentru fiecare linie, SQL ia valorile coloanelor cerute in lista de selectie si produce o singura linie in rezultatul interogarii. Astfel, pentru fiecare linie din tabela exista o linie in rezultatul interogarii.
Sa se afiseze valoarea totala pentru fiecare produs.
Sa se afiseze numele, cota si valoarea marita cu 3% din vanzarie anuale, pentru fiecare agent de vanzari.
Multe dintre produsele SQL furnizeaza operatii aritmetice suplimentare, operatii cu siruri de caractere si functii predefinite care pot fi utilizate in expresiile SQL. Acestea pot fi utilizate in lista de selectie.
Sa se afiseze numele, luna si anul nasterii pentru fiecare agent de vanzari.
Constantele SQL pot fi utilizate, de asemenea, in lista de selectie. Acest lucru poate fi util in obtinerea de rezulatate ale interogarilor care sa fie usor de citit si interpretat
Sa se afiseze vanzarile, pentru fiecare oras.
Prima si a treia coloana contin valori din tabela OFFICE. A doua coloana contine, intotdeauna, un sir de caractere constant.
Selectarea tuturor coloanelor
Uneori este convenabil sa afisam continutul tuturor coloanelor unei tabele. In particular, acest lucru poate fi util in cazul in care dorim sa cunoastem repede structura unei tabele si datele pe care aceasta le contine. Prin conventie, pentru a afisa toate coloanele, plasam un asterisc ( * ) in locul listei de selectie.
Sa se afiseze toate informatiile din tabela OFFICES.
Rezultatul inerogarii contine toate cele sase coloane ale tabele OFFICES, in aceeasi ordine de la stanga-la-dreapta ca si in tabela respectiva.
Standardul ANSI/ISO SQL precizeaza ca o instructiune SELECT poate avea fie o selectie de tip 'all column' fie o lista de selectie, dar nu pe amandoua.
Urmatoarea interogare produce acelasi rezultat ca SELECT * FROM OFFICES.
Linii duplicate
Daca o interogare include cheia primara a unei tabele in lista de selectie atunci fiecare linie din rezultat va fi unica (deoarece cheia primara are valori diferite pentru fiecare linie). Daca cheia primara nu este inclusa in rezultatul interogarii atunci pot aparea linii duplicat. Consideram urmatoarea interogare :
Sa se afiseze numarul angajatului (MGR) pentru toti manageii birourilor de vanzari.
Rezultatul interogarii are cinci linii (cate una pentru fiecare birou) dar doua dintre ele sunt duplicat. De ce? Deoarece Larry Fitch conduce atat biroul din Los Angeles cat si pe cel din Denver iar numarul sau de angajat (108) apare in ambele linii din tabela OFFICE.
Putem elimina linii duplicate din rezultatul interogarii prin adaugarea cuvantului rezervat DISTINCT in instructiunea SELECT, inaintea listei de selectie.
In continuare, este prezentata o noua versiune a interogarii anterioare in care sunt eliminate liniile duplicat din rezultat.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2601
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved