LIMBAJUL SQL 1. GENERALITĂŢI

Similar documents
VISUAL FOX PRO VIDEOFORMATE ŞI RAPOARTE. Se deschide proiectul Documents->Forms->Form Wizard->One-to-many Form Wizard

GRAFURI NEORIENTATE. 1. Notiunea de graf neorientat

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

PREZENTARE INTERFAŢĂ MICROSOFT EXCEL 2007

Exerciţii Capitolul 4

Parcurgerea arborilor binari şi aplicaţii

Mail Moldtelecom. Microsoft Outlook Google Android Thunderbird Microsoft Outlook

CAPITOLUL 2. FACILITATILE SI ARHITECTURA SISTEMULUI ORACLE

Click pe More options sub simbolul telefon (în centru spre stânga) dacă sistemul nu a fost deja configurat.

Ghidul administratorului de sistem

Ghid de instalare pentru program NPD RO

Pasul 2. Desaturaţi imaginea. image>adjustments>desaturate sau Ctrl+Shift+I

6. MPEG2. Prezentare. Cerinţe principale:

SUBIECTE CONCURS ADMITERE TEST GRILĂ DE VERIFICARE A CUNOŞTINŢELOR FILIERA DIRECTĂ VARIANTA 1

2 MEDIUL BAZELOR DE DATE

Teoreme de Analiză Matematică - II (teorema Borel - Lebesgue) 1

Alexandrina-Corina Andrei. Everyday English. Elementary. comunicare.ro

riptografie şi Securitate

TTX260 investiţie cu cost redus, performanţă bună

9.1. Structura unităţii de I/E. În Figura 9.1 se prezintă structura unui sistem de calcul împreună cu unitatea

b) Sa se afiseze numele salariatilor al caror salariu este mai mare decat salariul lui Kevin Mourgos.

Aplicatii ale programarii grafice in experimentele de FIZICĂ

Split Screen Specifications

Application form for the 2015/2016 auditions for THE EUROPEAN UNION YOUTH ORCHESTRA (EUYO)

CAPITOLUL 2. PROIECTAREA MODELULUI RELAŢIONAL AL DATELOR PRIN NORMALIZARE

Press review. Monitorizare presa. Programul de responsabilitate sociala. Lumea ta? Curata! TIMISOARA Page1

Sistemul de operare Windows (95, 98) Componenta My Computer

Modalităţi de redare a conţinutului 3D prin intermediul unui proiector BenQ:

Reprezentări grafice

Un tip de data este caracterizat de: o O mulţime de date (valori є domeniului) o O mulţime de operaţii o Un identificator.

DIRECTIVA HABITATE Prezentare generală. Directiva 92/43 a CE din 21 Mai 1992

Anexa 2. Instrumente informatice pentru statistică

Laboratorul 1. MS Word

4 Caracteristici numerice ale variabilelor aleatoare: media şi dispersia

2. PORŢI LOGICE ( )

1. Funcţii speciale. 1.1 Introducere

10 Estimarea parametrilor: intervale de încredere

9. MENIURI si OBIECTE MULTIMEDIA

Geographical data management in GIS systems

Split Screen Specifications

Programarea calculatoarelor CURS 1

PROBLEME DE TEORIA NUMERELOR LA CONCURSURI ŞI OLIMPIADE

Consideraţii statistice Software statistic

LESSON FOURTEEN

EPI INFO. - Cross-tabulation şi testul 2 -

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Universitatea din Bucureşti. Facultatea de Matematică şi Informatică. Şcoala Doctorală de Matematică. Teză de Doctorat

ARHITECTURA SISTEMELOR DE CALCUL ŞI SISTEME DE OPERARE. LUCRĂRILE DE LABORATOR Nr. 12, 13 şi 14

GREUTATE INALTIME IMC TAS TAD GLICEMIE

Algoritmică şi programare Laborator 3

O VARIANTĂ DISCRETĂ A TEOREMEI VALORII INTERMEDIARE

Curs 3 Word 2007 Cuprins

Paradoxuri matematice 1

Rigla şi compasul. Gabriel POPA 1

Capitolul V MODELAREA SISTEMELOR CU VENSIM

Defuzzificarea într-un sistem cu logică fuzzy. Aplicaţie: maşina de spălat cu reguli fuzzy. A. Obiective. B. Concepte teoretice ilustrate

Capitolul 1. Noţiuni de bază

22METS. 2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

BAZE DE DATE SI PRELUCRARI STATISTICE

ARHITECTURA CALCULATOARELOR 2003/2004 CURSUL 10

O abordare orientată pe componente generice pentru crearea dinamică a interfeţelor cu utilizatorul

Poo Laboratoare 1. Laborator Programare cu JTable & JTree JTable JTree... 2

ZOOLOGY AND IDIOMATIC EXPRESSIONS

OPTIMIZAREA GRADULUI DE ÎNCĂRCARE AL UTILAJELOR DE FABRICAŢIE OPTIMIZING THE MANUFACTURING EQUIPMENTS LOAD FACTOR

Laboratorul 1. Primii paşi în Visual Basic.NET

CUPRINS CAP. 1. PREZENTARE GENERALĂ

Biraportul în geometria triunghiului 1

Procedura Controlul documentelor

Executive Information Systems

Lucrul în reţea Serviciile de acces la distanţă (RAS): Conexiunile PPP

12.Paralelă între stocarea datelor pe suporturi magnetice şi optice şi transmisia serială

PREVIZIUNI ÎN ECONOMIE BAZATE PE MODELELE ECONOMETRICE UTILIZÂND EViews 5. ECONOMIC FORECASTS BASED ON ECONOMETRIC MODELS USING EViews 5

Biostatistică Medicină Generală. Lucrarea de laborator Nr Intervale de încredere. Scop: la sfârşitul laboratorului veţi şti:

3. CPU 3.1. Setul de regiştri. Copyright Paul GASNER

1. Ecuaţii diferenţiale de ordinul întâi

Programul de instruire ADM1 Reţele de comunicaţii

Operaţiile de sistem de bază

Contractul privind Relaţia Comercială cu Clientul pentru Produse

Microsoft Excel partea 1

Anexa nr.1. contul 184 Active financiare depreciate la recunoașterea inițială. 1/81

OLIMPIADA DE MATEMATIC ¼A ETAPA JUDEŢEAN ¼A 3 martie 2007

Conferinţa Naţională de Învăţământ Virtual, ediţia a IV-a, Graph Magics. Dumitru Ciubatîi Universitatea din Bucureşti,

SORIN CERIN STAREA DE CONCEPŢIUNE ÎN COAXIOLOGIA FENOMENOLOGICĂ

Asocierea variabilelor discrete

Referat II. Arhitectura unei interfeţe avansate pentru un Sistem Suport pentru Decizii. Coordonator ştiinţific: Acad. prof. dr. ing. Florin G.

PROCESOARE NUMERICE DE SEMNAL DIGITAL SIGNAL PROCESSORS

Geometrie euclidian¼a în plan şi în spaţiu. Petru Sorin Botezat

CE LIMBAJ DE PROGRAMARE SĂ ÎNVĂŢ? PHP vs. C# vs. Java vs. JavaScript

Ministerul Educaţiei Naţionale Centrul Naţional de Evaluare şi Examinare

Sisteme de operare şi programe specifice. Material de predare partea a I-a. Material de învăţare

MANUAL DE UTILIZARE. 2. Nomenclator Curs Produse Clienti Introducere Facturi


UNIVERSITATEA TEHNICĂ GHEORGHE ASACHI DIN IAŞI Comisia pentru Evaluarea şi Asigurarea Calităţii (CEAC)

SOFTWARE DE BIROTICĂ

Cu ce se confruntă cancerul de stomac? Să citim despre chirurgia minim invazivă da Vinci

STANDARDIZAREA PROCESELOR ŞI A ACTIVITǍŢILOR ÎN ORGANIZAŢIILE INDUSTRIALE PRIN IMPLEMENTAREA SISTEMULUI DE FABRICAŢIE LEAN

Obiectivele acestui modul sunt:

Clasele de asigurare. Legea 237/2015 Anexa nr. 1

Maria plays basketball. We live in Australia.

ice~felix' COMPUTER S.A.

Transcription:

