Coninut laboratoare:
SGBD Oracle
Un sistem de gestiune a bazei de date (SGBD) este un produs software care asigur interaciunea cu
o baz de date, permind definirea, consultarea i actualizarea datelor din baza de date.
SQL (Structured Query Language) este un limbaj neprocedural pentru interogarea i prelucrarea
informaiilor din baza de date. Compilatorul limbajului SQL genereaz automat o procedur care
acceseaz baza de date i execut comanda dorit. Limbajul SQL permite att definirea, prelucrarea
i interogarea datelor, ct i controlul accesului la acestea. Comenzile SQL pot fi integrate n
programe scrise n alte limbaje, de exemplu C/C++, Java etc.
n funcie de tipul aciunii pe care o realizeaz, instruciunile SQL se mpart n mai multe categorii.
Datorit importanei pe care o au comenzile componente, unele dintre aceste categorii sunt
evideniate ca limbaje n cadrul SQL, i anume:
limbajul de definire a datelor (LDD) comenzile CREATE, ALTER, DROP;
limbajul de prelucrare a datelor (LMD) comenzile INSERT, UPDATE, DELETE, SELECT;
limbajul de control al datelor (LCD) comenzile COMMIT, ROLLBACK.
Instalare software:
Oracle Database 11g Release 2:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html?
ssSourceSiteId=ocomfi
SqlDeveloper:
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
Clauza SELECT permite precizarea coloanelor care trebuie regsite n baza de date.
SELECT lista_expresii
FROM lista_tabele
n lista_expresii se enumer coloanele i expresiile ale cror valori trebuie obinute din baza de date.
Pentru fiecare element al listei poate fi specificat cte un nume (alias).
O pseudocoloan se comport ca o coloan a unui tabel, dar nu este stocat efectiv ntr-un tabel. Se
pot face interogri asupra pseudocoloanelor, dar nu se pot insera, actualiza sau terge valorile
acestora. n exemplul anterior, rownum este o pseudocoloan creia i s-a atribuit aliasul nr_crt. Prin
intermediu acestei expresii fiecrei linii din tabelul employees i s-a atribuit un numr de ordine.
Pseudocoloana sysdate returneaz data curent. Tabelul dual este utilizat pentru a se completa
sintaxa comenzii SELECT.
Exerciiul 4: S se modifice exemplul 2 astfel nct denumirile coloanelor s fie Nr. crt, Numele
angajatului, Prenumele angajatului.
SELECT sysdate
FROM dual;
Exerciiul 6: S se afieze pentru fiecare job: codul, titlul si diferena dintre salariul maxim i
salariul minim.
Exerciiul 7: S se afieze pentru fiecare angajat codul, numele, codul departamentului n care
lucreaza fiecare angajat i numrul de zile care au trecut de la data angajrii.
Cuvintele cheie DISTINCT i UNIQUE sunt sinonime i utilizarea lor determin sistemul Oracle s
returneze o singur copie din fiecare mulime de linii duplicate selectate. Opiunea ALL permite ca
sistemul s returneze toate liniile selectate, inclusiv toate duplicatele. Aceast opiune este implicit.
SELECT job_id
FROM employees;
Operatorul de concatenare a irurilor de caractere este ||. irurile de caractere se includ ntre
apstrofuri. Ghilimelele delimiteaz alias-uri.
Exemplul 12: S se obin numele i prenumele angajailor precum i codul job-urilor acestora. O
singur coloan intitulat "nume si functie" va conine rezultatul cererii.
SELECT last_name || ' ' || first_name || ' ' || job_id "nume si functie"
FROM employees;
Selecia din algebra relaional este realizat prin clauza WHERE. Aceast clauz este mai
complex dect operaia de selecie din algebra relaional, deoarece expresia care o urmeaz poate
conine att comparaii de atribute i/sau expresii aritmetice, ct i operatori logici (AND, OR,
NOT), operatori pe mulimi (UNION, INTERSECT, MINUS), operatori de apartenen la mulimi
cu negrile acestora (IN, NOT IN) i operatorul de existen (EXISTS).
Exemplul 14: S se obin numele i funcia angajailor care au un salariu mai mare dect 8000.
Exerciiul 16: S se obin infomaii despre angajaii care au o vechme, exprimata n numar de zile
mai mare dect 1000.
Apartenena la o mulime finit de valori se poate testa prin intermediul operatorului IN, urmat de
lista valorilor ntre paranteze i separate prin virgule:
expresie IN (valoare_1, valoare_2, ... , valoare_n)
Exerciiul 18: S se afieze numele i codul departamentului pentru angajaii care au codul jobului
IT_PROG sau HR_REP.
Exerciiul 19: S se listeze numele i salariile angajatilor care cstig mai mult de 1500 $ i
lucreaz n departamentul 10 sau 30. Se vor eticheta coloanele Angajat respectiv Salariu lunar.
Exemplul 20: S se afieze informaii despre directorul general (se presupune c acesta este
angajatul care nu are manager).
Exerciiul 21: S se afieze venitul (salariu + comision) angajailor care ctig comision?
Exerciiul 22: Care este codul jobului angajatului pentru care nu se cunoate departamentul n care
lucreaz?
Funciile UPPER(sir), LOWER(sir) convertesc irul astfel nct acesta s fie scris cu majuscule
respectiv minuscule.
Exemplul 24: Expresia last_name LIKE 'A%' este adevrat pentru numele care ncep cu litera A;
expresia UPPER(last_name) LIKE '_B%' este adevrat pentru numele care au a doua liter b sau
B.
Exerciiul 25: S se afieze numele, job-ul i salariul pentru toi salariaii al cror job conine irul
CLERK sau REP i salariul nu este egal cu 1000, 2000 sau 3000 $.
Exerciiul 26: S se listeze numele tuturor angajatilor care au 2 litere 'l' n nume i lucreaz n
departamentul 30 sau managerul lor este 102.
Recapitulare:
SINTAX COMAND SELECT
SELECT {[{DISTINCT|UNIQUE}|ALL]lista_campuri|*}
FROM [nume_schema.]nume_obiect]
[,[nume_schema.]nume_obiect ...]
[WHERE conditie_clauza_where]
[START WITH conditie_clauza_start_with
CONNECT BY conditie_clauza_connect_by]
[GROUP BY expresie[, expresie ...]
[HAVING conditie_clauza_having]]
[ORDER BY {expresie|pozitie}[, {expresie|pozitie} ...]]
[FOR UPDATE
[OF [[nume_schema.]nume_obiect.]nume_coloana
[, [[nume_schema.]nume_obiect.]nume_coloana] ...]
[NOWAIT | WAIT numar_intreg]];
Care sunt clauzele obligatorii ale comenzii SELECT?
Opional
STRUCTURA BAZELOR DE DATE ORACLE
La nivel fizic o baz de date Oracle presupune existena urmatoarelor tipuri de fiiere:
1. Datafiles: fiiere de date
2. Redo Log Files: fiiere de reluare
3. Control Files: fiiere de control
La nivel logic date sunt grupate n
1. blocuri
Din punct de vedere structural un bloc este
compus din: antet, spaiu liber, spaiu pentru
date. Unui bloc i corespunde un numr de
bytes. (DB_BLOCK_SIZE multiplu al
dimensiunii blocului sistemului de operare)
Pentru alocare manuala a saptiului se folosesc
parametrii: PCTFREE i PCTUSED (procent
din spatiul total).
2. Extensii
O extensie este compus dintr-o succesiune
contiun de blocuri alocate unui tip specific de
informaie. O extensie conine date dintr-un
singur fiier.
3. Segmente
Un segment grupeaz mai multe extensii stocate
n acelai table-space i pstreaz datele dintr-
un tabel, partiia unui table sau cluster.
Un segment poate contine date din mai multe
fisiere. Cnd o extensie este completat, Oracle
aloc spaiu pentru o nou extensie.
4. Tablespace-uri
Un tablespace este format dintr-unul sau mai
multe segmente i corespunde mai multor
fisiere (datafiles structurile fizice specifice
sistemului de operare).
UTILITARUL SQL*PLUS
SQL*Plus
SQL*Plus este un utilitar Oracle, avnd comenzi proprii specifice, care recunoate instruciunile
SQL i le trimite server-ului Oracle pentru execuie.
Comenzile Sql*Plus nu permit manipularea datelor din baza de date. Dintre funcionalitile
mediului SQL*Plus, se pot enumera:
editarea, executarea, salvarea i regsirea instruciunilor SQL i a blocurilor PL/SQL;
calculul, stocarea i afiarea rezultatelor furnizate de cereri;
listarea structurii tabelelor;
accesarea i copierea de informaii dintr-o baz de date n alta;
administrarea bazei de date.
n tabelul urmtor sunt evideniate diferenele dintre comenzile SQL i comenzile SQL*Plus.
SQL SQL*Plus
Este un limbaj de comunicare cu server-ul Recunoate instruciunile SQL i le transfer
Oracle pentru accesarea datelor. server-ului Oracle.
Prelucreaz date i definete obiecte din baza de Nu permite prelucrarea informaiilor din baza de
date. date.
Nu are un caracter de continuare. Accept "-" drept caracter de continuare pentru
comenzile scrise pe mai multe linii.
Instruciunile nu pot fi abreviate. Comenzile pot fi abreviate.
Utilizeaz funcii pentru a efectua formatri. Utilizeaz comenzi pentru formatarea datelor.
Caracterul de terminare a unei Nu necesit caracter de terminare a unei
comenzi este ";" comenzi.
Se bazeaz pe standardul ANSI pentru SQL. Este o interfa specific sistemului Oracle
pentru execuia instruciunilor SQL.
RUN abreviere /
Comenzile Sql*Plus nu sunt depuse n buffer-ul Sql. Ultima cerere SQL lansat de ctre client este
pstrat n buffer-ul SQL. Pentru rularea coninutului buffer-ului, se utilizeaz comanda RUN
DESC[RIBE] nume_obiect
Comanda DESCRIBE listeaz atributele unui tabel sau ale unui alt obiect.
SET LINE n
Comanda SET LINE stabilete dimensiunea paginii (numrul de caractere).
SET PAGES[IZE] n
Se stabilete numrul de linii afiat pe o pagin.
SET SPACE n
Se stabilete numrul de spaii dintre coloane.
SAVE path\nume.sql
Comanda SAVE salveaz coninutul buffer-ului (ultima comanda SQL) n fiierul specificat. Nu
este obligatorie precizarea extensiei sql.
START path\nume.sql (sau @path\nume.sql)
Comanda START execut comenzile din fiierul specificat.
EDIT path\nume.sql
Comanda EDIT deschide un editor de texte pentru modificarea scriptului specificat. Dac lipsete
numele fiierului, se editeaz ultima comanda din buffer.