Documente Academic
Documente Profesional
Documente Cultură
Este vorba de o introducere n limbajul de interogare utilizat pentru a accesa o baz de date.
La scurt timp dup ce E. F. Codd a descris structura bazei de date relaionale, n colectivul de
la IBM s-a realizat un prototip de sistem de management al bazelor de date relaionale, numit
System R, mpreun cu un limbaj dedicat (pentru a crea i a opera cu bazele de date
relaionale), numit SEQUEL (Structured English QUEry Language). Expresiile din SEQUEL
seamn cu propoziiile din limba englez, fiind desigur mai structurate. In paralel firma IBM
a scos pe pia produse cu baze de date relaionale, bazate pe System R. Dar cu un limbaj
puin diferit de SEQUEL. Astfel c l-a botezat SQL, eliminnd vocalele din Sequel i trecnd
la pronunia "es-qu-el". Chiar dac sunt autori care consider c SQL provine de la Structured
Query Language, asta nu-i adevrat.Iar SQL nu are nimic de a face cu limbajele de
programare structurat, precum Pascal sau C++.
In 1979, Corporaia Oracle introduce prima implementare a SQL n variant comercial.
In scurt timp SQL devine un standard industrial pentru bazele de date relaionale. Institutul
National American de Standarde (ANSI) l-a adoptat ca limbaj standard pentru gestiunea
bazelor de date (RDBMS), nc n anul 1986. Organizaia Internaional de Standarde (ISO) a
adoptat deasemenea SQL ca limbaj standard pentru RDBMS. Toate RDBMS-urile suport
unele forme de SQL i toi vnztorii de astfel de sisteme s-au aliniat sau intenioneaz s se
alinieze la standardele ANSI. Asta nu nseamn c nu mai apar diferene. Chiar i la produsele
aceleai firme, Microsoft Access i SQL Server, pot fi semnalate diferene n implementarea
limbajului SQL.
SQL poate fi folosit n dou moduri:
o
o
o
o
o
Primul pentru crearea structurii de baz de date, al doilea, dup ce structura exist, pentru a
aduga date n tabele i pentru a le manipula. A treia component ofer posibilitatea de a
proteja (securiza) datele.
PRIMARY KEY,
(15),
(20)
(5),
(25),
(25),
(2),
(15) );
NOT NULL,
N. B. Am menionat doar principalele comenzi din SQL. Comanda cea mai intens folosit,
SELECT, urmeaz a fi prezentat pe larg mai jos. Pentru o list complet a comenzilor trebuie
parcurs Manualul de Referin al Limbajului SQL.
Comenzile pot fi deci scrise, spre exemplu, n oricare din urmtoarele forme:
SELECT * FROM EMP;
SELECT
*
FROM
EMP
;
SELECT *
FROM EMP;
In acest document, pentru claritate, comenzile SQL sunt sparte n clauze.
DEPTNO,
EMP;
ENAME
---------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
ENAME,
MGR
MGR
----7902
7698
7698
7839
7698
7839
7839
7566
7698
7788
7698
7566
7782
ENAME
------SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
*
EMP;
JOB
MGR
------- ---CLERK
7902
SALESMAN 7698
SALESMAN 7698
MANAGER 7839
SALESMAN 7698
MANAGER 7839
MANAGER 7839
ANALYST 7566
PRESIDENT
SALESMAN 7698
CLERK
7788
CLERK
7698
ANALYST 7566
HIREDATE
SAL
COMM DEPTNO
--------- --------- ------- -----13-JUL-83
800. 00
20
15-AUG-83 1, 600. 00
300. 00
30
26-MAR-84 1, 250. 00
500. 00
30
31-OCT-83 2, 975. 00
20
05-DEC-83 1, 250. 00 1. 400. 00
30
11-JUN-84 2, 850. 00
30
14-MAY-84 2, 450. 00
10
05-MAR-84 3, 000. 00
20
09-JUL-84 5, 000. 00
10
04-JUN-84 1, 500. 00
. 00
30
04-JUN-84 1, 100. 00
20
23-JUL-84
950. 00
30
05-DEC-83 3, 000. 00
20
Expresii aritmetice
Alias-uri de coloane
Coloane concatenate
Toate aceste opiuni ajut utilizatorul s cear date i s le manipuleze n funcie de scopurile
interogrii; de exemplu, execuia calculelor, legarea coloanelor impreun, sau afiarea
irurilor de litere din text.
Expresii aritmetice
O expresie este o combinaie de una sau mai multe valori, operatori i funcii, care se
evalueaz la o valoare.
Expresiile aritmetice pot conine nume de coloane, valori numerice constante i operatori
aritmetici:
Operatori
--------+
*
/
SELECT
FROM
Descriere
--------adunare
scdere
nmulire
mprire
ENAME,
EMP;
SAL*12,
COMM
Daca expresia aritmetic conine mai mult dect un operator, atunci prioritile sunt *, /, la
nceput, apoi +, - (de la stnga la dreapta pentru operatorii cu aceeai prioritate).
In urmtorul exemplu, nmulirea (250*12) este evaluat prima; apoi valoarea salariului este
adunat la rezultatul multiplicrii(3000). Astfel pentru rndul lui SMITH avem
:800+3000=3800.
SELECT ENAME,
FROM
EMP;
SAL + 250 * 12
ENAME,
EMP;
(SAL + 250) * 12
Alias-uri de coloan
Cnd se afieaz rezultatul unei interogri, n mod normal se utilizeaz numele coloanelor
selectate ca titlu. In multe cazuri acest nume poate fi criptic sau fr neles.
Putem schimba un titlu de coloan utiliznd un 'ALIAS'.
Un alias de coloan d unei coloane un nume de titlu alternativ la ieire.
Specificai aliasul dup coloan, n lista selectat. Din oficiu, titlurile de tip alias vor fi scrise
forat cu litere mari i nu pot conine spaii (blankuri), numai dac aliasul este inclus ntre
ghilimele(" ").
Pentru a afia titlul de coloan ANNSAL. pentru salariul anual, nsemnnd SAL*12, utilizai
un alias de coloan:
SELECT
FROM
ENAME,
EMP;
SAL*12 ANNSAL,
COMM
Odat definit, un alias poate fi utilizat de alte comenzi, precum cele din SQL-Plus.
Not:
Intr-o declaraie SQL, un alias de coloan poate fi utilizat numai n clauza SELECT.
Operatorul de concatenare
Operatorul de concatenare (||) permite coloanelor s fie legate cu alte coloane, iar
expresiilor aritmetice sau valorilor constante s creeze o expresie de caractere.
Coloanele din cealalta parte a operatorului sunt combinate pentru a obtine o singura
coloana.
Pentru a combina EMPNO i ENAME i s se dea aliasul EMPLOYEE expresiei,
introducei:
SELECT
FROM
EMPNO||ENAME
EMP;
EMPLOYEE
EMPLOYEE
------------------------------------------------------7369SMITH
7499ALLEN
7521WARD
7566JONES
7654MARTIN
7698BLAKE
7782CLARK
7788SCOTT
7839KING
7844TURNER
7876ADAMS
7900JAMES
7902FORD
7934MILLER
Literali
Un literal este orice caracter, expresie, numar inclus n lista lui SELECT care nu este un
nume de coloana sau un alias de coloana.
Un literal n lista lui SELECT este reprezentat de fiecare rnd returnat la iesire. Sirurile
de literali dintr-un text cu un format oarecare pot fi incluse in rezultatul interogarii i
sunt tratate ca o coloana lista selectata.
Literalii de tip dat calendaristica i caracter pot fi nchisi ntre ghilimele
simple(');literlalii de tip numar nu au nevoie de ghilimele simple(').
Urmatoarea declaraie conine literali selectai prin concatenare i printr-un alias de
coloana:
SELECT
FROM
EMPNO||'-'||ENAME EMPLOYEE,
'WORKS IN DEPARTMENT',
DEPTNO
EMP;
EMPLOYEE
'WORKS IN DEPARTMENT'
------------------ -------------------7369-SMITH
WORKS IN DEPARTMENT
7499-ALLEN
WORKS IN DEPARTMENT
7521-WARD
WORKS IN DEPARTMENT
7566-JONES
WORKS IN DEPARTMENT
7654-MARTIN
WORKS IN DEPARTMENT
7698-BLAKE
WORKS IN DEPARTMENT
7782-CLARK
WORKS IN DEPARTMENT
7788-SCOTT
WORKS IN DEPARTMENT
7839-KING
WORKS IN DEPARTMENT
7844-TURNER
WORKS IN DEPARTMENT
7876-ADAMS
WORKS IN DEPARTMENT
7900-JAMES
WORKS IN DEPARTMENT
7902-FORD
WORKS IN DEPARTMENT
7934-MILLER
WORKS IN DEPARTMENT
DEPTNO
-----20
30
30
20
30
30
10
20
10
30
20
30
20
10
ENAME,
FROM
EMP;
ENAME
ANNUAL_SAL
--------- ---------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 toi angajaii, este necesar sa convertim
valoarea nula la un numar . Noi folosim funcia NVL pentru a converti o valoare nula la
o valoare nenula.
Folositi funcia NVL pentru a converti valoarea nula de la declaratia precedenta la 0.
SELECT
FROM
ENAME,
EMP;
SAL*12+NVL(COMM,
0) ANNUAL_SAL
ENAME
ANNUAL_SAL
--------- ---------SMITH
9600
ALLEN
19500
WARD
15500
JONES
35700
MARTIN
16400
BLAKE
34200
CLARK
29400
SCOTT
36000
KING
60000
TURNER
18000
ADAMS
13200
JAMES
11400
FORD
36000
MILLER
15600
NVL(DATECOLUMN,
'01-JAN-88')
NVL(NUMBERCOLUMN,
NVL(CHARCOLUMN,
9)
'STRING')
DEPTNO
EMP;
DEPTNO
-----20
30
30
20
30
30
10
20
10
30
20
30
20
10
Clauza DISTINCT
Pentru eliminarea valorilor duplicate din rezultat, includei restricia DISTINCT n
comanda SELECT.
Pentru a elimina valorile duplicate afiate n exemplul urmtor introducei:
SELECT
FROM
DEPTNO
-----10
20
30
DISTINCT
EMP;
DEPTNO
DISTINCT DEPTNO,
EMP;
JOB
JOB
--------CLERK
MANAGER
PRESIDENT
ANALYST
CLERK
MANAGER
CLERK
MANAGER
SALESMAN
Clauza ORDER BY
In mod normal ordinea rndurilor ntoarse n rezultatul unei cereri este nedefinit.
Clauza ORDER BY poate fi utilizat pentru a sorta rndurile.
Dac o folosim, clauza ORDEY BY trebuie s fie ntotdeauna ultima n declaraia
SELECT.
Pentru a sorta dup ENAME, introducei:
SELECT
FROM
ORDER BY
ENAME,
EMP
ENAME;
JOB,
SAL*12,
DEPTNO
ENAME
--------ADAMS
ALLEN
BLAKE
CLARK
FORD
JAMES
JONES
KING
MARTIN
MILLER
SCOTT
JOB
SAL*12 DEPTNO
------- -------- -----CLERK
13200
20
SALESMAN
19200
30
MANAGER
34200
30
MANAGER
29400
10
ANALYST
36000
20
CLERK
11400
30
MANAGER
35700
20
PRESIDENT 60000
10
SALESMAN
15000
30
CLERK
15600
10
ANALYST
36000
20
SMITH
TURNER
WARD
CLERK
SALESMAN
SALESMAN
9600
18000
15000
20
30
30
ENAME
--------JAMES
KING
BLAKE
TURNER
ADAMS
CLARK
WARD
SCOTT
MARTIN
FORD
MILLER
JONES
ALLEN
SMITH
JOB
--------CLERK
PRESIDENT
MANAGER
SALESMAN
CLERK
MANAGER
SALESMAN
ANALYST
SALESMAN
ANALYST
CLERK
MANAGER
SALESMAN
CLERK
HIREDATE
--------23-JUL-84
09-JUL-84
11-JUN-84
04-JUN-84
04-JUN-84
14-MAY-84
26-MAR-84
05-MAR-84
05-DEC-83
05-DEC-83
21-NOV-83
31-OCT-83
15-AUG-83
13-JUN-83
SELECT
FROM
ORDER BY
DEPTNO
-----10
10
10
20
20
20
20
20
30
30
30
30
30
30
DEPTNO,
EMP
DEPTNO,
JOB,
ENAME
SAL DESC;
JOB
-----------PRESIDENT
MANAGER
CLERK
ANALYST
ANALYST
MANAGER
CLERK
CLERK
MANAGER
SALESMAN
SALESMAN
SALESMAN
SALESMAN
CLERK
ENAME
------KING
CLARK
MILLER
SCOTT
FORD
JONES
ADAMS
SMITH
BLAKE
ALLEN
TURNER
WARD
MARTIN
JAMES
Clauza WHERE
Clauza WHERE corespunde operatorului 'Restricie' din algebra relaionala.
Conine o condiie pe care rindurile trebuie s o indeplineasca n ordinea afiarii lor.
Clauza WHERE, daca este folosita, trebuie s urmeze clauzei FROM :
SELECT
FROM
WHERE
coloane
tabela
anumite condiii sunt ntlnite
Clauza WHERE poate compara valori n coloana, valori literale, expresii aritmetice sau
funcii.
Operatorii logici
Acesti operatori verifica urmatoarele condiii:
Operator
-------=
>
>=
<
<=
Semnificaie
-----------egal cu
mai mare decit
mai mare sau egal
mai mic decit
mai mic sau egal
ENAME,
EMPNO,
EMP
JOB = 'CLERK';
ENAME
EMPNO
--------- ----SMITH
7369
ADAMS
7876
JAMES
7900
MILLER
7934
JOB,
DEPTNO
JOB
DEPTNO
------- -----CLERK
20
CLERK
20
CLERK
30
CLERK
10
DNAME,
DEPTNO
FROM
WHERE
DEPT
DEPTNO >20;
DNAME
---------SALES
OPERATIONS
DEPTNO
-----30
40
ENAME,
SAL,
EMP
COMM> SAL;
COMM
SAL
COMM
--------------1, 250. 00
1, 400. 00
Operatori SQL
Sint patru operatori SQL care opereaza pe toate tipuril de date:
Operatori SQL
Operator
Semnificaie
------------------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
Realizeaza teste pentru valori ntre, si inclusiv, o valoare minima i o valoare maxima.
Presupunind ca dorim s vedem angajaii ai caror salariu este ntre 1000 i 2000:
SELECT
FROM
WHERE
ENAME, SAL
EMP
SAL BETWEEN 1000 AND 2000;
ENAME
SAL
------- ---------ALLEN
1, 600. 00
WARD
MARTIN
TURNER
ADAMS
MILLER
1,
1,
1,
1,
1,
250.
250.
500.
100.
300.
00
00
00
00
00
Operatorul IN
Testeaza valorile dintr-o lista specificata.
Presupunem ca dorim s gasim angajaii care au unul din cele trei numere de
marca(MGR):
SELECT
FROM
WHERE
EMPNO
----7369
7788
7876
7902
ENAME
----SMITH
SCOTT
ADAMS
FORD
EMPNO,
ENAME,
SAL,
MGR
EMP
MGR IN (7902, 7566, 7788);
SAL
MGR
--------- ----800. 00 7902
3, 000. 00 7566
1, 100. 00 7788
3, 000. 00 7566
Daca, caracterele sau datele calendaristice sunt utilizate, ele trebuie introduse ntre
ghilimele(' ').
Operatorul LIKE
Uneori nu se cunosc valorile exacte pe care le cautam. Utiliznd operatorul LIKE este
posibil s selectam rndurile care se potrivesc cu un model specificat de caractere.
Operatia de petter-matching a caracterelor poate fi asemanat cu o cautare 'wild-card'.
Doi simboli se pot utiliza la construirea irului de cautare.
Simbol
-----%
-
Reprezentare
-----------orice secventa de zero sau mai multe caractere
un singur caracter oarecare
ENAME
EMP
ENAME LIKE 'S%';
ENAME
-------SMITH
SCOTT
Caracterul '_' poate fi utilizat pentru cautarea unui anumit numar de carac- tere.
De exemplu pentru a lista toi angajaii care au un nume exact de patru caractere
lungime:
SELECT
FROM
WHERE
ENAME
EMP
ENAME LIKE '____';
ENAME
----WARD
KING
FORD
Operatorul IS NULL
Operatorul IS NULL face teste specifice pentru valorile care sunt NULL.
SELECT
FROM
WHERE
ENAME
-----KING
ENAME, MGR
EMP
MGR IS NULL;
MGR
----
Negarea expresiilor
Urmatorii operatori fac teste de negaie:
Operator
--------!=
^=
<>
NOT NUMECOL=
NOT NUMECOL>
Descriere
---------diferit de(VAX, UNIX,
diferit de(IBM)
diferit de(toate o/s)
diferit de
mai mic sau egal
PC)
Operatori SQL
Operator
-------NOT BETWEEN
NOT IN
NOT LIKE
IS NOT NULL
Descriere
--------nu se afla ntre doua valori date
nu se afla ntr-o lista dat de valori
diferit de irul
nu este o valoare nula
Pentru a gsi angajaii ai caror salariu nu este ntr-un interval, introdu- cei:
SELECT
FROM
WHERE
ENAME, SAL
EMP
SAL NOT BETWEEN 1000 AND 2000;
ENAME
SAL
--------- -------SMITH
800. 00
JONES
2, 975. 00
BLAKE
2, 850. 00
CLARK
SCOTT
KING
JAMES
FORD
2,
3,
5,
450. 00
000. 00
000. 00
950. 00
3, 000. 00
ENAME, JOB
EMP
JOB NOT LIKE 'M%';
JOB
-------CLERK
SALESMAN
SALESMAN
SALESMAN
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK
introducei:
introducei:
ENAME, MGR
EMP
MGR IS NOT NULL;
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
Nota:
Daca o valoare NULL este utilizat ntr-o comparaie, atunci operatorul de comparaie
trebuie s fie IS sau IS NOT NULL. Daca acesti operatori nu sunt uti lizai i valoarea
NULL este comparata, atunci rezultatul este ntotdeauna FALSE
De exemplu, COMM!=NULL este ntotdeauna falsa. Rezultatul este fals deoarece o
valoare NULL poate s nu fie egala sau diferita cu orice alta valoare alta decat NULL.
De notat ca o astfel de eroare nu este semnalata, rezultatul fiind ntotdea- una fals.
EMPNO ENAME
JOB
---------- -------7876 ADAMS
CLERK
7934 MILLER
CLERK
SAL
-------1, 100. 00
1, 300. 00
ENAME
-------SMITH
ALLEN
WARD
MARTIN
TURNER
ADAMS
JAMES
MILLER
JOB
------CLERK
SALESMAN
SALESMAN
SALESMAN
SALESMAN
CLERK
CLERK
CLERK
SAL
-------800. 00
1, 600. 00
1, 250. 00
1, 250. 00
1, 500. 00
1, 100. 00
950. 00
1, 300. 00
Putei combina AND sau OR n acceai expresie logica. cnd AND sau OR apar in
aceeai clauza WHERE, toi operatorii AND sunt evaluai mai ntai i apoi toi
operatorii OR. Vom spune ca operatorii AND au o precedenta mai mare decat OR.
Deoarece AND are o precedenta mai mare decat OR urmatoarea declaraie SQL
intoarce toi managerii cu salarii peste 1500$ i toi vnztorii.
SELECT
FROM
WHERE
EMPNO, ENAME,
EMP
SAL> 1500
JOB,
SAL,
DEPTNO
AND
OR
EMPNO
----7499
7521
7566
7654
7698
7782
7844
JOB = 'MANAGER'
JOB = 'SALESMAN';
ENAME
------ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
TURNER
JOB
-------SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
SALESMAN
SAL
-------1, 600.
1, 250.
2, 975.
1, 250.
2, 850.
2, 450.
1, 500.
DEPTNO
-----00
00
00
00
00
00
00
30
30
20
30
30
10
30
JOB
--------SALESMAN
MANAGER
MANAGER
MANAGER
SAL
-------1, 600.
2, 975.
2, 850.
2, 450.
SAL,
DEPTNO
DEPTNO
-----00
00
00
00
30
20
30
10
ENAME
(VARCHAR2)
___________
|
|
| SCOTT V V|
|
___|
| SCOTT|____
|
|
| MILLER
|
|
|
~~~~ ~~ ~~~
ENAME
(CHAR)
-----------|
|
| SCOTT V V|
|
. . . . |
| SCOTT|V V|
|
|.
|
| MILLER| V|
~~~~ ~~~~ ~~
Oracle face umplerea cu blancuri la compararea
cu coloanele CHAR.
cnd un alt rnd stocat n coloana ENAMe are mai multe caractere decat irul de
comparat.
Pentru coloanele cu tipul CHAR, oricum, Oracle face umplere cnd valorile coloanelor
sunt iniial stocate, facndu-le pe toate de aceeai lungime.
Aceeai condiie va ntoarce ambele rnduri pentru SCOTT, indiferent de cate spaii de
sfrsit au fost adaugate cnd valorile au fost stocate n tabela.
Oracle umple cu blancuri irul de comparat n cel de al doilea caz i de aceea spaiile
stocate sunt nesemnificative.
Precedenta operatorilor
Toi operatorii sunt aranjai ntr-o ierarhie ceea ce le determina precedenta . Intr-o
expresie operaiile sunt executate n ordinea precedentei lor de la mare la mica.
cnd operatorii au precedenta egala atunci ei se evalueaza de la stanga la dreapta.
1. Toi operatorii de comparaie i 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 dat cnd suntei n dubiu despre care dintre doua operaii vor fi executate
mai ntai cnd o expresie este evaluata, suntei liberi s utilizai parantezele pentru a
clarifica semnificatia dorita i pentru a va asigura ca SQL*Plus face ceea ce doriti.
S presupunem ca doriti s gasiti toi managerii, din orice departament, si toi
funcionarii 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 nchise n comanda SELECT:
SELECT
FROM
WHERE
ORDER BY
. . . ]
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
restricioneaza cererea la rndurile care ndeplinesc o condiie. Poate conine
valori de coloane, expresii i literali
AND/OR
poate fi utilizat ntr-o clauza WHERE pentru a construi condiii mai complexe.
AND are prioritate peste OR.
()
pot fi utilizate pentru a forta prioritatea
ORDER BY
ntotdeauna apare la sfarsit . Specifica ordinea de sortare. Una sau mai multe
coloane pot fi specificate aici.
ASC
ordinea ascendenta este ordinea de sortar ( implicita) i nu trebuie specificat.
DESC
Logarea la SQL*Plus
Aceasta seciune explica cum s ne logam la SQL*Plus i liniile de iesire ale tipurilor de
comenzi ce pot rezulta n cadrul sau.
SQL*Plus
SQL*Plus este un program scris de Corporatia Oracle, ce produce un mediu pentru
comenzile SQL ce pot fi tastate direct sau rulate dintr-un fiier de comanda. In plus,
comenzile SQL pot fi derivate. Ele sunt folosite pentru:
formatarea rezultatelor
setarea optiunilor
editarea i stocarea declaraiilor SQL
Odat ce v-ai logat la sistemul vostru de operare, sunt 3 moduri pentru a va loga la
SQL*Plus:
1. SQLPLUS
o Vei vedea dup aceasta un mesaj ca acesta:
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 Introducei numele vostru de user i apasai RETURN: SQL*Plus va afia
promptul :"Enter Password:". Introducei parola voastra i apasai din
nou RETURN.
o Pentru protecia voastra, parola nu va apare pe ecran. SQL*Plus va afia
promptul sau: SQL>
o Aceasta indica linia de comanda . Acolo sunt doua feluri de comenzi i
putei ntroduce pe acesta linie de comanda:comenzi SQL sau comenzi
SQL*Plus.
2. SQLPLUS username
o Vei fi ndemnai s va dai parola.
3. SQLPLUS username/password
o Vei fi logai la SQL*Plus. In acest caz parolz v a fi afiata.
Alegei metoda pe care o preferati.
L
Ln
n
L m n
respectiv
listeaza toate liniile din buferul SQL.
listeaza o linie (specificat de n)
listeaza un numar de linii(de la m la
n).
RUN
din
/
buffer.
executa
comanda
SQL care
este curenta
n
bufer.
paraseste SQL*Plus.
2.
EMPNO
----7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
LOSAL
----700
1201
1401
2001
3001
HISAL
----1200
1400
2000
3000
9999
JOB
------CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK
MGR
---7902
7698
7698
7839
7698
7839
7839
7566
7698
7788
7698
7566
7782
HIREDATE
-------13-JUN-83
15-AUG-83
26-MAR-84
31-OCT-83
05-DEC-83
11-JUL-84
14-MAY-84
05-MAR-84
09-JUL-84
04-JUN-84
04-JUN-84
23-JUL-84
05-DEC-83
21-NOV-83
SAL
COMM DEPTNO
-------- ------- -----800. 00
20
1, 600. 00
300. 00
30
1, 250. 00
500. 00
30
2, 975. 00
20
1, 250. 00 1, 400. 00
30
2, 850. 00
30
2, 450. 00
10
3, 000. 00
20
5, 000. 00
10
1, 500. 00
. 00
30
1, 100. 00
20
950. 00
30
3, 000. 00
20
1, 300. 00
10
14 nregistrri selectate.
3.
ENAME DEPTNO
----- -----ALLEN
30
WARD
30
MARTIN
30
TURNER
30
ADAMS
20
MILLER
10
SAL
-------1, 600.
1, 250.
1, 250.
1, 500.
1, 100.
1, 300.
00
00
00
00
00
00
6 nregistrri selectate.
10
40
20
30
5.
ACCOUNTING
OPERATIONS
RESEARCH
SALES
JOB
--------ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
6.
EMPNO
----7876
7782
7902
7566
7839
7934
7788
7369
ENAME
----ADAMS
CLARK
FORD
JONES
KING
MILLER
SCOTT
SMITH
JOB
----CLERK
MANAGER
ANALYST
MANAGER
PRESIDENT
CLERK
ANALYST
CLERK
MGR
---7788
7839
7566
7839
HIREDATE
--------04-JUN-84
14-MAY-84
05-DEC-83
31-OCT-83
09-JUL-84
7782 21-NOV-83
7566 05-MAR-84
7902 13-JUN-83
8 nregistrri selectate.
7. Listai numele i ocupaiile tuturor funcionarilor
n departamentul 20.
ENAME
-----SMITH
ADAMS
8.
JOB
----CLERK
CLERK
ENAME
-----SMITH
ALLEN
MILLER
9.
ENAME
-----SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
JOB
-------CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
SAY
-------800. 00
1, 600. 00
1, 250. 00
2, 975. 00
1, 250. 00
2, 850. 00
2, 450. 00
3, 000. 00
TURNER
ADAMS
JAMES
FORD
MILLER
SALESMAN
CLERK
CLERK
ANALYST
CLERK
1,
1,
500. 00
100. 00
950. 00
3, 000. 00
1, 300. 00
13 nregistrri selectate.
10.
ENAME
REMUNERATION
------- -----------SMITH
9600
ALLEN
19500
WARD
15500
JONES
35700
MARTIN
16400
BLAKE
34200
CLARK
29400
SCOTT
36000
KING
60000
TURNER
18000
ADAMS
13200
JAMES
11400
FORD
36000
MILLER
15600
14 nregistari selectate.
11.
ENAME
------SMITH
ALLEN
JONES
MARTIN
FORD
MILLER
HIREDATE
--------13-JUN-83
15-AUG-83
31-OCT-83
05-DEC-83
05-DEC-83
21-NOV-830
6 nregistrri selectate.
ANNUAL_SAL
COMM
---------- -------19200
300. 00
18000
. 00
15000
500. 00
Capitolul 2 - Rezolvri
1.
SELECT
FROM
*
SALGRADE;
2.
SELECT
FROM
*
EMP;
3.
SELECT
FROM
WHERE
ENAME,
DEPTNO,
SAL
EMP
SAl BETWEEN 1000 AND 2000;
4.
SELECT
FROM
ORDER BY
DEPTNO,
DEPT
DNAME;
5.
SELECT
FROM
DISTINCT JOB
EMP;
6.
SELECT
FROM
WHERE
ORDER BY
*
EMP
DEPTNO IN (10,
ENAME;
7.
SELECT
FROM
WHERE
AND
ENAME, JOB
EMP
JOB = 'CLERK'
DEPTNO = 20;
8.
SELECT
FROM
WHERE
OR
ENAME
EMP
ENAME LIKE '%TH%'
ENAME LIKE '%LL%';
9.
SELECT
FROM
WHERE
ENAME,
JOB,
SAL
EMP
MGR IS NOT NULL;
DNAME
20)
10.
SELECT
FROM
ENAME,
EMP;
11.
SELECT
FROM
WHERE
ENAME,
DEPTNO,
HIREDATE
EMP
HIREDATE LIKE '%83';
12.
SELECT
FROM
WHERE
AND JOB
ORDER BY
ENAME,
SAL*12 ANNUAL SAL,
EMP
SAL >COMM
= 'SALESMAN'
SAL DESC,
ENAME;
13.
SELECT
FROM
SAL*12+NVL(COMM,
0) REMUNERATION
COMM
ENAME||
' HAS HELD THE POSITION OF '||
JOB||
' IN DEPT '||
DEPTNO||
' SINCE '||
HIREDATE "Who,
what and when"
EMP;