0% au considerat acest document util (0 voturi)
94 vizualizări33 pagini

ATESTAT

Documentul prezintă o lucrare de atestat la informatică pe tema „GeoMania”. Lucrarea descrie aspecte teoretice legate de limbajul SQL, prezintă scenariul temei și diagrama ERD asociată, precum și construcția, popularea și interogarea bazei de date.

Încărcat de

Diana Alina A
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
94 vizualizări33 pagini

ATESTAT

Documentul prezintă o lucrare de atestat la informatică pe tema „GeoMania”. Lucrarea descrie aspecte teoretice legate de limbajul SQL, prezintă scenariul temei și diagrama ERD asociată, precum și construcția, popularea și interogarea bazei de date.

Încărcat de

Diana Alina A
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 33

Ministerul Educației Naționale

Inspectoratul Școlar Județean Bacău

Colegiul Național “Ferdinand I” Bacău

LUCRARE DE ATESTAT LA INFORMATICĂ

<<GeoMania>>

Elev: Samoilă Georgiana Denisa

Clasa a XII-a F

Profesor: Cristina Sichim

Mai 2018
CUPRINS:

1.Aspecte teoretice

2.Prezentarea temei

3.Descrierea scenariului

4.Diagrama ERD asociata scenariului

5.Constructia bazei de date

6.Popularea bazei de date

7.Realizarea legaturilor

8.Interogarea bazei de date(rezolvarea problemei propuse)

9.Bibliografie
1. Aspecte teoretice

LIMBAJUL SQL

Un sistem de management al bazei de date necesita un limbaj de interogare pentru a permite


utilizatorului sa acceseze datele.SQL (limbaj de interogare structurata) este limbajul utilizat de
majoritatea sistemelor de baza de date relational.

Limbajul SQL a fost dezvoltat intr-un prototip de sistem de management a bazelor de date relationale -
System R -de IBM la mijlocul anilor 1970.In 1979, Corporatia Oracle introduce prima implementare a SQL
in varianta comerciala. 

Trasaturi caracteristice SQL

 SQL este prezentat in limba engleza. Foloseste cuvintele select, insert,delete ca parti ale setului
de comenzi.
 SQL este un limbaj neprocedural :specifica ce informatii doresti,nu cum sa le obtii.Cu alte
cuvinte SQL nu iti cere sa specifici metoda de acces la date.Toate cererile SQL folosesc
optimizarea cererilor- o parte a RDBMS- pentru a determina rapid remedierea datelor specifi-
cate.Aceste trasaturi usureaza obtinerea rezultatelor dorite.
 Procesarea SQL asupra inregistrarilor nu se poate face decit asupra unei singure inregistrari la un
moment dat.Cea mai comuna forma a unui set de inregistrari este un tabel.
 SQL poate fi folosit de un sir de utilizatori incluzand DBA, programatori de aplicatii ,personal de
management si multe alte tipuri de utilizatori.
 SQL pune la dispozitie comenzi pentru o varietate de tascuri incluzand:
o date interogate
o inserarea,extragerea si stergerea rindurilor intr-un tabel.
o crearea,modificarea si stergerea obiectelor de tip baza de date
o controlul accesului la baza de date si la obiectele de tip baza de date.
o garantarea consistentei bazei de date

La inceput sistemele de management a bazei de date a utilizat un limbaj separat pentru fiecare categorie
in parte.SQL le-a unificat pe toate acestea intr-un singur limbaj.

SQL a devenit un limbaj standard industrial pentru bazele de date relatio- nale . Institutul National
American de Standarde(ANSI) a adoptat SQL ca limbaj standard pentru RDBMS in anul 1986.Organizatia
Internationala de Standarde (ISO) a adoptat deasemenea SQL ca limbaj standard pentru RDBMS.Toate
RDBMS-urile suporta unele forme de SQL si toti vinzatorii de RDBMS intentioneaza sa se alinieze la
standardele ANSI. 

Setul de comenzi SQL

Comanda + Descriere:

SELECT - este comanda cea mai utilizata ; este folosita pentru obtinerea datelor din bazele de date
DML - comenzi ale limbajului de manipulare a datelor.

INSERT - este comanda utilizată pentru a introduce noi înregistrări


UPDATE - este comanda utilizată pentru a schimba rindurile existente
DELETE - este comanda utilizată pentru ștergerea rindurilor nedorite din tabelele bazelor de date
respective.

Următoarele trei comenzi sunt utilizate dinamic pentru a crea , utiliza si sterge orice structura de
date,de exemplu,tabele, expuneri ,indecsi. Ele sunt cunoscute sub numele colectiv DDL sau comenzi ale
limbajelor de definire a datelor.
CREATE
ALTER
DROP

Comenzile
GRANT
REVOKE
sunt utilizate pentru a da sau a lua drepturile de acces pentru bazele de date si structurile din Oracle.

Scrierea comenzilor SQL

Cand scriem comenzi SQL ,este important sa ne reamintim cateva reguli simple pentru construirea unor
declaratii valide care sunt si usor de citit si de editat:

 Comenzile SQL pot fi pe una sau mai multe linii.


 Clauzele sunt uzual plasate pe linii separate.
 Tabelarea poate fi folosita.
 Cuvintele de comanda nu pot fi separate pe mai multe linii.
 Comenzile SQL nu sunt 'case sensitive'.
 O comanda SQL este introdusa la promptul SQL si liniile subsecventelor sunt numarate.
 O singura declaratie poate fi considerata curenta cat timp ea este in buffer si poate fi rulata intr-
un numar de moduri :
o plasand un punct si virgula(;) la sfarsitul ultimei clauze.
o plasand un punct si virgula /slash la ultima linie in buffer.
o plasand un slash(/) la promptul SQL.
o scriind un R[UN] (comanda SQL) la promptul SQL.

Fiecare din urmatoarele declaratii sunt valide:

SELECT * FROM EMP;

SELECT
*
FROM
EMP
;
SELECT *
FROM EMP;

Blocul de interogare de baza

Declaratia SELECT regaseste informatia din baza de date implementand toti operatorii din algebra
relationala .

In cele mai simple forme trebuie sa contina:

1. O clauza SELECT ,care listeaza coloanele pentru afisare astfel incat este esentiala o Proiectie.
2. O clauza FROM care specifica tabela implicata

Pentru a lista toate numerele departamentelor,numele angajatilor si numarul managerilor in tabela EMP
se utilizează comanda:

SELECT DEPTNO,ENAME,MGR
FROM EMP;

De remarcat ca numele coloanelor sunt separate prin spatiu.

Este posibil sa selectam toate coloanele din tabela prin specificarea unui asterix ('*') dupa cuvantul
SELECT .

SELECT *
FROM EMP;

Alte elemente in clauza SELECT

Este posibil sa se includa si alte elemente in clauza SELECT.

 Expresii aritmetice
 Alias-uri de coloane
 Coloane concatenate
 Literali

Toate aceste optiuni ajuta utilizatorul sa ceara date si sa le manipuleze in functie de scopurile
interogarii ; de exemplu,executia calculelor,legarea coloanelor impreuna,sau afisarea sirurilor de litere
din text.

Expresii aritmetice

O expresie este o combinatie de una sau mai multe valori,operatori si functii care sa evalueaza la o
valoare.

Expresiile aritmetice pot contine nume de coloane ,valori numerice constante si operatori aritmetici:
Operatori Descriere
--------- ---------
+ adunare
- scadere
* inmultire
/ impartire

SELECT ENAME, SAL*12, COMM


FROM EMP;

Daca expresia aritmetica contine mai mult decat un operator, prioritatile sunt *,/,la inceput,apoi +,- (de
la stanga la dreapta pentru operatorii de aceeasi prioritate).

In urmatorul exemplu,inmultirea (250*12) este evaluata prima;apoi valoarea salariului este adunata la
rezultatul multiplicarii(3000). Astfel pentru randul lui SMITH avem :800+3000=3800.

SELECT ENAME,SAL + 250 * 12


FROM EMP;
Parantezele pot fi utilizate påntru specificarea ordinii de executie a operatorilor ,daca,de exemplu,
adunarea e dorita inainte de inmultire:

SELECT ENAME,(SAL + 250) * 12


FROM EMP;

Aliasuri de coloana

Cand se afiseaza rezultatul unei interogari,SQL*Plus in mod normal utilizeaza numele coloanelor
selectate ca titlu.In multe cazuri acest nume poate fi criptic sau fara inteles.

Puteti schimba un titlu de coloana utilizand un 'ALIAS'.

Un alias de coloana da unei coloane un nume de titlu alternativ la iesire.

Specificati aliasul dupa coloana in lista selectata.Prin default, titlurile alias vor fi fortate la litere mari si
nu pot contine blankuri,numai daca aliasul este inclus intre ghilimele(" ").

Pentru a afisa titlul de coloana ANNSAL pentru salariul anual insemnand SAL*12,utilizati un alias de
coloana:

SELECT ENAME,SAL*12 ANNSAL,COMM


FROM EMP;

Odata definit ,un alias poate fi utilizat de comenzile SQL care sunt tratate in capitolele 10 si 11. 

Nota: 
Intr-o declaratie SQL ,un alis de coloana poate fi utilizat numai in clauza SELECT.

Operatorul de concatenare

Operatorul de concatenare (||) permite coloanelor sa fie legate cu alte coloane,expresiilor aritmetice
sau valorilor constante sa creeze o expresie de caractere.

Coloanele din cealalta parte a operatorului sunt combinate pentru a obtine o singura coloana.

Pentru a combina EMPNO si ENAME si sa se dea aliasul EMPLOYEE expresiei, introduceti:

SELECT EMPNO||ENAME EMPLOYEE


FROM EMP;

Literali

Un literal este orice caracter ,expresie ,numar inclus in lista lui SELECT care nu este un nume de coloana
sau un alias de coloana.

Un literal in lista lui SELECT este reprezentat de fiecare rand returnat la iesire.Sirurile de literali dintr-un
text cu un format oarecare pot fi incluse in rezultatul interogarii si sunt tratate ca o coloana lista
selectata.

