Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Limbajul SQL

sql



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2451
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved