FACULTATEA DE INFORMATICA MANAGERIALA CURS BD ORACLE an III Seria A (Versiune site:) PLANIFICARE CURSURI: ORACLE AN III – SEM. II/2010 Prof. dr. Virgil Chichernea Calendar activitate: 15.02 – 09.05.2010 - ACTIVITATE DIDACTICA (12 sapt.); 10.05 – 23.05.2010 - Definitivare lucrare licenta (2 sapt.); 24.05 – 20.06.2010 - Sesiune de examene (4 saptamani); 21.06 -04.06.2010 - RESTANTE (2 sapt.); 21.06 – 05.06.2010 - Inscriere la lienta ; 7.07 - 11.07.2010 - EXAMEN DE LICENTA PLANIFICARE CURSURI- Semestrul II – An Univ: 2009-2010 Planificarea cursuri : S.G.B.D. ORACLE-SQL AN III: SEMESTRUL II -2010 Cursul nr. 1. – 17.02.10 Prezentarea generală a SGDB-urilor şi a arhitecturii sistemelor informatice cu baze de date/ baze de date relationale; SGBD – ORACLE. Arhitectura funcţională şi internă a sistemului ORACLE. Sesiuni de lucru şi controlul accesului utilizatorilor; Cursul nr. 2. – 24.02.10 Utilizarea SQL*PLUS - Editarea comenzilor. Comenzi interactive. Formatarea rezultatelor; Cursul nr.3. – 3.03.10 SQL - Limbajul de definire a datelor; Crearea si actualizarea bazei de date prin comenzi SQL; Cursul nr.4. – 10.03.10 Limbajul de manipulare a datelor; Limbajul pentru controlul accesului la date; Cursul nr.5. – 17.03.10 Interogarea bazei de date şi setul de operatori SQL. Subinterogări. Interogări corelate. Utilizarea subinterogărilor pentru crearea si actualizarea tabelelor. Cursul nr.6. – 24.03.10
Implementarea operatorilor relaţionali în SQL. Operatorii asamblişti. Operatorii relaţionali (selecţia, proiecţia, joncţiunea, diviziunea). Operatori aritmetici, funcţii şi grupuri de funcţii; Stabilire teme proiect de semestru Cursul nr.7. –31.03.10 Test nr. 1 - test semestrial în plen Cursul nr.8. – 7.04.10 Functii agregat SQL. Subtotaluri. Analize multidimensionale. Operatorii CUBE şi GROUPING SETS. Soluţii OLAP. Ferestre pentru funcţii analitice; Obiecte din schema bazei de date. Extensii procedurale ale SQL. Dicţionarul bazei de date. Reguli de validare. Tabele virtuale în ORACLE si VFP.
Cursul nr.9. – 14.04.10 Realizarea de rapoarte si videoformate in SQL. Crearea viziunilor, secventelor, sinonimelor si grupurilor de tabele sau indecsi (clusteri) Cursul nr.10. – 21.04.10 Introducere in PL/SQL. Proceduri, funcţii stocate şi declanşatori în VFP şi ORACLE Cursul nr.11. – 28.04.10 Test nr. 2 - test semestrial în plen Cursul nr.12. – 5.05.10 Dezvoltari de proiecte in ORACLE. Privilegii, roluri, utilizatori, schema unui utilizator, securitatea datelor. Expresii si Functii.
Bibliografie: 1. BAZE DE DATE – ORACLE – SQL, SQL*Plus, PL/SQL Autori : Prof. Dr. Virgil Chichernea, Lector drd. Gabriel Garais, Asistent univ. Dragos Paul Pop, Editura Universitatii Romano-Americane, Bucuresti 2009. 2. Pliant cu comenzile SQL
CUPRINSUL MANUALULUI CURSULUI UNIVERSITATEA ROMANO-AMERICANA BUCURESTI Prof. univ. dr. Virgil Chichernea Lect. univ. drd. Gabriel Eugen Garais
Asist. univ. Dragos Paul Pop
BAZE DE DATE
ORACLE - SQL, SQL*Plus, PL/SQL -
Bucuresti 2009
Cuprins Prefaţă BAZE DE DATE RELATIONALE SI ARHITECTURA FUNCTIONALA A SGBD ORACLE 1.1. Baze de date relaţionale (BDR) 1.2. Modelul relaţional 1.3. Forme normale 1.4. Arhitectura funcţională a SGBD ORACLE
PARTEA I Sectiunea I: LIMBAJUL SQL (Structured Query Language) - ORACLE 2.1. Prezentarea limbajului SQL-ORACE - Tabele - Structura comenzilor în SQL 2.2. Limbajul de definire a datelor (LDD) a) Crearea bazei de date şi spaţiului alocat tabelelor Crearea bazei de date în SQL : Comanda CREATE DATABASE Crearea spaţiului alocat tabelelor b) Crearea obiectelor în baza de date Crearea unei tabele Modificarea structurii într-o tabela existentă: c) Crearea viziunilor : Comanda CREATE VIEW d) Vizualizarea structurii unei tabele e) Ştergerea unui obiect din baza de date 2.3. Limbajul de manipulare a datelor Comanda INSERT Comanda DELETE Comanda UPDATE Comanda SELECT 2.4. Limbajul pentru controlul accesului la date (LCD) 2.5. Interogarea bazelor de date. Implementarea operatorilor relaţionali Interogări simple 2.5.1 Implementarea operatorilor de selecţie şi proiecţie 2.5.2. Expresii, condiţii şi operatori Operatori: a) Operatori aritmetici b) Operatori de comparaţie: c) Operatori de subliniere d) Operatori logici: AND; OR; NOT;
e) Operatori pentru mulţimi: UNION şi UNION ALL f) Operatorul INTERSECT g) Operatorul MINUS h) Operatorul BETWEEN i) Operatorul LIKE j) Operatorul IN 2.5.3. Implementarea operatorului JOIN (operator de compunere) a) Echi-joncţiunea ( jonctiunea echivalentă) b) Non – echi- joncţiuni c) Joncţiuni externe d) Auto-joncţiunea (joncţiunea tabelei cu ea însăsi) 2.5.4. Crearea de scripturi (Macro) 2.5.5. Definirea variabilelor în SQL 2.6. Funcţii SQL şi funcţii agregate SQL 2.6.1. Funcţii totalizatoare: a) Funcţia COUNT – returnează nr. total de linii care respectă clauza WHERE b) Funcţia SUM – returnează suma tuturor valorilor dintr-o coloană c) Funcţia AVG – calculează valoarea medie a unei coloane d) Funcţia MAX – găseste şi afişează valoarea cea mai mare dintr-o coloană e) Funcţia MIN – returnează cea mai mică valoare dintr-o coloană f) Funcţia VARIANCE – Calculează şi afişează dispersia valorilor dintr-o coloană g) STDDEV – calculează şi afişează abaterea (deviaţia) standard 2.6.2. Funcţii pentru data calendaristică şi ora a) Funcţia ADD-MOUNTHS – adaugă un număr de luni la data curentă
2.6.3. Funcţii matematice a) Funcţii aritmetice b) Funcţii trigonometrice c) Funcţii logaritmice EXP, LN, LOG d) Funcţii le POWER, SIGN, SQRT 2.6.4. Funcţii de tratare a şirului de caractere 2.6.5. Funcţii diverse 2.6.7 Funcţii agregate - Clauzele utilizate în comanda SELECT a) Clauza WHERE b) Clauza STARTING WITH c) Clauza ORDER BY d) Clauza GROUP BY e) Clauza HAVING 2.7. Cereri complexe 2.7.1. Cereri complexe de interogare
2.7.2. Subinterogări 2.8. Realizare rapoarte şi videoformate(Forms) în SQL 2.8.1. Realizarea rapoartelor în SQL 2.8.2. Realizarea de videoformate (FORMS) în SQL
Sectiunea a II-a: SQL*PLUS (Manual de utilizare). 3.1. Sesiunea de lucru 3.2. Moduri de lucru cu SQL*Plus 3.3. Editarea comenzilor SQL*Plus (exemple) 3.4. Opţiunile de lucru. Comanda SET; 3.5. Utilizarea variabilelor utilizator 3.6. Introducerea de comentarii printre comenzile dintr-un fişier 3.7. Afişarea unor informaţii: (DESCRIBE: HELP{COMANDS/ CLAUSE}) 3.8. Parametrizarea/abandonarea schimbărilor asupra BD 3.9. Controlul accesului la baza de date: nume utilizator şi parola. 3.10. Formatarea rezultatelor şi editarea de rapoarte 3.11. Dicţionarul datelor – componenta a SGBD ORACLE
PARTEA a II-a: LIMBAJUL DE PROGRAMARE PL/SQL Sectiunea I: 4.1. Introducere în limbajul PL/SQL 4.2. Structura unui bloc de bază PL/SQL 4.3. Declararea variabilelor 4.4. Elemente de limbaj 4.1.3 Declaraţiile 4.5. Instrucţiuni PL/SQL 4.6. Gestiunea cursorului în PL/SQL 4.7. Subprograme PL/SQL 4.8. Pachete 4.9. Declanşatori (triggeri) - 4.9.1. Integritatea restricţiilor şi triggeri - 4.9.2. Integritatea restricţiilor - 4.9.3. Exemple de triggeri - 4.9.4. Programarea trigerilor - 4.9.5. Mai multe despre trigeri 4.10. Gestiunea erorilor
4.11. Abordarea orientată obiect în PL/SQL -
4.11.1. Programarea în PL/SQL 4.11.2. Încorporarea SQL şi Pro*C 4.11.3. Concepte generale 4.11.4. Variabile gazda şi variabile de comunicaţii 4.11.5. Zona de comunicare
Sectiunea a II-a:
PROBLEME REZOLVATE ÎN SQL ŞI PL/SQL 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7. 5.8.
Prezentarea studiului de caz şi a modelului relaţional Probleme referitoare la LDD şi LMD Interogări monorelaţie Interogări utilizând operatorii relaţionali Interogări multi relaţie Aplicaţii referitoare la vizualizări Aplicaţii referitoare la declanşatori Subprograme în PL/SQL
PARTEA a III-a: Sectiunea I: Proiecte realizate in SQL si PL/SQL Sectiunea a II-a: PREZENTAREA ŞI UTILIZAREA APLICAŢIEI SITIRATING 6.1 Obiective 6.2 Modele economico-matematice utilizate 6.3 Manual de utilizare
Sectiunea a III-a: Pliant SQL Teste de autoevaluare Bibliografie
EXTRAS DIN CUPRINSUL CURSURILOR PREDATE LA : DISCIPLINA : BD-ORACLE AN III – SERIA A Prof. Dr. Virgil Chichernea
Cursul nr. 1 : (extras) Obs : Continutul informational complet se afla in manual. 1.4. Arhitectura generală a SGBD-ului ORACLE Corporaţia ORACLE este principalul furnizor de software pentru gestiunea bazelor de date relaţionale (SGBDR), software ce lucrează pe o gamă largă de calculatoare conectate la Internet. În fig. nr. 3 sunt prezentate principalele etape evolutive din istoria acestei corporaţii, a doua companie de software la nivel mondial.
Fig. 3 Etape semnificative ale evolutiei SGBD-ului ORACLE
1.4.1 Arhitectura funcţională şi internă
În cele ce urmează vom discuta despre componentele SGBD ORACLE: arthitectură, structura logică şi fizică a bazei de date, şi modul în care comenzile SQL sunt procesate şi cum se crează obiectele bazei de date. Principalele caracteristici ale sistemului ORACLE sunt: - ORACLE este un SGBD relaţional, portabil pe o mare varietate de platforme şi foloseşte un număr mare de utilitare care se pot folosi pe toate etapele modelării, de la specificarea cerinţelor până la exploatarea aplicaţiilor dezvoltate. - ORACLE dispune de un limbaj de definire (DDL), un limbaj de manipulare (DML) a datelor şi un limbaj de control al datelor (LCD); - Manipularea datelor se face cu ajutorul limbajului SQL şi PL/SQL (Procedural Language); - Oracle suportă proceduri, funcţii şi biblioteci (pachete) stocate la nivelul bazei de date. Pachetele pot fi apelate prin programele utilizatorilor sau de către sistem ca urmare a realizării unui anumit eveniment declaşator (trigger).; - Oracle asigură: coerenţa datelor, confidenţialitatea datelor, integritatea datelor, salvarea şi restaurarea datelor, gestiunea acceselor concurente, portabilitatea datelor şi a aplicaţiilor dezvoltate, Arhitectura funcţională, sub o formă simplificată, a SGBD ORACLE este prezentată în fig.4 ARHITECTURA ORACLE INTERFETE DE DEZVOLTARE DEVELOPER
PRO*…
DESIGNER
NUCLEUL ORACLE SQL*PLUS
PL/SQL
JAVA
INSTRUMENTE DE INTRETINERE ADMINISTRATOR TOOLS
NET PRODUCTS
BROWSERE, EDITOARE, …
BD
Fig. 5. Arhitectura funcţională ORACLE Componentele care formează arhitectura ORACLE sunt structurate pe trei niveluri: nucleul, intefeţele şi instrumentele de întreţinere. Aceste componente sunt dispuse într-o configuraţie client/server. Componentele de client şi de server sunt plasate pe calculatoare diferite într-o reţea în care: - serverul asigură memorarea şi manipularea datelor, precum şi administrarea bazei de date; - clientul asigură interfaţa cu utilizatorul şi lansează aplicaţia care accesează datele din baza de date. 1.4.2. Managementul memoriei şi al proceselor Oracle DBMS server se bazează pe aşa numita arhitectură Multi-Server. Serverul este responsabil cu procesarea tuturor bazelor de date active, adică cu execuţia unei comenzi SQL, managementul userului, resurselor şi memoriei. Deşi există numai o copie a codului de program pentru SGBD server, fiecare utilizator este conectat la un server logic care îi este destinat. Fig. Nr.6 ilustrează arhitectura SGBD Oracle privind structura memoriei, proceselor şi fişierelor.
Utilizator 1
Utilizator 2
Utilizator n
Server Proces
Server Proces
Server Proces
PGA
PGA
PGA
System Global Area (SGA) Buffer
Shared Pool
Buffer Redo-log
Dicţionar Cache
Baza de date (Database) Buffer Arhiva Log DBWR
LGWR
Fişiere date
Fişiere Redo-log
ARCH
Fişiere Control
Bibliotecă Cache Procese de bază PMON
SMON
Fişiere Arhivă şi backup
Figura 6: Arhitectura sistemului Oracle 1.4.3. Structura logica şi fizica a bazei de date Baza de date a unei aplicaţii realizată în ORACLE conţine tabele corelate în care se memorează datele aplicaţiei. Rândurile unei tabele reprezintă Entităţi (înregistrări), iar coloanele tabelei reprezintă atribute (câmpuri). Un model de date este o structură pentru descrierea şi documentarea datelor necesare utilizatorului care pot fi implementate într-o bază de date. Un model de date trebuie să fie creat pentru fiecare user. Toate modelele de useri sunt adunate într-un model de bază de date. Un view de user este dezvoltat din modelul de bază de date pentru a reprezenta modelul fiecărui user.
Schema bazei de date descrie în totalitate baza de date adică: descrie tabelele, defineşte relaţiile, defineşte domeniile, defineşte regulile afacerilor. Elementele unei baze de date ORACLE (vezi fig. nr. 8): - Zonele de memorie: Zona globală de sistem (SGA); Zona globală de program (PGA); Zona de context (CA). - Procesoarele ORACLE: DataBase Writer; Process Monitor; System Monitor; Proces Check Monitor. (Client; Sever). - Obiectele tip ORACLE: BD; Tabela de bază; Tabela virtuală; Clusterul; Indexul; - Tipuri de date – cele din standardul SQL; - Fişierele - pentru memorarea datelor din structura fizică a BD ORACLE: o Fişierele de date (tabele de bază, indecşi, clusteri, segmente, dicţionarul de date); o Fişierele de control o Fişierele jurnal (redo, log); o Alte fişiere;
Fig. nr. 8. Baza de date ORACLE În arhitectura bazei de date se face distincţie între structura logică şi fizică a bazei de date (vezi fig. nr. 9). Structura logică descrie zonele logice de memorie (numite spaţii) unde obiectele ca tabelele pot fi memorate. Structura fizică este determinată de fişierele sistemului de operare care constituie baza de date.
Baza de date LOGIC
FIZIC
Spatiu tabel
Fisier de date
Segment Extensie
Bloc ORACLE
Bloc OS
Figure 9: Structura logica şi fizica a unei baze de date Urmatoarea schema ilusrează arhitectura ORACLE a instanţei BD şi a legăturilor între structurile logice şi fizice .
Fişiere redo-log
Baza de date
Fişiere Date
Tabele spaţiu
Fişiere control
Tabele Tabele Segment Tabele Tabele Block
extent
Fig. nr.10 Relaţiile dintre structura logică şi fizică a bazei de date
Cursul nr. 2 : (extras) Obs : Continutul informational complet se afla in manual.
PARTEA I
Sectiunea a II-a
1.2 SQL*PLUS (Manual de utilizare). 2.1. Sesiunea de lucru 2.2. Moduri de lucru cu SQL*Plus 2.3. Editarea comenzilor SQL*Plus (exemple) 2.4. Opţiunile de lucru. Comanda SET; 2.5. Utilizarea variabilelor utilizator 2.6. Introducerea de comentarii printre comenzile dintr-un fişier 2.7. Afişarea unor informaţii: (DESCRIBE: HELP{COMANDS/ CLAUSE}) 2.8. Parametrizarea/abandonarea schimbărilor asupra BD 2.9. Controlul accesului la baza de date: nume utilizator şi parola. 2.10. Formatarea rezultatelor şi editarea de rapoarte 2.11. Dicţionarul datelor – componenta a SGBD ORACLE
SQL*PLUS - PREZENTARE GENERALA Obiective: -
Prezentarea unui manual minimal de utilizare a interfeței SQL*Plus; Controlul accesului la baza de date: nume utilizator şi parola; Formatarea rezultatelor şi editarea de rapoarte; Accesul la dicționarul datelor ORACLE.
SQL*Plus asigură interfața interactivă (low-level) dintre utilizator şi SGBD-ul ORACLE. SQL*Plus este un program utilitar, cel mai utilizat de SGBD ORACLE, care permite utilizatorilor să definească şi să manipuleze interactiv obiectele bazei de date şi asigură accesul la obiectele (componentele) unei baze de date (tabele, viziuni, clustere etc.). Acest program utilitar se utilizează implicit la afișarea rezultatelor interogarilor sau a view-urilor pe ecran. Printre facilităţile oferite de către SQL*Plus se pot enumera: • Este un editor de linii de comanda SQL. ( Se precizează că SGBD ORACLE acceptă şi alte editoare de linii de comandă ); • Oferă numeroase comenzi pentru formatarea rezultatului unei cereri; • SQL*Plus asigură asistența on line (help on line). • Rezultatul cererii poate fi memorat în fişiere care pot fi printate; • Cererile frecvente pot fi salvate într-un fişier şi pot fi apelate de câte ori este nevoie; • Cererile pot fi parametrizate astfel că este posibil să se invoce o cerere salvată şi să se precizeze numai parametrii. După ce utilizatorul s-a conectat la SQL*Plus, sistemul afișează promterul SQL> şi asteaptă comenzile utilizatorului. Utilizatorul poate scrie trei tipuri de comenzi: - Instrucţiuni SQL pentru definirea şi accesarea bazei de date; - Blocuri PL/SQL pentru accesarea bazei de date; - Comenzi SQL*Plus pentru editarea şi memorarea comenzilor SQL, a blocurilor PL/SQL, pentru formatarea rezultatelor şi pentru setarea opţiunilor de lucru.
3.1. Sesiunea de lucru:
Pentru a lucra cu SQL*Plus utilizatorul trebuie să se conecteze la sistemul de operare şi să deschidă o sesiune de lucru ORACLE conform procedurilor de mai jos. Deschiderea unei sesiuni de lucru: Pentru a deschide o sesiune de lucru utilizatorul SGBD ORACLE poate opta pentru una din procedurile prezentate mai jos: a) Clic pe START All Programs ORACLE Application Development SQL*PLUS 10g …. Apare o fereastră pentru conectare şi se introduce nume utilizator şi parola, [nume bază de date] OK ; Apare prompterul SQL>
b) Click pe START
sau click pe iconul
Se tastează nume utilizator, parolă, [nume baza de date] OK ; Apare prompterul SQL>
Inchidere sesiune SQL*PLUS: se realizează prin una din comenzile: SQL> QUIT; SQL> EXIT; SQL> [CTRL]Z; Și apare mesajul : Disconnected from ORACLE.
3.2. Moduri de lucru cu SQL a) modul direct, în care utilizatorul introduce o comandă SQL care se tastează după promterul SQL. Această comandă este memorată în bufferul SQL şi poate fi modificată sau lansată în execuție de mai multe ori, atâta timp cât utilizatorul nu a introdus o nouă comandă sau nu a șters explicit bufferul SQL; O nouă comandă SQL va șterge automat vechea comandă din buffer. b) modul program, care constă în elaborarea şi rularea unui fişier de comenzi ce conţine instrucţiunile unui program sursă scris în limbajul SQL. Fişierul este de forma nume.SQL şi se obţine prin una din urmatoarele proceduri: - cu ajutorul comenzii SQL > EDIT tastare comenzi SQL SAVE nume_fişier [CREATE|REPLACE|APPEND]; - salvarea buffer-ului SQL, care conţine un număr de comenzi, cu ajutorul comenzii: GET nume_fişier[.ext] [LIST] [NOLIST]. - utilizarea comenzii INPUT urmată de comenzile fişierului şi apoi salvarea conţinutului buffer-ului într-un fişier.
3.3 Editarea comenzilor SQL*Plus (exemple) Cele mai recente instrucţiuni SQL sunt memorate în bufferul SQL, indiferent dacă aceste instrucţiuni au sau nu sintaxa corectă. Se poate edita bufferul folosind una din comenzile: • l[ist] – listează toate liniile din bufferul SQL şi marchează cu “_” linia curentă din buffer • l - listază linia • c[hange]// - inlocuiește secvența șirului vechi cu șirul nou; • a[ppend] - adauga la linia curentă; • del – șterge linia curentă; • r[un] – execută conţinutul bufferului; • get - citește datele din fişierul în buffer; • save - scrie bufferul current în ; •edit invocă (lansează) editorul şi incarcă bufferul curent în editor. După iesirea din editor instrucțiunea SQL modificată este memorată în buffer şi poate fi executată cu comanda r; Editorul poate fi definit în shell-ul SQL*Plus prin tastarea comenzii: editor =, unde poate fi un nume de editor. Comenzile SQL sunt memorate în buffer-ul comenzilor SQL şi pot fi modificate fără a fi nevoie de retastare. Editarea se poate realiza utilizând următoarele comenzi SQL: L afişează toată comanda (toate liniile comenzii din buffer-ul SQL); Ln afişează numai linia n; L* afişează linia curent[; Lmn afişează liniile de la m la n; Llast afişează linia precedentă; I inserarea de linii după linia curentă.
2.4.Opţiunile de lucru. Setarea se face cu ajutorul comenzii SET a) Afişarea opţiunilor se face cu comanda SHOW 1) Să se afişeze numărul poziţiei liniei în cadrul paginii curente SQL> SHOW LNO; lno 9 ....... b) Evaluarea timpului necesar executării comenzilor 5) Să se creeze o zonă de contorizare a timpului necesar executării diferitelor comenzi, cu numele CONTOR 6) Să se indice efectuarea unui salt de trei rânduri la începutul unei pagini noi. SQL> SET PAGESIZE 7
3.5. Utilizarea variabilelor utilizator. &nume_variabila prin comanda ACCEPT sau comanda DEFINE 1) Să se definească variabila VAR1 ca fiind coloana MARCA, prin comanda DEFINE şi variabila VAR2 ca fiind coloana NUME, prin coloana ACCEPT. SQL> DEFIME VAR1=MARCA; ACCEPT VAR2 NUME SQL> / old 1: selected &VAR1, &VAR2 new 1: SELECTED MARCA, NUME MARCA NUME ---------------------------400 GICA ION 3.6. Introducerea de comentarii printre comenzile dintr-un fişier (REMARK; DOCUMENT; /*… */ ) 1) Să se introducă un rând de comentariu în programul de bufer curent SQL> INPUT /* PROGRAM TEST */ SQL> LIST 1 SELECT &VAR1, &VAR2 2 /* PROGRAM TEST */ 3 FROM SALARIATI 4 * WHERE FUNCT= ' DIRECTOR' Obs. Pentru ca după afişarea unei pagini să se facă pauză, urmând să se aştepte apăsarea tastei ENTER , se foloseşte comanda PAUSE [text]. 3.7. Afişarea unor informaţii : ( DESCRIBE: HELP{COMANDS/ CLAUSEE})
Help System SQL*Plus şi alte comenzi utile Pentru a avea acces la help-ul online SQL*Plus se tastează help; • Pentru a schimba parola se foloseşte comanda: alter user identified by ; • Comanda desc[ribe]
listează toate coloanele unei tabele împreună cu tipul datelor şi informaţii despre valorile null dacă au fost alocate; • Comanda spool asigură ca toate informaţiile de pe display să fie memorate în . Pentru a inhiba această comandă se utilizează: spool off; • Comanda copy poate fi utilizată pentru copierea completă a unei tabele. Exemplu: copy from scott/tiger create EMPL using select _ from EMP;
3.8. Parametrizarea/abandonarea schimbărilor asupra BD 1)
Să se realizeze efectiv actualizările făcute asupra bazei de date
SQL> COMMIT commit complete b) Să se renunţe la actualizările făcute SQL> ROLLBACK rolback complete Copierea datelor între BD diferite COPY [FROM nume_utilizator / parola@baza_date] [TO nume_utilizator / parola@baza_date] {APPEND | CREATE | INSERT |REPLACE | nume_tabela [ (nume_col, nume_col,…..)] USING cerere; 3.9. Controlul accesului la baza de date: nume utilizator şi parolă. Acordarea drepturilor de acces 1) Să se acorde dreptul de conectare la baza de date utilizatorului COMBAZA1; SQL> GRANT CONNECT TO COMBAZA1; Grand succeeded. 2) Să se definească un acces privilegiat pentru tabela SALARIATI utilizatorului util. SQL> GRANT ALL ON SALARIATI TO UTIL1; Grant succeeded. 3) Să se revoce drepturile de acces la baza de date pentru utilizatorul UTIL1. SQL> REVOKE CONNECT FROM UTIL1; Revoke succeeded. 4) Să se revoce accesul privilegiat la tabela PRODUSE utilizatorului UTIL2. SQL> REVOKE ALL ON PRODUSE FROM UTIL2; Revoke succeeded. Reţinerea în baza de date a comenzilor utilizator [ AUDIT]. 5) Să se controleze operaţia de introducere a datelor în tabela SALARIATI. SQL> AUDIT INSERT 2 ON SALARIATI BY ACCESS; Audit succeeded.
Partajarea accesului la tabele SQL> LOCK TABLE SALARIATI 2 IN EXCLUSIVE MODE NOWAIT; Table(s) Locked. Observaţie. Comanda LOCK TABLE dă posibilitatea utilizatorului să împartă în mod egal cu alţi utilizatori accesul la una sau mai multe tabele, păstrând integritatea acestora. 2.10.Formatarea rezultatelor şi editarea de rapoarte Raportul este o formă de afişare a datelor într-un format cerut de beneficiar. Pentru realizarea editării de rapoarte profesionale SGBD ORACLE pune la dispoziţia utilizatorilor un număr de comenzi aşa cum se poate vedea în cele ce urmează: Tema 1: Executaţi secvenţa de comenzi şi observaţi efectul lor : SQL> SET BUFER BAFUTIL I TTITLE ' Stat de salarii' BTITLE 'Terminare raport' COLUMN MARCA FORMAT A5 HEADING 'Marca| Angajat' COLUMN NUME FORMAT A12 HEADING 'Nume| Angajat' COLUMN PREN HEADING 'Prenume| Angajat' COLUMN SALAR FORMAT 9999 HEADING 'Salariu' COLUMN ATEL HEADING 'Atelier' FORMAT A7 BREAK ON REPORT ON ATEL SKIP1 COMPUTE SUM OF SALAR ON ATEL COMPUTE SUM OF SALAR ON REPORT SELECT ATEL, MARCA, NUME, PREN, SALAR FROM PERSONAL ORDER BY ATEL; CLEAR BREAKS CLEAR COLUMNS CLEAR COMPUTES Se apasă tasta ENTER 3.11.Dicţionarul datelor ORACLE Dicţionarul datelor Oracle este cea mai importantă componentă a SGBD-ului Oracle. El conţine toate informaţiile despre structura şi obiectele bazei de date cum ar fi tabelele, coloanele, utilizatorii, fişierele de date etc. Datele memorate în dicţionarul datelor se numesc metadate. Deşi el constituie domeniul administratorul bazei de date, datele dicţionarului sunt surse de informaţii pentru utilizatori şi pentru dezvoltatorii de aplicaţii. Dicţionarul datelor conţine două nivele : nivelul intern care conţine toate tabelele de bază
care sunt utilizate de către componentele software SGBD si ele nu sunt accesibile utilizatorilor finali. Nivelul extern furnizează numeroaselor vederi informaţiile accesate de către aceste tabele despre obiectele şi structurile la diferite nivele în detaliu. 3.11.1. Tabelele dicţionarului datelor La instalarea unei baze de date Oracle întotdeuna se crează trei utilizatori standard Oracle: • SYS: Acesta este proprietarul tabelelor dicţionarului de date şi vederilor. Acest utilizator are cele mai mari privilegii în mânuirea obiectelor şi structurilor bazei de date Oracle şi are dreptul de a crea noi utilizatori. • SYSTEM: este proprietarul tabelelor utilizate de diferite utilitare cum ar fi SQL*Forms, SQL*Reports etc. Acest utilizator are mai puţine privilegii decat SYS. • PUBLIC: Acesta este un utilizator “dummy” al bazei de date Oracle. Toate privilegiile asignate acestui utilizator sunt automat asignate tuturor utilizatorilor cunoscuţi ai bazei de date. Tabelele şi vederile furnizate de către dicţionarul datelor conţin informaţii despre: • utilizatorii şi privilegiile lor; • coloanele tabelelor şi tipul de date, restricţii de integritate, indexi; • statistici despre tablele şi indexi utilizati pentru optimizare; • Privilegiile acordate obiectelor bazei de date; • structurile memorate ale bazei de date. Comanda SQL select * from DICT[IONARY]; 3.11.2. Vederile (Views) din dicţionarului datelor Nivelul extern al dicţionarului datelor furnizează utilizatorilor un acces la datele relevante ale utilizatorilor. Acest nivel asigură numeroase vederi (cca 540) care reprezintă date privind tabelele într-o manieră inteligibilă. Aceste vederi (views ) pot fi utilizate în interogările SQL la fel ca şi tabelele normale. Vederile furnizate de dicţionarul datelor conţine trei grupuri de informaţii: USER, ALL şi DBA. Grupul nume se construieşte cu un prefix acordat vederii. Exista asociate sinonime aşa cum se prezintă în continuare. • USER : Înregistrările din vederea USER conţin informaţii despre obiectele proprietarului care a lansat interogarea SQL (current user) USER TABLES – toate tabelele cu numele lor, numărul de coloane, informaţia memorată, informaţii statistice etc. (TABS) USER CATALOG tabele, vederi şi sinonime (CAT) USER COL COMMENTS commentarii pentru coloane; USER CONSTRAINTS definiţia restricţiilor pentru tabele; USER INDEXES toate informaţiile despre indexi create pentru (IND); USER OBJECTS toate obiectele bazei de date aparţinând utilizatorului (OBJ) ........
Cursul nr. 3 - 9 : (extras) Obs : Continutul informational complet se afla in manual.
Prezentarea limbajului SQL-ORACE Limbajul de definire a datelor (LDD) Limbajul de manipulare a datelor Limbajul pentru controlul accesului la date (LCD) Interogarea bazelor de date. Implementarea operatorilor relaţionali Interogări simple Funcţii SQL şi funcţii agregate SQL
8. Cereri complexe 9. Realizare rapoarte şi videoformate(Forms) în SQL
Nota: Pentru interfata utilizator cu platforma ORACLE recomandam utilizarea SQL*Plus. Manualul minimal de utilizare a SQL*Plus se afla in sectiunea a II-a.
FUNDAMENTELE PROGRAMĂRII ÎN LIMBAJUL SQL - ORACLE Obiective: -
Prezentarea şi modul de lucru cu limbajului SQL; Interogarea bazelor de date şi implementarea operatorilor relaţionali: Funcţii SQL şi funcţii agregate SQL; Cereri complexe care au ca suport mai multe tabele ; Realizare rapoarte şi videoformate(Forms) în SQL.
2.1. Prezentarea limbajului SQL-ORACLE Limbajul SQL (Structured Query Language) este un limbaj standard care poate fi utilizat pentru a defini, interoga, actualiza, şi gestiona o bază de date relaţională. SQL utilizează următorii termeni: tabelă, linii, coloane, sau termeni echivalenţi, relaţii, înregistrării/tupluri, atribute. În acest manual se va folosi: linii/randuri/înregistrări/tupluri şi coloane/atribute. O tabelă poate avea maxim 254 coloane care pot avea acelaşi tip de date sau tipuri diferite de date şi în care se pot memora domenii de valori. Domeniile posibile sunt: date alfanumerice (şiruri), numere şi date formatate. SGBD ORACLE oferă următoarele tipuri de date: - char (n): date tip caracter în lungime fixă (şir), de lungime n caractere. Mărimea maximă pentru n este 255 bytes. Spaţiul fizic ocupat este egal cu n. Dacă lungimea reală a şirului este mai mică decât lungimea declarată atunci se completează automat şirul cu spaţii în partea dreaptă pană la completarea celor n caractere declarate.
2.2. Limbajul de definire a datelor (LDD) Limbajul de Definire a Datelor (LDD) permite definirea bazei de date (BD) şi a obiectelor care compun baza de date. Prin definirea unui obiect al bazei de date în SGBD ORACLE se înţelege crearea, modificarea şi suprimarea obiectului şi pentru realizarea acestui obiectiv, SGBD ORACLE pune la dispoziţia utilizatorilor un set de instrucţiuni/comenzi SQL (CREATE; ALTER; DESCRIBE; DROP), care permit crearea, vizualizarea structurii tabelelor, modificarea şi distrugerea obiectelor bazei de date. Schema bazei de date conţine o serie de structuri logice de date care aparţin unui utilizator al BD şi care poartă numele acestuia. Un utilizator poate avea o singură schemă care va conţine numele schemei (adică numele utilizatorului), descrierea tabelelor, vizualizărilor şi privilegiilor asociate. Comanda de definire a schemei BD are sintaxa: CREATE SCHEMA AUTHORIZATION nume-schemă {comanda CREATE TABLE | comanda CREATE VIEW | comanda GRANT}… Tipuri de date în SGBD- ORACLE: SGBD SGBD ORACLE permite memorarea şi prelucrarea următoarelor tipuri de date:
-
numerice : NUMBER; FLOAT; DECIMAL; INTEGER; şiruri de caractere (alfa-numerice): CHAR; VARCHAR2; LONG; date calendaristice: DATE; Binary Large Object(BLOB).
Fig. 1 Ecran de vizualizare a structurii unei tabele a bazei de date. 2.2.1. Definirea de obiecte în SGBD ORACLE Definirea tabelelor Tabela este acea structură a bazei de date în care se memorează datele bazei de date relaţionale. Definirea tabelelor include operaţiile de creare de tabele noi (comanda CREATE), vizualizarea structurii tabelei (comanda DESCRIBE), modificarea structurii tabelelor existente (comanda ALTER), şi ştergerea la cererea utilizatorilor a tabelelor (comanda DROP). Crearea unei tabele: Sintaxa generala a comenzii de creare a unei tabele este: CREATE TABLE nume_tabela (nume_coloana1 tip (marime) restricţie, nume_coloana 2 tip (marime) restricţie, ..., nume_coloana n tip (marime) restricţie,....)
Indicarea restricţiilor(constrângerilor) la nivel de coloană: Pentru a indica o restricţie la nivel de coloană când se creează tabela, se introduce restricţia pe aceeaşi linie cu definiţia coloanei. Restricţiile (constrângerile) acceptate sunt : UNIQUE Forţează unicitatea pe coloană; NOT NULL Nu acceptă valori null; PRIMARY KEY Defineşte coloana ca fiind cheie primară REFERENCES tabela (coloana1, coloana2,...) Defineşte coloana ca fiind o cheie străina; ON DELETE CASCADE Forţează ştergerea înregistrărilor când părintele cheilor străine este şters. Poate fi folosit doar cu clauza REFERENCES; DEFAULT Oferă o valoare implicită pentru coloană; CHECK conditie Verifică condiţia înainte de a accepta data;
Indicarea constrângeri la nivel de tabelă: Cheile primare şi cheile externe se pot defini fie la nivel de câmp, fie la nivel de tabelă. Dacă cheia primară sau cheia externă este compusă, trebuie definită la nivel de tabelă prin clauzele: PRIMARY KEY (nume_coloana, nume_coloana,...) FOREIGN KEY nume_coloana REFERENCES nume_ tabela (coloana) CHECK (nume_coloana condiție) sau (nume_coloana ÎN (SET OF VALUES)) Pentru a specifica restricţiile la nivel de tabelă, restricţiile se introduc după ultima definiţie a coloanei. Sintaxa generală de creare a structurii unei tabele în SQL este de forma: CREATE TABLE ( [not null] [unique] [], ......... ( [not null] [unique] [], []);
Verificarea tabelelor create: Înainte de crearea unei tabele este necesar să stim: . care sunt atributele unei înregistrări care urmează să fie memorate; . care sunt tipurile de date asociate coloanelor; . se va folosi varchar2 sau char; . din ce coloane se construiește cheia primară;
. ce coloane permit (nu permit) valori nule; . ce coloane au (nu au) valori duplicate; . care sunt valorile implicite pentru coloanele care permit memorarea valorii null. Comanda DESCRIBE: Pentru a vizualiza structura unei tabele se utilizează comanda DESCRIBE, care are ca efect listarea structurii unei tabele cu toate componentele ei (nume tabelă, nume şi tip coloane, cheie primară, etc.) şi are sintaxa: DESCRIBE < NUME_TABELA>; Exemplu: DESCRIBE PERSONAL; Modificarea structurii unei tabele (Comanda ALTER TABLE). Comanda ALTER TABLE realizează modificarea structurii unei tabele, dar nu modifică conţinutul ei. Această comandă ( ALTER TABLE) permite: - adăugarea (ADD) unei coloane într-o tabelă existentă; - modificarea (MODIFY) coloanelor unei tabele; - specificarea constrângerilor la nivel coloană; - specificarea unei valori implicite pentru o coloană existentă; - activarea şi dezactivarea (ENABLE/ DISABLE) unor constrângeri; - schimbarea sau ştergerea (DROP) cheii primare, a cheii externe; Comanda ALTER TABLE are una din urmatoarele forme: ALTER TABLE nume-tabelă ADD (nume-coloană1, ..., nume coloanăN); ALTER TABLE nume-tabelă MODIFY (nume-coloana1, ..., nume coloanăN); Observaţie. Putem folosim ALTER TABLE pentru a adăuga sau renunţa la restricţiile definite într-o tabelă. Constrângerile sunt înregistrate în dicţionarul datelor şi sunt de forma: nume-coloană numele unei coloane unde este aplicată restricţia; NULL or NOT NULL activează sau anulează dreptul unei coloane de a avea valori nule; UNIQUE fiecare rând trebuie să aibă o valoare distinctă pentru coloană; fiecare coloană trebuie să fie declarată NOT NULL, coloana nu are voie să fie PRIMARY KEY PRIMARY KEY specifică coloana ca fiind cheie primară; FOREIGN KEY column, column... REFERENCES table column, column... specifică coloana ca şi cheie străină a coloanei tabelei; CHECK condition setează o condiţie, coloana trebuie să satisfacă această condiţie pentru a exista în tabelă. Într-o coloană restricţia CHECK se poate referi doar la coloana de care restricţia aparţine. Într-o tabelă, clauza CHECK restricţie, se poate referi la coloane multiple.
Restricţia FOREIGN KEY/REFERENCES: - respinge INSERT sau UPDATE dacă nu există o valoare corespondentă în cheia primară a tabelei; respinge DELETE dacă invalidează restricţiile REFERENCES; trebuie să facă referire la o coloană cheie primară sau unică în tabela cheii primare; se va referi la cheia primară a tabelei dacă nici o coloană sau grup de coloane nu este specifică t în restricţie; trebuie să facă referire la o tabelă, nu o viziune; nu restricţionează modul in care celelalte restricţii se pot referi la aceeaşi tabelă; necesită coloana cheie primară şi coloana restricţionată să aibă aceleași tipuri de date; poate referi aceeaşi tabelă numită în CREATE TABLE. Cu ajutorul acestei comenzi se pot adăuga atribute, sau şterge atribute din structura unei tabele. Când un atribut este adăugat, valorile pentru aceasta sunt NULL, dacă data nu este o valoare default specificată în definirea coloanei. Definirea vizualizărilor (Comanda CREATE VIEW...): O vizualizare (view) este o tabelă logică relativă la datele conţinute în una sau mai multe tabele sau vizualizări. Vizualizarea este definită pornind de la o cerere de interogare de date şi fiind o tabelă virtuală nu solicită o alocare de memorie pentru date. Ea este definită în dicţionarul datelor şi are caracteristicile unei tabele. Sintaxa generală de creare a unei vizualizări este următoarea: CREATE VIEW [(lista coloane)] AS