Documente Academic
Documente Profesional
Documente Cultură
Elev : Profesor
coordonator:
Deliu Cristian Zamfir Sorin
1
1. Introducere………………………………………………………………………….
2. Baze de date………………………………………………………………………….
3.1. Enunt……………………………………………………………………………………………
3.3. Reguli…………..………………………………………………………………………………
2
Misterul care înconjura calculatorul personal a dispărut şi probabil este timpul să depăşim
clişeele clasice. Ştiţi care sunt acestea. PC-ul pe care astăzi îl puteţi ţine într-o mână este la fel
de puternic ca şi calculatoarele de mărimea unei nave de război din anii ’50 care consumau tot
atâta energie cât toate fabricile din America de Nord puse la un loc - ceea ce probabil nu ar fi
prea mult, deoarece acestea ar ieşi prea mototolite din procesul de combinare. Nu mai este
nevoie să apelaţi la sfaturile unui guru ca să cumpăraţi un calculator. Puteţi să cumpăraţi un PC
din aceleaşi magazine din care cumpăraţi scule de pescuit, ciorapi sau maşini de spălat vase.
Copiii dumneavoastră - sau poate chiar dumneavoastră - probabil nici nu ştiu cum ar arăta
lumea fără calculatoare.
Unul dintre cele mai importante motive ale acestei popularităţi este faptul că PC-urile
au devenit atât de uşor de folosit. Mişcaţi puţin mouse-ul şi puteţi să editaţi o secvenţă video
sau să trimiteţi un mesaj electronic emirului din Bahrain. Învăţaţi să folosiţi un singur program
şi deja aveţi o imagine solidă a modului în care funcţionează toate celelalte.
Dar această uşurinţă de folosire nu este decât o imensă faţadă. În spatele scenei, atât
programele, cât şi calculatoarele necesare pentru a le rula sunt mult mai complicate decât
produsele, oricum complexe, de acum câţiva ani. În ultimul deceniu, programele au evoluat de
o mie de ori şi, din fericire, calculatoarele sunt de o mie de ori mai puternice. Este o minune,
dacă nu chiar un miracol - presupunând, desigur, că aceţi deja calculatorul potrivit pentru
programul pe care vreţi să-l rulaţi.
Calculatorul nu este ceva de care să vă fie teamă şi nu trebuie să fie un mister. Este o
maşină, şi chiar una destul de simplă. O maşină pe care puteţi învăţa să o stăpâniţi. Dacă există
ceva care îndepărtează oamenii de încercarea de a înţelege PC-urile, este elementul mistic din
jurul calculatoarelor.
3
Şi totuşi PC-urile sunt minunate, datorită modalităţilor prin care vă fac viaţa şi munca
mai uşoare şi uneori, mai distractive. Devenind din ce în ce mai puternice în ultimii ani,
calculatoarele au devenit din ce în ce mai minunate, preluând noi sarcini, precum editarea
informaţiilor video în Web sau rularea unor jocuri care tind să devină mai realiste decât însăşi
realitatea.
Ceea ce face un PC să fie util nu este partea hardware. Fără nici un ajutor, un PC este
mai leneş decât o zi fierbinte de vară la ţară. Nu face nimic alceva decât ceea ce îi spuneţi să
facă. Departe de a-şi folosi vasta inteligenţă într-un complot pentru preluarea controlului
asupra lumii, a unei nave spaţiale sau a timpului dumneavoastră liber, un PC nu este câtuşi de
puţin imaginativ. Nu face decât să vă aştepte ordinele şi să le execute ca un sclav. Nici măcar
unul dintre toate PC-urile din întreaga lume nu a avut vreodată un gând original. Tot ceea ce
fac PC-urile s-a născut în mintea umană.
4
Principiile modelului relaţional şi bazele de date relaţionale au fost pentru prima dată
prezentate de matematicianul (de la centrul de cercetări al IBM) Dr. E. F.Codd, în iunie 1970,
când a publicat un articol numit "Un model relaţional pentru marile bănci de date" (în original A
Relational Model of Data for Large Shared Databanks ). In respectivul articol, el a propus
modelul relaţional pentru sistemele de baze de date. Trebuie spus că şi până atunci fuseseră
manipulate şi prelucrate date economice, cataloage ale bibliotecilor, fişiere de personal... însă
într-un mod mai puţin formalizat, neunitar. Era de fapt pe vremea când portabilitatea aplicaţiilor
de pe un sistem de calcul pe altul era încă un vis, când majoritatea aplicaţiilor care manevrau
seturi mari de date se programau în limbaje precum COBOL, Fortran, PL/1, Algol.
Modelul reţea, folosind aparatul teoriei mulţimilor, s-a dovedit mai general, incluzând
modelul ierarhic ca un caz particular al bazei de date de tip reţea.
Treptat, modelul relaţional s-a extins, dovedindu-de mai simplu şi mai eficient.
In Internet (pe Web) vorbim despre Baze de Date Distribuite, plasate pe mai multe
servere şi accesibile de pe diferite staţii de la distanţă. Este vorba de un nivel mai ridicat de
complexitate al gestiunii informaţiilor şi al aplicaţiilor specifice, dar, în majoritatea cazurilor
este vorba şi atunci de Baze de Date Relaţionale.
Mai mult, căutările în World Wide Web, indiferent care motor de căutare îl folosim, nu
sunt decât căutări în bazele de date construite de aceste motoare de căutare cu datele colectate în
procesul de investigare al paginilor Web accesibile. Iar diferenţele pe care, eventual, le sesizăm
în răspunsurile diferitelor motoare de căutare depind tocmai de modul în care sunt construite şi
întreţinute respectivele baze de date.
5
Sunt aici patru concepte care trebuie reţinute şi înţelese:
1. tabelele
2. coloanele tabelului
3. rândurile tabelului
4. câmpurile din tabel, de pe o anumită coloană şi linie.
Tabela CLIENŢI
--------------------------------------------------
| NrS NUME STARE ORAS |
|------------------------------------------------|
| S1 Ionescu 20 LONDRA |
| S2 Popescu 10 PARIS |
| S3 Teodorescu 30 PARIS |
--------------------------------------------------
Tabela PĂRŢI
---------------------------------------------------------
| NrP NUMEP CULOARE GREUTATE ORAS |
|-------------------------------------------------------|
| P1 NIT ROSU 12 LONDRA |
| P2 PIRON VERDE 17 PARIS |
| P3 SURUB ALBASTRU 17 ROME |
| P4 SURUB ROSU 14 LONDON |
---------------------------------------------------------
^
coloană
Tabela ORDINI
-------------------
| NrS NrP QTY |
|-----------------|
| S1 P1 300 |
| S1 P2 200 |
nd--------->| S1 P3 400 |
| S2 P1 300 |
| S2 P2 400 --|----câmp
| S3 P3 200 |
-------------------
Modelul relaţional al bazei de date imită procesele unei ramuri a algebrei, cunoscute sub
numele de "Algebră relaţională". Aceste procese implică:
6
relaţii, a unui tabel, va fi un nou tabel în care se păstrează doar anumite linii. Iar proiecţia unei
relaţii - unui tabel - va fi un nou tabel în care se păstrează doar anumite coloane.
Operatorii relaţionali
Operatorul
Descrierea
Relaţional
Iată un exemplu:
PRODUS
----------------- ------------------ --------------------------------
| Ionescu | | Profesor | | Ionescu | Profesor |
| Popescu | produs | Cercetător |------>| Ionescu | Cercetător |
| Iliescu | ------------------ | | |
----------------- | Popescu | Profesor |
| Popescu | Cercetător |
| | |
| Iliescu | Profesor |
| Iliescu | Cercetător |
--------------------------------
JOIN
7
----------------- -------------------- -----------------------------------
| Iliescu | 10 | | 10 | Secretariat | | Iliescu | 10 | 10 | Secretariat|
| Ţopescu | 10 | J | 20 | Cercetare |-->| Ţopescu | 10 | 10 | Secretariat|
| Ionescu | 20 | | 30 | Vânzări | | Ionescu | 20 | 20 | Cercetare |
| Ştefan | 30 | | 40 | Marketing | | Ştefan | 30 | 30 | Vânzări |
----------------- -------------------- ------------------------------------
SQL
• este limbajul utilizat pentru a accesa o bază de date relaţională;
• poate fi utilizat atunci când accesul la baza de date este necesar, de fiecare
instrument de gestiune a bazelor de date (Access, Oracle, SQL-Server, MySQL,...);
• este un limbaj simplu, ne-procedural, cu comenzi intuitive în limba engleză;
• este un limbaj standard pentru bazele de date.
Vorbind despre SQL, în multe cărţi se spune SQL = Structured Querry Language. Dar
SQL nu este un limbaj structurat în sensul structurării limbajelor de programare. De fapt, curând
după apariţia lucrării lui Codd, la IBM s-a realizat un sistem prototip pentru baze de date
relaţionale. S-a numit System R şi se baza pe un set de comenzi către baza de date, set de
8
comenzi numit SEQUEL (Structured English QUEry Language). Cu alte cuvinte un subset de
cereri către baza de date formulate strcturat în engleză. A fost punctul de plecare pentru SQL,
care a fost standardizat ca limbaj pentru bazele de date independent de sistemul de gestiune şi
de platforma de calcul. De aceea s-a şi scurtat numele, pentru a nu mai apare confuzii cu System
R şi cu vechiul limbaj SEQUEL.
O primă standardizare a SQL s-a petrecut încă din 1986, când au apărut specificaţiile
ANSI (American National Standards Institute), extinse în standardizarea ISO din 1989, apoi în
1992 şi încă mai recent, în 1999.
Vom vedea că, în sistemul MySQL (de fapt în pachetul PHP, MySQL, Apache Web
server, pe care-l vom studia mai aprofundat) avem funcţii şi rutine speciale destinate scrierii
unor programe cu comenzi SQL, adică înglobării SQL într-un secvenţă procedurală structurată.
INTRODUCERE IN SQL
Este vorba de o introducere în limbajul de interogare utilizat pentru a accesa o bază de
date.
In scurt timp SQL devine un standard industrial pentru bazele de date relaţionale.
Institutul National American de Standarde (ANSI) l-a adoptat ca limbaj standard pentru
gestiunea bazelor de date (RDBMS), încă în anul 1986. Organizaţia Internaţională de Standarde
(ISO) a adoptat deasemenea SQL ca limbaj standard pentru RDBMS. Toate RDBMS-urile
9
suportă unele forme de SQL şi toţi vânzătorii de astfel de sisteme s-au aliniat sau intenţionează
să se alinieze la standardele ANSI. Asta nu înseamnă că nu mai apar diferenţe. Chiar şi la
produsele aceleaşi firme, Microsoft Access şi SQL Server, pot fi semnalate diferenţe în
implementarea limbajului SQL.
10
Primul pentru crearea structurii de bază de date, al doilea, după ce structura
există, pentru a adăuga date în tabele şi pentru a le manipula. A treia componentă
oferă posibilitatea de a proteja (securiza) datele.
11
• Cuvintele de comandă nu pot fi separate pe mai multe linii.
• Comenzile SQL pot fi scrise fie cu majuscule fie cu minuscule (nu sunt 'case
sensitive').
• O comandă SQL este introdusă la prompterul SQL, iar liniile subsecvenţelor
sunt numerotate.
• O singură declaraţie poate fi considerată curentă, cât timp ea este într-un
buffer şi poate fi rulată într-un anumit număr de moduri :
o plasând un punct şi virgulă(;) la sfârşitul ultimei clauze.
o plasând un punct şi virgulă urmat de semnul / (slash) pe ultima linie în
buffer.
o plasând un slash (/) la prompterul SQL.
o scriind comanda SQL R[UN] la prompterul SQL.
Comenzile pot fi deci scrise, spre exemplu, în oricare din următoarele forme:
SELECT
*
FROM
EMP;
SELECT *
FROM EMP;
Declaraţia SELECT regăseşte informaţia din baza de date, putând îngloba şi unul sau
mai mulţi operatori din algebra relaţională.
12
10 CLARK 7839
20 SCOTT 7566
10 KING
30 TURNER 7698
20 ADAMS 7788
30 JAMES 7698
20 FORD 7566
10 MILLER 7782
Este posibil să selectăm toate coloanele din tabelă prin specificarea unui asterix (*) după
cuvântul SELECT .
• Expresii aritmetice
• Alias-uri de coloane
• Coloane concatenate
• Litere sau şiruri de caractere
Expresii aritmetice
13
Expresiile aritmetice pot conţine nume de coloane, valori numerice constante şi
operatori aritmetici:
Operatori Descriere
--------- ---------
+ adunare
- scădere
* înmulţire
/ împărţire
Daca expresia aritmetică conţine mai mult decât un operator, atunci priorităţile sunt *, /,
la început, apoi +, - (de la stânga la dreapta pentru operatorii cu aceeaşi prioritate).
In următorul exemplu, înmulţirea (250*12) este evaluată prima; apoi valoarea salariului
este adunată la rezultatul multiplicării(3000). Astfel pentru rândul lui SMITH avem :
800+3000=3800.
Alias-uri de coloană
Specificaţi aliasul după coloană, în lista selectată. Din oficiu, titlurile de tip alias vor fi
scrise forţat cu litere mari şi nu pot conţine spaţii (blankuri), numai dacă aliasul este inclus între
ghilimele(" ").
Pentru a afişa titlul de coloană ANNSAL. pentru salariul anual, însemnând SAL*12,
utilizaţi un alias de coloană:
Odată definit, un alias poate fi utilizat de alte comenzi, precum cele din SQL-Plus.
14
Intr-o declaraţie SQL, un alias de coloană poate fi utilizat numai în clauza SELECT.
Operatorul de concatenare
Coloanele din cealalta parte a operatorului sunt combinate pentru a obtine o singura
coloana.
EMPLOYEE
-----------------
7369SMITH
7499ALLEN
7521WARD
7566JONES
7654MARTIN
7698BLAKE
7782CLARK
7788SCOTT
7839KING
7844TURNER
7876ADAMS
7900JAMES
7902FORD
7934MILLER
Dacă unui rând 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 în
reprezentarea interna.
Dacă orice valoare de coloana într-o expresie este nula atunci rezultatul este nul. In
urmatoarea declaraţie numai Salesman are un rezultat al salariului:
ENAME ANNUAL_SAL
--------- ----------
15
SMITH
ALLEN 19500
WARD 15500
JONES
MARTIN 16400
BLAKE
CLARK
SCOTT
KING
TURNER 18000
ADAMS
JAMES
FORD
MILLER
Dacă dorim să obtinem un rezultat pentru toţi angajaţii, este necesar sa convertim
valoarea nula la un numar . Noi folosim funcţia NVL pentru a converti o valoare nula la o
valoare nenula.
De notat ca puteţi folosi funcţia NVL pentru a converti un numar nul, data
calendaristica sau şir de caractere la un alt numar, data calendaristica sau sir de
caractere de acceaşi lungime şi de acelaşi tip de date asteptate.
NVL(DATECOLUMN, '01-JAN-88')
NVL(NUMBERCOLUMN, 9)
NVL(CHARCOLUMN, 'STRING')
16
Dacă nu se indică altfel, SQL*Plus afişează rezultatul unei interogări fără
eliminarea intrărilor duplicate .
SELECT DEPTNO
FROM EMP;
DEPTNO
------
20
30
30
20
30
30
10
20
10
30
20
30
20
10
Clauza DISTINCT
DEPTNO
------
10
20
30
DEPTNO JOB
------ ---------
10 CLERK
10 MANAGER
10 PRESIDENT
17
20 ANALYST
20 CLERK
20 MANAGER
30 CLERK
30 MANAGER
30 SALESMAN
De notat că restricţia DISTINCT poate să fie referită numai o singură dată şi trebuie să
urmeze imediat după cuvântul de comandă SELECT.
Clauza ORDER BY
18
Inversarea ordinii predefinite
Pentru a inversa această ordine, cuvântul de comandă DESC este specificat
după numele coloanei în clauza ORDER BY.
Pentru a inversa ordinea coloanei HIREDATE, deci datele cele mai târzii să fie afişate
primele, introduceţi:
Pentru a ordona după doua coloane şi afişa în ordinea inversa a salariului, introduceţi:
19
20 CLERK ADAMS
20 CLERK SMITH
30 MANAGER BLAKE
30 SALESMAN ALLEN
30 SALESMAN TURNER
30 SALESMAN WARD
30 SALESMAN MARTIN
30 CLERK JAMES
Pentru a ordona după o coloana nu este necesar să o avem selectata.
Clauza ORDER BY este utilizată într-o interogare cind se doreste să se afişeze rindurile
într-o ordine specifica . Fara clauza ORDER BY rândurile sunt returnate într-o ordine convenita
de ORACLE şi va trebui să ne bazam pe el- ordinea determinată fiind consistenta de la cerere la
cerere. De notat ca ordinea de afişare a rindurilor nu influenteaza ordinea interna a rindurilor asa
cum sunt stocate în tabela.
Clauza WHERE
1. Un nume de coloana
2. Un operator de comparaţie
3. Un nume de coloana, constanta sau lista de valori.
Operatorii logici
Operator Semnificaţie
-------- ------------
= egal cu
20
> mai mare decit
>= mai mare sau egal
< mai mic decit
<= mai mic sau egal
Sirurile de caractere şi datele calendaristice din clauza WHERE trebuie sa fie închise în
ghilimele simple('). Sirurile de caractere trebuie să se supra- puna cu valoarea coloanei daca nu,
trebuie modificate de o funcţie. Utilizati "Funcţii pe Caractere" din capitolul 4.
Pentru a găsi toate numele de departamente cu numerele de departament mai mare ca 20,
introduceţi:
DNAME DEPTNO
---------- ------
SALES 30
OPERATIONS 40
De exemplu, presupunem ca dorim să obtinem acei angajaţi al caror comision estĺ mai
mare decat salariul lor:
21
ENAME SAL COMM
------ -------- --------
MARTIN 1, 250. 00 1, 400. 00
Operatori SQL
Operatori SQL
Operator Semnificaţie
-------- ------------
BETWEEN. . AND. . . între 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
Presupunind ca dorim să vedem angajaţii ai caror salariu este între 1000 şi 2000:
ENAME SAL
------- ----------
ALLEN 1, 600. 00
WARD 1, 250. 00
MARTIN 1, 250. 00
TURNER 1, 500. 00
ADAMS 1, 100. 00
MILLER 1, 300. 00
Operatorul IN
Presupunem ca dorim să gasim angajaţii care au unul din cele trei numere de
marca(MGR):
SELECT EMPNO, ENAME, SAL, MGR
FROM EMP
WHERE MGR IN (7902, 7566, 7788);
22
7369 SMITH 800. 00 7902
7788 SCOTT 3, 000. 00 7566
7876 ADAMS 1, 100. 00 7788
7902 FORD 3, 000. 00 7566
Operatorul LIKE
Simbol Reprezentare
------ ------------
% orice secventa de zero sau mai multe caractere
- un singur caracter oarecare
Pentru a lista toţi angajaţii al caror nume începe cu un S, introduceţi:
ENAME
--------
SMITH
SCOTT
Caracterul '_' poate fi utilizat pentru cautarea unui anumit numar de carac-
tere.
De exemplu pentru a lista toţi angajaţii care au un nume exact de patru caractere
lungime:
ENAME
-----
WARD
KING
FORD
Operatorul IS NULL
23
Operatorul IS NULL face teste specifice pentru valorile care sunt NULL.
ENAME MGR
------ ----
KING
Negarea expresiilor
Urmatorii operatori fac teste de negaţie:
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 între doua valori date
NOT IN nu se afla într-o lista dată de valori
NOT LIKE diferit de şirul
IS NOT NULL nu este o valoare nula
Pentru a găsi angajaţii ai caror salariu nu este într-un interval, introdu- ceţi:
ENAME SAL
--------- --------
SMITH 800. 00
JONES 2, 975. 00
BLAKE 2, 850. 00
CLARK 2, 450. 00
SCOTT 3, 000. 00
KING 5, 000. 00
JAMES 950. 00
FORD 3, 000. 00
ENAME JOB
24
-------- --------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
MARTIN SALESMAN
SCOTT ANALYST
KING PRESIDENT
TURNER SALESMAN
ADAMS CLERK
JAMES CLERK
FORD ANALYST
MILLER CLERK
ENAME MGR
------- -----
SMITH 7902
ALLEN 7698
WARD 7698
JONES 7839
MARTIN 7698
BLAKE 7839
CLARK 7839
SCOTT 7566
TURNER 7698
ADAMS 7788
JAMES 7698
FORD 7566
MILLER 7782
Predicatul AND este adevărat numai daca ambele condiţii sunt 'adevărate'; predicatul
OR este adevărat daca cel putin una din condiţii este 'adevărata'.
In urmatoarele doua exemple, condiţiile sunt aceleasi, dar predicatele difera. Priviti cum
rezultatul este dramatic modificat.
Pentru a găsi toţi funcţionarii care câştigă între 1000 şi 2000, introduceţi:
SELECT EMPNO, ENAME, JOB, SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000
AND JOB = 'CLERK';
25
EMPNO ENAME JOB SAL
---- ------- -------- --------
7876 ADAMS CLERK 1, 100. 00
7934 MILLER CLERK 1, 300. 00
Puteţi combina AND sau OR în acceaşi expresie logica. când AND sau OR apar in
aceeaşi clauza WHERE, toţi operatorii AND sunt evaluaţi mai întai şi apoi toţi operatorii OR.
Vom spune ca operatorii AND au o precedenta mai mare decat OR.
Deoarece AND are o precedenta mai mare decat OR urmatoarea declaraţie SQL intoarce
toţi managerii cu salarii peste 1500$ şi toţi vânzătorii.
Daca doriti să selectaţi toţi managerii şi vânzătorii cu salarii peste 1500$ puteţi
întroduce:
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
FROM EMP
WHERE SAL >1500
AND (JOB = 'MANAGER'
OR JOB = 'SALESMAN');
26
EMPNO ENAME JOB SAL DEPTNO
----- ------ --------- -------- ------
7499 ALLEN SALESMAN 1, 600. 00 30
7566 JONES MANAGER 2, 975. 00 20
7698 BLAKE MANAGER 2, 850. 00 30
7782 CLARK MANAGER 2, 450. 00 10
27
când un alt rând stocat în coloana ENAME are mai multe caractere decat şirul de
comparat.
Pentru coloanele cu tipul CHAR, oricum, Oracle face umplere când valorile coloanelor
sunt iniţial stocate, facându-le pe toate de aceeaşi lungime.
Aceeaşi condiţie va întoarce ambele rânduri pentru SCOTT, indiferent de cate spaţii de
sfârsit au fost adaugate când valorile au fost stocate în tabela.
Oracle umple cu blancuri şirul de comparat în cel de al doilea caz şi de aceea spaţiile
stocate sunt nesemnificative.
Precedenta operatorilor
De fiecare dată când sunteţi în dubiu despre care dintre doua operaţii vor fi executate
mai întai când o expresie este evaluata, sunteţi liberi să utilizaţi parantezele pentru a clarifica
semnificatia dorita şi pentru a va asigura ca SQL*Plus face ceea ce doriti.
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 închise în comanda SELECT:
28
SELECT - selecteaza cel putin o coloana
Clauzele pot fi introduse pe linii separate în buffer şi tabelarea este utilizată pentru
claritate şi în editare.
Logarea la SQL*Plus
SQL*Plus
• formatarea rezultatelor
• setarea optiunilor
• editarea şi stocarea declaraţiilor SQL
Odată ce v-aţi logat la sistemul vostru de operare, sunt 3 moduri pentru a va loga la
SQL*Plus:
1. SQLPLUS
o Veţi vedea după aceasta un mesaj ca acesta:
29
o SQL*Plus: Version 3. 1. 1 Production on Mon Oct 4 1993 Copyright (c)
1992, Oracle Corporation, California, USA. All rights reserved. Enter
Username:
o Introduceţi numele vostru de user şi apasaţi RETURN: SQL*Plus va
afişa promptul :"Enter Password:". Introduceţi parola voastra şi
apasaţi din nou RETURN.
o Pentru protecţia voastra, parola nu va apare pe ecran. SQL*Plus va
afişa promptul sau: SQL>
o Aceasta indica linia de comanda . Acolo sunt doua feluri de comenzi şi
puteţi întroduce pe acesta linie de comanda:comenzi SQL sau comenzi
SQL*Plus.
2. SQLPLUS username
o Veţi fi îndemnaţi să va daţi parola.
3. SQLPLUS username/password
o Veţi fi logaţi la SQL*Plus. In acest caz parolz v a fi afişata.
30
Comenzile SQL (precum SELECT) sunt mijloace de acces la date prin kernelul
Oracle. Comenzile SQL sunt utilizate în special pentru controlul mediului,
formatarea rezultatelor interogarilor şi controlul fişierelor. Comenzile identificate
aici sunt amestecate şi trebuie să le folosiţi în următoarele exerciţii.
Comenzile SQL sunt introduse la promptul SQL> pe o linie, ele nu vor deschide un
buffer.
Comanda + Descriere
31
Se doreste informatizarea activitatiilor unei
agentii de transport.Despre abonatii agentiei (persoane
fizice) se cunosc urmatoarele date : CNP-ul, nume,
prenume, adresa, nr. Telefon, e-mail.
32
Pe raza municipiului Cluj-Napoca functioneaza 90 de puncte de
vinzare a biletelor si abonamentelor din care:
33
Agentie
# id Angajat
* adresa # cnp
are * nume
* nr_telefon
o e_mail * functie
lucreaza
* salariu
are * data_angajarii
o nr_telefon
are o e_mail
apartine
Abonament
Client
este abonat
# id_abonament
# nume
*denumirea
#id_abonament
*data_expirarii
*adresa
*pret
o nr_telefon
Depozit
# id
* adresa
* nr_telefon
o e_mail
34
Angajat
# cnp
are * nume
* functie lucreaza
* salariu
are * data_angajarii
o nr_telefon
are o e_mail
apartine apartine
Lista2
Lista1
#id_lista
#id_lista
apartine apartine
este vandut
Produs
Client
# id_produs
#id
*denumirea
* nume
*data_expirarii
*adresa cumpara
*pret
o nr_telefon
35
DATELE CONTINUTE DE TABELUL ABONAMENTE
36
DATELE CONTINUTE DE TABELUL AGENTII
37
DATELE CONTINUTE DE TABELUL ANGAJATI
38
DATELE CONTINUTE DE TABELUL CLIENTI
39
1. Sa se afiseze lista tuturor agentiilor.
2. Sa se afiseze adresa agentieicu numarul de telefon
0241254356.
3. Sa se afiseze functia si salariul angajatului Marinescu
Ionel.
4. Sa se afiseze numarul angajatilor cu o vechime in
agentie mai mare de 3 ani.
5. Sa se calculeze suma de bani necesara pentru salarii.
6. Sa se afiseze toate abonamentele ordonate
descrescator dupa pret.
7. Sa se afiseze abonamentele cu termenul de valabilitate
expirat.
8. Sa se afiseze lista clientilor agentiei.
40
1. select * from agentii
3. select nume, functie , salariu from angajati where nume=’ Popescu Ion’
41
4. select count(*) from angajati where sysdate-data_angajarii>3
42
7. select * from abonamente where "DATA_EXPIRARII" >= sysdate + 700
43
44
45