LIMBAJUL SQL 1. GENERALITĂŢI Limbajul structurat de interogare SQL (Structured Query Language) este limbajul standard pentru bazele de date (BD) relaţionale definit de ANSI în 1986 şi adoptat ulterior ca standard internaţional de către ISO (1992). Peste o sută de sisteme de gestiune a bazelor de date (SGBD) acceptă recunosc limbajul SQL. Ca orice limbaj de baze de date, SQL permite: Crearea bazei de date relaţionale şi structurarea relaţiilor prin componenta sa de definire a datelor (DDL) Efectuarea operaţiilor elementare asupra BD (inserare, ştergere, modificare a datelor) şi a interogărilor asupra BD, prin componenta de manipulare a datelor (DML) conţine comenzi de definire şi regăsire a datelor (CREATE TABLE, SELECT TABLE, DELETE, INSERT etc.) dar nu conţine instrucţiuni pentru controlul fluxului datelor (IF... THEN... ELSE, GO TO, DO etc.). SQL este un limbaj neprocedural cu format liber deoarece precizează ce rezultate sunt necesare şi nu procedura prin care se obţin acestea. Prima implementare comercială a unui SGBD relaţional bazat pe SQL a fost realizată de corporaţia ORACLE. Ulterior au apărut sute de produse de BD bazate pe SQL şi dialecte ale acestuia. SQL ca standard pentru BD a fost inclus ca şi componentă în arhitecturile de aplicaţii de BD dezvoltate de marile firme producătoare de soft, cum este IBM, şi adopta pentru prelucrarea informaţiilor în sistemul federal al SUA. Grupul de acces SQL lucrează pentru realizarea interoperabilităţii dintre limbajul SQL şi alte SGBD disparate. Îmbunătăţirea SQL se face prin definirea de noi componente precum standardul de acces la BD de la distanţă (RDA Remote Data Access) şi sistemul de dicţionare de resurse informaţionale (IRDS Information Resource Dictionarz System). Alte îmbunătăţiri includ suportul pentru BD distribuite în reţea, programarea orientată-obiect şi acceptarea extensiilor definite de către utilizator. 1

2. REGULI SQL foloseşte termenii de tabele, coloane şi rânduri în locul celor de relaţii, atribute şi înregistrări. O instrucţiune SQL include cuvinte rezervate şi cuvinte definite de utilizator pentru a denumi tabelele, atributele, indexurile etc., nefiind sensibilă la formatul literei (majusculă sau literă mică). Totuşi SQL devine sensibil la formatul literelor (case sensitive) în cazul înregistrărilor din BD, adică două înregistrări CLIENT şi Client sunt tratate distinct. Regulile sau convenţiile adoptate în mod universal pentru scrierea instrucţiunilor SQL pot fi sintetizate astfel: a. Fiecare clauză a unei instrucţiuni trebuie scrisă pe o linie nouă, cu separare prin virgulă. b. Dacă o clauză are mai multe părţi, fiecare dintre acestea este scrisă pe o linie nouă şi indentată pentru a indica relaţia cu linia superioară. c. Majusculele sunt utilizate pentru cuvintele rezervate (SELECT, INSERT, DELETE, GRANT etc.). d. Literele mici sunt folosite pentru termenii proprii utilizatorului (denumiri de tabele, coloane, câmpuri etc.). e. Bara verticală semnifică operaţia logică SAU adică alegerea dintre două sau mai multe opţiuni. f. Acoladele indică un element necesar. g. Parantezele pătrate indică un element opţional. h. Punctele de suspensie (...) specifică o repetare opţională a unui articol din BD, de zero sau de mai multe ori. i. În practică, se creează mai întâi structura BD prin definirea tabelelor şi stabilirea formatului datelor, precum şi definirea drepturilor de acces ale utilizatorilor, după care se trece la popularea BD. j. Fiecare instrucţiune se încheie prin caracterul punct şi virgulă. k. Valorile, în general, sunt scrise între paranteze rotunde, separate prin virgule. l. Valorile literale sunt încadrate de apostroafe. În instrucţiunile SQL apar diverşi identificatori care respectă următoarele constrângeri: a. Lucrează cu setul de caractere prestabilit de ISO: litere mari (A Z), litere mici (a z), cifre (0 9) şi liniuţa de subliniere (_ underscore). b. Să nu depăşească lungimea maximă impusă (tipic, 128 de caractere) 2