Literalii de tip data calendaristica si caracter pot fi inchisi intre ghilimele simple(');literlalii de tip numar
nu au nevoie de ghilimele simple(').

Urmatoarea declaratie contine literali selectati prin concatenare si printr-un alias de coloana:

SELECT EMPNO||'-'||ENAME EMPLOYEE,


'WORKS IN DEPARTMENT',
DEPTNO
FROM EMP;

Tratarea valorilor nule

Daca unui rand ii lipseste o valoare pentru o anumita coloana ,despre acea valoare se spune ca este
nula.

O valoare nula este o valoare care este sau incorecta,sau necunoscuta,sau inaplicabila.O valoare nula nu
este la fel ca 'zero'.Zero este un numar.Valoarea nula ocupa un octet in reprezentarea interna.
Valoarea nula este tratata corect de catre SQL.

Daca orice valoare de coloana intr-o expresie este nula atunci rezultatul este nul.In urmatoarea
declaratie numai Salesman are un rezultat al salariului:

SELECT ENAME,SAL*12 + COMM ANNUAL_SAL


FROM EMP;

Daca dorim sa obtinem un rezultat pentru toti angajatii,este necesar sa convertim valoarea nula la un
numar . Noi folosim functia NVL pentru a converti o valoare nula la o valoare nenula.

Folositi functia NVL pentru a converti valoarea nula de la declaratia precedenta la 0.

NVL asteapta doua argumente:

1. o expresie
2. o valoare nenula

De notat ca puteti folosi functia NVL pentru a converti un numar nul , data calendaristica sau sir de
caractere la un alt numar , data calendaristica sau sir de caractere de acceasi lungime si de acelasi tip de
date asteptate.

NVL(DATECOLUMN,'01-JAN-88')

NVL(NUMBERCOLUMN,9)

NVL(CHARCOLUMN,'STRING')

Prevenirea selectiei rindurilor duplicate

Daca nu se indica altfel, SQL*Plus afiseaza rezultatul unei interogari fara eliminarea intrarilor duplicate .

Pentru a lista toate numerele de departament din tabela EMP, introduceti:

SELECT DEPTNO
FROM EMP;

Clauza DISTINCT

Pentru eliminarea valorilor duplicate din rezultat, includeti restrictia DISTINCT in comanda
SELECT.Pentru a elimina valorile duplicate afisate in exemplul urmator introduceti:

SELECT DISTINCT DEPTNO


FROM EMP;
Coloane multiple pot fi specificate dupa restrictia DISTINCT si restrictia DISTINCt afecteaza toate
coloanele selectate.

Pentru a afisa valorile distincte ale lui DEPTNO si JOB:

SELECT DISTINCT DEPTNO,JOB


FROM EMP;

Aceasta afiseaza o lista a tuturor combinatiilor diferite de ocupatie si numere de departamente.

De notat ca restrictia DISTINCT poate sa fie referita numai o singura data si trebuie sa urmeze imediat
dupa cuvantul de comanda SELECT.

Clauza ORDER BY

In mod normal ordinea rindurilor intoarse in rezultatul unei cereri este nedefinita .Clauza ORDER BY
poate fi utilizata pentru a sorta rindurile.

Daca o folosim, clauza ORDEY BY trebuie sa fie intotdeauna ultima in declaratia SELECT.

Pentru a sorta dupa ENAME, introduceti:

SELECT ENAME,JOB,SAL*12,DEPTNO
FROM EMP
ORDER BY ENAME;

Ordonarea de default a datelor


Ordinea sortarii de default este ascendenta:

 Valorile numerice cele mai mici primele


 Valorile de tip date calendaristice cele mai mici primele.
 Valorile de tip caracter in ordinea alfabetica.

Inversarea ordinii de default

Pentru a inversa aceasta ordine cuvintul de comanda DESC este specificat dupa numele coloanei in
clauza ORDER BY.

Pentru a inversa ordinea coloanei HIREDATE, deci datele cele mai tirzii sa fie afisate primele:

SELECT ENAME,JOB,HIREDATE
FROM EMP
ORDER BY HIREDATE DESC;

Ordonarea dupa mai multe coloane


Este posibil sa se ordoneze dupa mai multe coloane.Limita este numarul de coloane din tabela.In clauza
ORDER BY se specifica coloanele pentru ordonat separate prin virgula.Daca una sau toate coloanele
trebuie sa fie inversate specificati DESC dupa fiecare coloana.

Pentru a ordona dupa doua coloane si afisa in ordinea inversa a salariului, introduceti:

SELECT DEPTNO,JOB,ENAME
FROM EMP
ORDER BY DEPTNO,SAL DESC;

Pentru a ordona dupa o coloana nu este necesar sa o avem SELECT-ata.

ORDER BY si valorile nule

In Oracle7,valorile nule sunt afisate ultimele pentru secventele ascendente si sint raportate primele cind
rindurile sunt sortate in ordine descendenta.

Atentie: 

Clauza ORDER BY este utilizata intr-o interogare cind se doreste sa se afiseze rindurile intr-o ordine
specifica .Fara clauza ORDER BY randurile sunt returnate intr-o ordine convenita de ORACLE si va trebui
sa ne bazam pe el- ordinea determinata fiind consistenta de la cerere la cerere.De notat ca ordinea de
afisare a rindurilor nu influenteaza ordinea interna a rindurilor asa cum sunt stocate in tabela.

Clauza WHERE

Clauza WHERE corespunde operatorului 'Restrictie' din algebra relationala.

Contine o conditie pe care rindurile trebuie sa o indeplineasca in ordinea afisarii lor.

Clauza WHERE ,daca este folosita , trebuie sa urmeze clauzei FROM :

SELECT coloane
FROM tabela
WHERE anumite conditii sunt intilnite

Clauza WHERE poate compara valori in coloana ,valori literale,expresii aritmetice sau functii.

Clauza WHERE asteapta trei elemente:


1. Un nume de coloana
2. Un operator de comparatie
3. Un nume de coloana, constanta sau lista de valori.

Operatorii de comparatie sunt utilizati in clauza WHERE si pot fi impartiti in doua categorii: logici si SQL. 

Operatorii logici

Acesti operatori verifica urmatoarele conditii:

Operator Semnificatie
-------- ------------
= egal cu
> mai mare decit
>= mai mare sau egal
< mai mic decit
<= mai mic sau egal

Sirurile de caractere si datele calendaristice in clauza WHERE

Coloanele din ORACLE pot avea urmatoarele tipuri:caracter,numar sau data calendaristica.

Sirurile de caractere si datele calendaristice din clauza WHERE trebuie sa fie inchise in ghilimele
simple('). Sirurile de caractere trebuie sa se supra- puna cu valoarea coloanei daca nu, trebuie
modificate de o functie. Utilizati "Functii pe Caractere" din capitolul 4. 

Pentru a afisa numele,numerele,ocupatia si departamentele tuturor functionarilor, introduceti:

SELECT ENAME, EMPNO, JOB, DEPTNO


FROM EMP
WHERE JOB = 'CLERK';

Pentru a gasi toate numele de departamente cu numerele de departament mai mare ca 20, introduceti:

SELECT DNAME, DEPTNO


FROM DEPT
WHERE DEPTNO >20;

Compararea unei coloane cu alta in cadrul aceluiasi rand

Puteti compara o coloana cu o alta coloana in acelasi rand,la fel ca si cu o valoare constanta.
De exemplu ,presupunem ca dorim sa obtinem acei angajati al caror comision estå mai mare decat
salariul lor: 

SELECT ENAME, SAL, COMM


FROM EMP
WHERE COMM> SAL;

Operatori SQL
Sint patru operatori SQL care opereaza pe toate tipuril de date:
Operatori SQL

Operator Semnificatie
-------- ------------
BETWEEN..AND... intre doua valori(inclusiv)
IN(list) compara cu o lista de valori
LIKE compara cu un model de tip caracter
IS NULL estå o valoare nula

Operatorul BETWEEN

Realizeaza teste pentru valori intre,si inclusiv,o valoare minima si o valoare maxima. Presupunind ca
dorim sa vedem angajatii ai caror salariu este intre 1000 si 2000:

SELECT ENAME,SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000;

De notat ca valorile specificate sunt inclusive si ca limita minima trebuie specificata prima.

Operatorul IN

Testeaza valorile dintr-o lista specificata.

Presupunem ca dorim sa gasim angajatii care au unul din cele trei numere de marca(MGR):

SELECT EMPNO, ENAME, SAL, MGR


FROM EMP
WHERE MGR IN (7902,7566,7788);

Daca, caracterele sau datele calendaristice sunt utilizate,ele trebuie introduse intre ghilimele(' ').

Operatorul LIKE

Uneori nu se cunosc valorile exacte pe care le cautam.Utilizand operatorul LIKE este posibil sa selectam
randurile care se potrivesc cu un model specificat de caractere.Operatia de petter-matching a
caracterelor poate fi asemanata cu o cautare 'wild-card'.Doi simboli se pot utiliza la construirea sirului
de cautare.
Simbol Reprezentare
------ ------------
% orice secventa de zero sau mai multe caractere
- un singur caracter oarecare
Pentru a lista toti angajatii al caror nume incepe cu un S:

SELECT ENAME
FROM EMP
WHERE ENAME LIKE 'S%';

Caracterul '_' poate fi utilizat pentru cautarea unui anumit numar de carac- tere.

De exemplu pentru a lista toti angajatii care au un nume exact de patru caractere lungime

SELECT ENAME
FROM EMP
WHERE ENAME LIKE '____';

Semnele '%' si '_'pot fi utilizate in orice combinatie de caractere.

Operatorul IS NULL

Operatorul IS NULL face teste specifice pentru valorile care sunt NULL.

SELECT ENAME,MGR
FROM EMP
WHERE MGR IS NULL;

Negarea expresiilor

Urmatorii operatori fac teste de negatie:

Operator Descriere
--------- ----------
!= diferit de(VAX,UNIX,PC)
^= diferit de(IBM)
<> diferit de(toate o/s)
NOT NUMECOL= diferit de
NOT NUMECOL> mai mic sau egal

Operatori SQL

Operator Descriere
-------- ---------
NOT BETWEEN nu se afla intre doua valori date
NOT IN nu se afla intr-o lista data de valori
NOT LIKE diferit de sirul
IS NOT NULL nu este o valoare nula
Pentru a gasi angajatii ai caror salariu nu este intr-un interval:

SELECT ENAME,SAL
FROM EMP
WHERE SAL NOT BETWEEN 1000 AND 2000;

Pentru a afla acei angajati a caror meserie nu incepe cu M:

SELECT ENAME,JOB
FROM EMP
WHERE JOB NOT LIKE 'M%';

Pentru a afla toti angajatii care au un manager(MGR):

SELECT ENAME,MGR
FROM EMP
WHERE MGR IS NOT NULL;

Nota:

Daca o valoare NULL este utilizata intr-o comparatie ,atunci operatorul de comparatie trebuie sa fie IS
sau IS NOT NULL. Daca acesti operatori nu sunt uti lizati si valoarea NULL este comparata,atunci
rezultatul este intotdeauna FALSE

De exemplu, COMM!=NULL este intotdeauna falsa.Rezultatul este fals deoarece o valoare NULL poate
sa nu fie egala sau diferita cu orice alta valoare alta decat NULL.

De notat ca o astfel de eroare nu este semnalata,rezultatul fiind intotdea- una fals.

Interogarea datelor cu conditii multiple

Operatorii AND sau OR pot fi utilizati pentru a compune expresii logice.

Predicatul AND este adevarat numai daca ambele conditii sunt 'adevarate'; predicatul OR este adevarat
daca cel putin una din conditii este 'adevarata'.

In urmatoarele doua exemple,conditiile sunt aceleasi,dar predicatele difera Priviti cum rezultatul este
dramatic modificat.

Pentru a gasi toti functionarii care castiga intre


1000 si 2000:
SELECT EMPNO,ENAME,JOB,SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000
AND JOB = 'CLERK';

Pentru a afla toti angajatii care sunt si functionari si/sau functionari care castiga intre 1000 si 2000:

SELECT EMPNO,ENAME,JOB,SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000
OR JOB = 'CLERK';

Puteti combina AND sau OR in acceasi expresie logica. Cand AND sau OR apar in aceeasi clauza WHERE,
toti operatorii AND sunt evaluati mai intai si apoi toti operatorii OR. Vom spune ca operatorii AND au o
precedenta mai mare decat OR.

Deoarece AND are o precedenta mai mare decat OR urmatoarea declaratie SQL intoarce toti managerii
cu salarii peste 1500$ si toti vanzatorii.

SELECT EMPNO,ENAME,JOB,SAL,DEPTNO
FROM EMP
WHERE SAL> 1500
AND JOB = 'MANAGER'
OR JOB = 'SALESMAN';

Daca doriti sa selectati toti managerii si vanzatorii cu salarii peste 1500$ puteti introduce:

SELECT EMPNO,ENAME,JOB,SAL,DEPTNO
FROM EMP
WHERE SAL >1500
AND (JOB = 'MANAGER'
OR JOB = 'SALESMAN');

Parantezele specifica ordinea in care operatorii vor fi evaluati. In al doilea exemplu operatorul OR este
evaluat inaintea operatorului AND.

TIPURI DE DATE CARACTER SI CONDITII

ENAME
(VARCHAR2)
___________
WHERE ENAME = 'SCOTT' | |
| SCOTT V V|
| ___|
| SCOTT|____
| |
| MILLER |
| |
~~~~ ~~ ~~~

Oracle nu face umplerea cu blancuri la compararea cu coloanele VARCHAR2

ENAME
(CHAR)
------------
| |
| SCOTT V V|
WHERE ENAME = 'SCOTT' | ....|
| SCOTT|V V|
| |. |
| MILLER| V|
~~~~ ~~~~ ~~

Oracle face umplerea cu blancuri la compararea


cu coloanele CHAR.

Tipurile de date caracter si conditii

Tipurile de baza ale datelor stocate intr-o tabela oracle sunt:caracter, valoare numerica sau data
calendaristica.Vom discuta toate variantele in detaliu mai tarziu.De cate ori rezultatele unei conditii
implica date de tip caracter, acestea pot varia in functie de tipul coloanei;ORACLE inzestreaza coloanela
cu tipul CHAR pentru valori de lungime fixa si cu tipul VARCHAR2 pentru valori de lungime variabila. 
Pentru coloanele cu tipul VARCHAR2 ,Oracle nu umple sirul de comparare si de aceea va face o potrivire
exacta.In primul exemplu,doar un singur rand este intors pentru conditia: 
WHERE ENAME = 'SCOTT'

cand un alt rand stocat in coloana ENAMe are mai multe caractere decat sirul de comparat. 

Pentru coloanele cu tipul CHAR ,oricum,Oraclå face umplere cand valorile coloanelor sunt initial
stocate,facandu-le pe toate de aceeasi lungime.

Aceeasi conditie va intoarce ambele randuri pentru SCOTT ,indiferent de cate spatii de sfarsit au fost
adaugate cand valorile au fost stocate in tabela.

Oracle umple cu blancuri sirul de comparat in cel deal doilea caz si de aceea spatiile stocate sunt
nesemnificative. 
Precedenta operatorilor

Toti operatorii sunt aranjati intr-o ierarhie ceea ce le determina precedenta .Intr-o expresie operatiile
sunt executate in ordinea precedentei lor de la mare la mica.

Cand operatorii au precedenta egala atunci ei se evalueaza de la stanga la dreapta. 

1. Toti operatorii de comparatie si SQL au precedenta egala: =,!


=,<,>,<=,>=,BETWEEN...AND,IN,LIKE,IS NULL.
2. NOT(pentru a inversa rezultatul unei expresii logice.De ex: WHERE not(sal>2000))
3. AND
4. OR.

De fiecare data cand sunteti in dubiu despre care dintre doua operatii vor fi executate mai intai cand o
expresie este evaluata, sunteti liberi sa utilizati parantezele pentru a clarifica semnificatia dorita si
pentru a va asigura ca SQL*Plus face ceea ce doriti. 

Sa presupunem ca doriti sa gasiti toti managerii, din orice departament,si toti functionarii din
departamentul 10:

SELECT *
FROM EMP
WHERE JOB='MANAGER' OR (JOB = 'CLERK' AND DEPTNO = 10);

Parantezele de deasupra sunt necesare, AND are o precedenta mai mare decat OR ,dar ele clarifica
semnificatia expresiei. 

SELECT-Sumar

Urmatoarele clauze sunt inchise in comanda SELECT:

SELECT [DISTINCT] [*,coloana alias],...]


FROM tabela
WHERE conditie(ii)
ORDER BY [coloana,expr] [ASC/DESC];

SELECT
selecteaza cel putin o coloana
Alias
poate fi folosit pentru coloanele din lista selectata
*
desemneza toate coloanele
DISTINCT
poate fi utilizat pentru eliminarea duplicatelor
FROM Tabela
desemneaza tabela din care provin coloanele
WHERE
restrictioneaza cererea la randurile care indeplinesc o conditie.Poate contine valori de
coloane,expresii si literali
AND/OR
poate fi utilizat intr-o clauza WHERE pentru a construi conditii mai complexe. AND are prioritate
peste OR.
()
pot fi utilizate pentru a forta prioritatea
ORDER BY
intotdeauna apare la sfarsit .Specifica ordinea de sortare.Una sau mai multe coloane pot fi
specificate aici.
ASC
ordinea ascendenta este ordinea de sortarå ( implicita) si nu trebuie specificat.
DESC
inverseaza ordinea de sortare de default si trebuie specificat dupa un nume de coloana.

Clauzele pot fi introduse pe linii separate in buffer si tabelarea este utilizata pentru claritate si in
editare. 
2.











2.GeoMania este un magazin micut de animale de unde pot fi achizitionate diferite animale si
hrana pentru acestea.

3. Pentru orice animal din magazin putem identifica: rasa, culoare, varsta, pret si stocul existent. Ex :
bichon alb de 3 luni, 750 lei , 4 catelusi in stoc.

Pentru hrana putem identifica: tipuri de hrana, pretul pe kg si stocul existent. Ex: mancare de caini de
la Purina pentru juniori , 25lei/kg , 50 kg existente.

La magazin lucreaza cativa angajati.Administratorul retine pentru fiecare angajat : CNP-ul, nume si
prenume, adresa, nr de telefon,programul de lucru si salariul.Administratorul recompenseaza fidelitatea
clientilor, punandu-le la dispozitie un card de fidelitate cu care pot beneficia de o reducere de 20% dupa
ce il folosesc de minim 5 ori. Administratorul inregistreaza toate comenzile.Pentru fiecare client va
retine codul cardului.Fiecare comanda are un cod si memoreaza animalul achizitionat sau mancarea
,precum si codul clientului. De fiecare data cand se onoreaza o comanda se actualizeaza stocul ramas.

Managerul poate raspunde oricand la intrebarile:

1.Ce animale au in stoc?

2.Cate tipuri de hrana exista?

3.Care este cel mai tanar, respecitv cel mai batran animal?

4.Care sunt clientii fideli?

5.Care este numarul de angajati?

6.Ce tip de mancare este cel mai bine vandut?

7.Care animal se vinde cel mai greu?

La sfarsitul fiecarei luni se calculeaza suma incasata in magazin si se platesc angajatii.

Asupra datelor memorate se pot efectua urmatoarele operatii:

1.Adaugarea unui nou tip de hrana.

2.Modificarea stocului de animale.

3.Adaugarea/eliminarea unui angajat.


4.
5. create table Animal (
rasa varchar2(40) not null constraint animal_pk primary key,

culoare varchar2(30) not null,

varsta number not null,

pret number not null,

stoc number not null

);

create table Mancare (

tip varchar2(40) not null constraint mancare_pk primary key,

pret number not null,

stoc number not null

);

create table Angajat (

CNP number not null constraint angajat_pk primary key,

nume varchar2(40) not null,

prenume varchar2(40) not null,

adresa varchar2(50) not null,

numar de telefon number not null,

program de lucru number not null,

salariu number not null

);
/

create table petshop (

adresa varchar2(50) not null constraint petshop_pk primary key,


nume varchar2(20) not null
)
create table comanda_animal (
codComandaAnimal number not null constraint comanda_animal_pk primary key,
tipAnimal varchar2(20) not null,
codCardclient number not null
)
create table comanda_mancare (
codComanda number not null constraint comanda_mancare_pk primary key,
tipMancare varchar2(40) not null,
codCardclient number not null,
cantitate number not null
)
create table Client (
codCard number not null constraint client_pk primary key,
nume varchar2(30) not null,
prenume varchar2(30) not null
6.
INSERT INTO ANIMAL values('labrador','negru',2,1100,2)

INSERT INTO ANIMAL values('caine-lup','maro',1,2500,3)

INSERT INTO ANIMAL values('labrador','galben',2,1200,2)


INSERT INTO ANIMAL values('husky','alb',1,3900,1)
INSERT INTO ANIMAL values ('persana', 'maro',1,1000,4)
INSERT INTO ANIMAL values('sphynx', 'crem',1,3478,1)
INSERT INTO MANCARE values('purina_caini',23,50)
INSERT INTO MANCARE values('advanced_caini',24,60)
INSERT INTO MANCARE values ('whiskas',21,46)
INSERT INTO MANCARE values('felix',17,100)
INSERT INTO ANGAJAT values (1456234590761,'Tocila','Sanziana','Soarelui',0784536223,8,20)
INSERT INTO ANGAJAT values(1456544590761,'Craiescu','Nicoleta','Ardealului',0786436782,8,20)
INSERT INTO ANIMAL values('bichon', 'alb',1,900, 10)
7.
8. SELECT tip FROM MANCARE WHERE pret<=10;

SELECT pret FROM MANCARE WHERE tip='Advanced';

SELECT nume FROM ANGAJAT WHERE CNP>=66674;

SELECT * FROM ANIMAL;

SELECT * FROM ANGAJAT;

SELECT adresa FROM PETSHOP WHERE nume='PROVET';


.
9 . Bibliografie:

1)Manual de informatica clasa a XII-a , profil


real. Autori: M. Tatarâm, Corina Achinca, I.
Pestritu, MIOARA GHEORGHE. Editura: Corint
2)Site-ul www.w3schools.com/sql
3)Platforma www.livesql.oracle.com .

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