Sunteți pe pagina 1din 9

LABORATOR 1:

INTRODUCERE N LIMBAJUL SQL, CERERI MONOTABEL

Coninut laboratoare:

Baze de date (baze de date relaionale)


O baz de date este o colecie organizat de informaii, stocat ntr-un ansambul de fiiere.

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

Arhitectura bazelor de date Oracle


http://docs.oracle.com/cd/E15586_01/server.1111/e25789/intro.htm#autoId15
instane, SGA, PGA;
structura fizic, structura logica etc.

TEST LABORATOR SPTMNA 14


Exerciiul 1: Consultai diagrama exemplu HR (Human Resources) pentru lucrul n cadrul
laboratoarelor SQL. Identificai cheile primare i cele externe ale tabelelor existente n schem,
precum i tipul relaiilor dintre aceste tabele.

LIMBAJUL LMD, COMANDA SELECT

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).

Exemplul 2: S se obin numele, salariul i codul jobului angajailor

SELECT last_name as nume, salary as "Salariu", job_id "titlu job"


FROM employees;

Se observ c alias-ul apare n rezultat, ca antet al coloanei corespunztoare expresiei respective.


Dac un alias conine blank-uri, el va fi scris obligatoriu ntre ghilimele. Altfel, ghilimelele pot fi
omise. Doar alias-urile specificate ntre ghilimele sunt case-sensitive, celelalte fiind scrise implicit
cu majuscule. Cuvntul cheie "as" este opional.

Exemplul 3: S se obin numele i prenumele angajailor

SELECT rownum nr_crt, first_name, last_name


FROM employees;

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.

Exemplul 5: S se afieze data curent.

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.

Exerciiul 8: S se afieze numele angajailor, codul_angajailor (employee_id) i salariul anual al


acestora (salary * 12).

Exerciiul 9: S se afieze numele angajailor i valoarea comisionului raportat la salariu.

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.

Exemplul 10: S se listeze, cu i fr duplicate, codurile job-urilor din tabelul employees.

SELECT DISTINCT job_id


FROM employees;

SELECT UNIQUE job_id


FROM employees;

SELECT ALL job_id


FROM employees;

SELECT job_id
FROM employees;

Exerciiul 11: S se listeze, ce joburi au salariaii i n ce departamente lucreaz acetia.

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;

Exerciiul 13: S se obin codul angajailor, concatenat cu numele i cu salariul.


SELECT lista_expresii
FROM lista_tabele
WHERE conditie

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).

Operatorii prezentai n ordinea descresctoare a prioritii sunt:


Operatori aritmetici
unari +,-
binari +, -; *, /
concatenarea stringurilor ||
operatori pentru comparaii =, >, >=, <, <=, <>
[NOT] BETWEEN AND, [NOT] IN (), LIKE, IS [NOT] NULL, EXIST
operatori logici NOT, AND, OR

Se pot folosi parantze pentru a se fora o anumit ordine de evaluare.

Exemplul 14: S se obin numele i funcia angajailor care au un salariu mai mare dect 8000.

SELECT last_name, job_id, salary


FROM employees
WHERE salary > 8000;

Exerciiul 15: S se obin numele i venitul angajatului cu codul 170.

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)

Exemplul 17: S se afieze angajaii care lucreaz n departamentele 10 i 20.


S se afieze angajaii care nu lucreaz n departamentele 60, 40.

SELECT employee_id, last_name, first_name, department_id


FROM employees
WHERE department_id IN (10, 20)
SELECT employee_id, last_name, first_name, department_id
FROM employees
WHERE department_id NOT IN (60, 40)

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).

SELECT last_name, first_name, job_id


FROM employees
WHERE manager_id IS NULL;

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?

Pentru testarea apartenenei la un domeniu de valori se utilizeaz operatorul expresie [NOT]


BETWEEN valoare_1 AND valoare_2

Exemplul 23: S se listeze numele i salariul pentru toi angajaii al cror


salariu nu se afl n intervalul 7000-17000$.

SELECT last_name, salary


FROM employees
WHERE salary NOT BETWEEN 7000 AND 17000;

Pentru compararea irurilor de caractere, mpreun cu operatorul LIKE se utilizeaz caracterele


wildcard:
% - reprezentnd orice ir de caractere, inclusiv irul vid;
_ (underscore) -reprezentnd un singur caracter i numai unul.

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.

Exemple de comenzi SQL*Plus:

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.

SET COLSEP 'x'


Separatorul dintre coloane va fi x.

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.

Exemplul 27: S se listeze coninutul tabelului DEPARTMENTS.


S se listeze structura tabelului DEPARTMENTS, observnd tipurile de date ale coloanelor.
Fr a se rescrie prima comand tastat, s se listeze nc o dat coninutul tabelului
DEPARTMENTS.

SELECT * FROM DEPARTMENTS;


DESCRIBE DEPARTMENTS
RUN

S-ar putea să vă placă și