c. Să înceapă cu o literă şi nu cu alt caracter (cifră, alt semn etc.) d. Să nu conţină spaţii libere. 3. TIPURI DE DATE SQL ISO defineşte cinci tipuri de date scalare: I. caracter CHAR, VARCHAR [lungime] II. bit BIT, BIT VARYING [lungime] III. numeric: exact: NUMERIC [precizie [, scala]] DECIMAL sau DEC [precizie [, scala]] INTEGER sau INT SMALL INTEGER sau SMALLINT aproximativ: FLOAT [precizia] REAL DOUBLE PRECISSION IV. data şi ora DATE TIME [precizie_oră] [WITH TIME ZONE] TIMESTAMP [precizie_oră] [WITH TIME ZONE] V. interval INTERVAL{{câmp_de_start TO câmp_final} câmp_data_ora } Parametrii unui tip de date se scriu între paranteze rotunde după cuvântul care îl defineşte. Precizia se exprimă ca număr de cifre din mantisă (partea întreagă). Scala se exprimă ca număr de cifre din exponent (număr de zecimale). Numărul de cifre din câmpul principal este separat prin virgulă de numărul de zecimale prin care se exprimă o valoare. Se poate impune şi condiţia ca obligatoriu un câmp să fie completat, folosind termenul-cheie NOT NULL. Este cazul cheii primare dintr-o relaţie sau a unei chei alternative. Câmpurile din instrucţiunea INTERVAL sunt de forma: YEAR MONTH DAY HOUR MINUTE [precizie] 3

Exemplu: Instrucţiunea SQL: INTERVAL YEAR(1) TO MONTH semnifică un interval de la 0 ani şi 0 luni (timpul prezent) la 9 ani şi 11 luni. Numărul de ani poate fi scris în acest caz cu o singură cifră. 4. INSTRUCŢIUNI SQL DE DEFINIRE A BAZEI DE DATE Instruţiunile de creare, modificare şi distrugere a structurilor din BD sunt următoarele: CREATE DATABASE DROP DATABASE CREATE TABLE ALTER TABLE DROP TABLE CREATE DOMAIN ALTER DOMAIN DROP DOMAIN CREATE SCHEMA DROP SHEMA CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX Formatul de bază dat de ISO al instrucţiunii de creare a unui tabel în BD este următorul: CREATE TABLE nume_tabel {(nume_coloană tip_de_date [NOT NULL] [UNIQUE] [DEFAULT opţiune_prestabilită] [CHECK (condiţie)] [,...] [PRIMARY KEY (listă_de_coloane),] {[UNIQUE (listă_de_coloane),] [,...]} {[FOREIGN KEY (listă_de_coloane_chei_străine) REFERENCES nume_tabel_părinte [(listă_de_coloane_chei_candidat)], [MATCH { PARTIAL FULL} [ON UPDATE acţiune_referenţială] [ON DELETE acţiune_referenţială]} {[CHECK (condiţie)] [, ]})} EXEMPLU: CREATE TABLE agenti( cod_agent DEC(3,0) NOT NULL UNIQUE, nume VARCHAR(20) NOT NULL, 4

prenume VARCHAR(20) NOT NULL, cnp DEC(13,0) NOT NULL, filiala VARCHAR(10), salariu DEC(5,2), vechime SMALLINT DEFAULT 0 PRIMARY KEY (cod_agent)); CREATE TABLE proprietati( cod_proprietate DEC(5,0) NOT NULL UNIQUE, zona VARCHAR(20) NOT NULL, tip VARCHAR(10) NOT NULL, pret INT, cod_agent DEC(3,0), cod_proprietar DEC(6,0) NOT NULL, PRIMARY KEY (cod_proprietate), FOREIGN KEY (cod_agent) REFERENCES agenti ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (cod_proprietar) REFERENCES proprietari); Observaţii: 1. Tipul datelor poate fi declarat separat sub forma unui domeniu de valori şi utilizat pentru mai multe variabile de acelaşi tip: CREATE DOMAIN nume_domeniu AS tip_de_date [DEFAULT opţiune_prestabilită] [CHECK (condiţie)]; La crearea tabelului se specifică în locul tipului datelor, numele domeniului scris cu majuscule. 2. Instrucţiunea DROP elimină articole din BD şi poate avea două opţiuni: DROP ARTICOL nume_articol [RESTRICT CASCADE] Opţiunea RESTRICT nu va permite ştergerea articolului dacă de acesta depind alte date din BD. Se evită astfel pierderea de date. Opţiunea CASCADE este una extremă care determină ştergerea acelui articol din BD precum şi a tuturor datelor care depindeau de acesta. Este utilă pentru actualizarea structurii BD după o perioadă mai lungă de timp sau atunci când se reproiectează aceasta. 5

3. Indexul este o structură care oferă acces accelerat la înregistrările din BD pe baza valorilor dintr-una sau mai multe coloane ale unui tabel, îmbunătăţind astfel performanţele de interogare: CREATE [UNIQUE] INDEX nume_index ON nume_tabel (coloana [ASC DESC] [, ]) Utilizarea indexurilor trebuie făcută cu oarecare rezerve întrucât solicită mai multe resurse din partea serverului de BD. 4. Pentru modificarea structurii de coloane a unui tabel deja creat, se foloseşte instrucţiunea: ALTER TABLE nume_tabel [ADD [COLUMN] nume_coloană tip_de_date [NOT NULL] [UNIQUE] [DEFAULT opţiune_prestabilită] [CHECK (condiţie)] [DROP [COLUMN] nume_coloană [RESTRICT CASCADE]] [ADD [CONSTRAINT [nume_constrângere]] definiţie_constrângere] [DROP CONSTRAINT nume_constrângere [RESTRICT CASCADE]] [ALTER [COLUMN] SET DEFAULT opţiune_ prestabilită] [ALTER [COLUMN] DROP DEFAULT] 5. INSTRUCŢIUNI SQL DE MANIPULARE A BAZEI DE DATE Instrucţiunile de manipulare a datelor din BD sunt următoarele: SELECT pentru interogarea BD; INSERT pentru introducere de noi înregistrări în BD; UPDATE pentru reactualizarea BD; DELETE pentru ştergerea de înregistrări din BD. Fiecare dintre aceste instrucţiuni conţine după cuvântul-cheie de definiţie diverse clauze cu multiple opţiuni. De aceea le vom studia pe fiecare în parte. 5.1 INSTRUCŢIUNEA SELECT Instrucţiunea SELECT de interogare a BD are forma următoare: SELECT [DISTINCT ALL] {* expresie_coloana [AS nume_nou]] [, ]} FROM nume_tabel_sau_vedere [alias] [, ] 6

[WHERE condiţie] [GROUP BY lista_de_coloane] [HAVING condiţie] [ORDER BY lista_de coloane]; Exemplu: SELECT * FROM agenti WHERE filiala = centru; Rezultatul acestei comenzi SQL va fi afişarea tuturor înregistrărilor din tabelul agenti corespunzătoare filialei centru. Cuvântul-cheie DISTINCT elimină în cadrul interogării eventualele dubluri din BD. În expresiile incluse în comenzile SQL se folosesc operatori scalari şi funcţii specifice: operatorii aritmetici: +,-,*,/ funcţia de lungime: BIT_LENGTH, OCTET_LENGTH, CHAR_LENGTH operatorul de transformare a tipului de date: CAST(tip1 AS tip2) concatenarea de şiruri: identificarea utilizatorului curent: USER identificarea sesiunii: SESSION_USER identificarea sistemului: SYSTEM_USER scrierea cu litere mici: LOWER scrierea cu majuscule: UPPER data sau timp curent: CURRENT_TIME,CURRENT_DATE, CURRENT_TIMESTAMP. mai acceptă cinci funcţii de grup care se aplică pe o coloană întreagă şi generează o singură valoare: COUNT numărare SUM sumare AVG calculul valorii medii MIN deducerea valorii minime MAX deducerea valorii maxime. Opţiunea GROUP BY permite gruparea înregistrărilor cu aceleaşi valori pe coloanele precizate în lista de coloane şi aplicarea funcţiilor de grup pe aceste grupuri. O instrucţiune SELECT integrată în altă interoare SELECT într-o clauză WHERE sau HAVING se numeşte subinterogare. 7

Pentru a selecta date din mai multe tabele, în cadrul clauzelor WHERE şi HAVING, se folosesc operaţiile cu mulţimi: UNION, INTERSECT, EXCEPT. Clauza WHERE poate fi urmată de unul din următoarele 5 predicate: Compararea valorilor folosind operatorii de comparare (=, <, >, <=, >=, <> ISO,!=) şi/sau operatorii logici (AND, OR, NOT); Testarea domeniului de valori al unei expresii (BETWEEN/NOT BETWEEN); Testarea apartenenţei la o mulţime de valori (IN/ NOT IN); Corespondenţa la un anumit model (LIKE/NOT LIKE); Testarea condiţiei de null (IS NULL/IS NOT NULL). Testele LIKE/NOT LIKE folosesc simbolul procent (%) pentru reprezentarea unui şir de zero sau mai multe caractere şi caracterul liniuţă de subliniere pentru reprezentarea oricărui caracter singular. Exemplu: Clauza: WHERE nume= A% selectează toate înregistrările al căror nume începe cu litera A. Clauza ORDER BY poate ordona înregistrările crescător sau descrescător, alfabetic sau numeric, pe baza uneia sau a mai mutor coloane. Prima coloană constituie cheia majoră de sortare, iar următoarele sunt chei minore de sortare. 5.2 INSTRUCŢIUNEA INSERT Instrucţiunea INSERT de introducere a uneia sau a mai multor înregistrări în BD foloseşte următoarele două formate: I. INSERT INTO nume_tabel [(listă_de_coloane)] VALUES (listă_de_valori); II. INSERT INTO nume_tabel [(listă_de_coloane)] SELECT ; Cel de al doilea format reprezintă o instrucţiune combinată INSERT SELECT deci poate folosi toate clauzele instrucţiunii SELECT pentru copierea mai multor înregistrări din tabele ale BD printr-o singură comandă SQL. Exemple: INSERT INTO agenti (nume, prenume, cnp, filiala) VALUES ( popescu, marius, 1900102111111, iasi ); 8

INSERT INTO personal VALUES ( ionescu, max, 1900102111111, iasi, 0 ); 5.3 INSTRUCŢIUNEA UPDATE Pentru actualizarea datelor din BD se foloseşte instrucţiunea UPDATE cu următorul format: UPDATE nume_tabel SET coloana_1 = valoarea_1[, coloana_2 = valoarea_2 ] [WHERE condiţie]; Exemplu: Pentru majorarea cu 5% a salariilor tuturor agenţilor cu vechime de minimum 3 ani se scrie comanda SQL: UPDATE agenti SET salariu = salariu*1,05 WHERE vechime >= 3; 5.4 INSTRUCŢIUNEA DELETE Pentru ştergerea unor înregistrări din BD se foloseşte instrucţiunea DELETE cu următorul format: DELETE FROM nume_tabel [WHERE condiţie]; 6. VEDERI Prin definiţie, o vedere este o relaţie virtuală produsă la cerere prin operaţii relaţionale, folosind relaţiile existente în baza de date. O vedere este creată prin instrucţiunea CREATE VIEW: CREATE VIEW nume_vedere [(nume_coloană [, ])] 9

AS SELECT [WITH [CASCADED LOCAL] CHECK OPTION]; Pentru a crea vederea, utilizatorul trebuie să aibă drepturi de interogare (SELECT) asupra tuturor tabelelor implicate în subselecţie şi drepturi de utilizare (USAGE) asupra tuturor coloanelor solicitate. O vedere care restrânge accesul la înregistrările selectate dintr-unul sau mai multe tabele fără restricţionarea coloanelor, se numeşte vedere orizontală. O vedere verticală restrânge accesul la anumite atribute (coloane) dintr-unul sau mai multe tabele. De exemplu, salariile sunt confidenţiale şi nu pot fi vizualizate de către agenţi într-o vedere verticală. Acest lucru devine posibil într-o vedere orizontală care îi permite fiecăruia să citească propria înregistrare din BD. Instrucţiunea CREATE VIEW se combină cu instrucţiunea SELECT şi cu clauzele acesteia. Exemplu: Managerul agentiei doreşte să cunoască proprietăţile gestionate de toţi agenţii, fără detalii specifice legate de cnp, salariu etc. Presupunem că în BD există un tabel agenţi şi un tabel proprietăţi : Agenti (cnp, nume, prenume, filiala, salariu, vechime); Proprietati (nr_proprietate, zona, tip, suprafata, pret, adresa, cod_proprietar, cnp) Vederea este creată prin comanda: CREATE VIEW agenti_proprietati AS SELECT nr_proprietate, nume_agent, prenume_agent, filiala FROM agenti nume, agenti prenume, agenti filiala, proprietati nr_proprietate WHERE agenti.cnp = proprietati.cnp GROUP BY agenti.filiala; O vedere este reactualizabilă dacă SGBD este capabil să urmărească orice rând sau coloană până la relaţia-sursă. Vederile pot fi folosite pentru a crea noi vederi. O vedere care face apel la mai multe tabele se numeşte vedere unificată. O vedere care utilizează clauza GROUP BY se mai numeşte şi vedere grupată. Distrugerea unei vederi se face prin instrucţiunea: DROP VIEW nume_vedere [RESTRICT CASCADE] Opţiunea CASCADE determină ştergerea tuturor vederilor bazate pe vederea eliminată. Înregistrările dintr-o vedere care în urma reactualizării BD sau inserării de noi date satisfac sau nu mai satisfac clauza WHERE vor intra sau vor ieşi din acea vedere, fiind numite şi rânduri 10

migratoare. Clauza WITH CHECK OPTION migrarea unui rând în afara vederii, ceea ce asigură o mai bună securitate a datelor incluse în vedere decât în tabelele BD. 7. TRANZACŢII ISO defineşte un model de tranzacţii bazat pe două instrucţiuni SQL: COMMIT (executare) şi ROLLBACK (revenire). Tranzacţia este o unitate logică de lucru care conţine una sau mai multe comenzi SQL. Iniţierea tranzacţiei poate fi făcută de către o persoană sau un program printr-o comandă de iniţiere de tip SELECT; INSERT; UPDATE. Până la completarea tranzacţiei, efectele ei nu sunt vizibile. Încheierea tranzacţiei se poate realiza în unul din următoarele 4 moduri: a. Prin instrucţiunea COMMIT, modificările din BD sunt permanente. b. Prin instrucţiunea ROLLBACK, se abandonează modificările iniţiate şi BD rămâne nemodificată. c. Finalizarea cu succes a programului încheie tranzacţia şi modificările au efect chiar dacă nu s-a executat instrucţiunea COMMIT. d. Abandonarea tranzacţiei fără rularea instrucţiunii ROLLBACK atunci când se termină anormal programul respectiv. Formatul unei tranzacţii este următorul: SET TRANSACTION [READ ONLY READ WRITE] [ISOLATION LEVEL READ UNCOMMITTED READ UNCOMMITTED REPEATABLE READ SERIALIZABLE]; 8. CONTROLUL ACCESULUI foloseşte două instrucţiuni pentru controlul accesului la BD: GRANT şi REVOKE. Mecanismul de securitate al BD se bazează pe conceptele de: a. identificator de autorizaţie b. posesiune 11

c. privilegiu. Fiecărui utilizator la BD i se alocă un identificator de autorizaţie, asociat cu o parolă, utilizat pentru a determina drepturile de acces ale acestuia la obiectele din BD. Fiecare obiect din BD este proprietatea celui care l-a creat (drept de posesiune). În clauza AUTHORIZATION din schema căreia îi aparţine obiectul apare identificatorul proprietarului. Prin privilegii se înţeleg acţiunile care îi sunt permise unui utilizator al BD: SELECT INSERT [(nume_coloană [,...])] UPDATE [(nume_coloană [,...])] DELETE REFERENCES [(nume_coloană [,...])] USAGE Formatul instrucţiunii GRANT este următorul: GRANT {listă_de_privilegii ALL PRIVILEGES} ON nume_obiect TO {listă_de_identificatori PUBLIC} [WITH GRANT OPTION] Cuvântul cheie PUBLIC îi desemnează pe toţi utilizatorii BD. Clauza WITH GRANT OPTION permite transmiterea privilegiilor spre alţi utilizatori. Formatul instrucţiunii REVOKE este următorul: REVOKE [GRANT OPTION FOR] {listă_de_privilegii ALL PRIVILEGES} ON nume_obiect FROM {listă_de_identificatori PUBLIC} [RESTRICT CASCADE] Opţiunea GRANT OPTION FOR permite retragerea separată a drepturilor acordate altor utilizatori prin clauza WITH GRANT OPTION. 12