Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura [601177]

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
39
CAPITOLUL 3
LIMBAJUL SQL – CREAREA TABELELOR
ÎN ORACLE

3.1. Prezentare general ă
Limbajul SEQUEL (Structured English as Query Langua ge) a fost
prezentat pentru prima dat ă ca un limbaj de interogare în anul 1974, de c ătre
Chamberlin și Boyce. În 1980, Chamberlin a schimbat denumirea S EQUEL
în SQL (Structured Query Language – limbaj structur at de interogare).
ANSI (Institutul Na /uni0163ional American pentru Standarde) a publicat în
1986 standardul SQL ANSI 1986, care definea comenzi le de baz ă ale
limbajului SQL, inclusiv pentru crearea de tabele și vederi (create table și
create view). Limbajul SQL – 86 nu con /uni0163inea op /uni0163iuni de modificare a
structurii sau ștergere a obiectelor bazei (alter, drop) și comenzi pentru
acordare și revocare de drepturi utilizatorilor (grant și revoke).
Astfel, au fost necesare revizuirea și extinderea limbajului. In 1989
apare limbajul SQL – 89 recunoscut ca fundament al multor SGBD-uri
comerciale. Totu și, variantele comerciale ale diferi /uni0163ilor produc ători erau
incompatibile la nivel de detaliu.
În 1999 a fost publicat un standard SQL – 3 care ie se din sfera
rela /uni0163ionalului și a normaliz ării rela /uni0163iilor, a șa cum au fost formulate de Codd.
Principalele orient ări ale limbajului SQL – 3 vizeaz ă transformarea acestuia
într-un limbaj complet, în vederea definirii și gestion ării obiectelor
complexe și persistente. Astfel, au fost introduse:
• Mo șteniri multiple, polimorfismul, încapsularea,
caracteristici preluate din limbajele orientate pe obiecte

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
40 • Tipuri de date definite de utilizator
• Suport pentru sisteme bazate pe gestiunea cuno știn /uni0163elor
• Interog ări recursive și instrumente de administrare a datelor.
Sistemul de gestiune a bazelor de date Oracle respe ctã standardele
referitoare la limbajele de interogare a datelor (S QL) .

Utilizarea sistemului de gestiune a bazelor de date Oracle:
• Oracle suportã baze de date de orice dimensiuni, în cepând de la câ /uni0163iva
octe /uni0163i pânã la câ /uni0163iva gigaocte /uni0163i
• Oracle suportã un numãr mare de utilizatori simulta n, minimizeazã
conflictele și garanteazã concuren /uni0163a tranzac /uni0163iilor
• Oracle suportã un mediu client/server real. El perm ite împãr/uni0163irea
procesãrii între baza de date server și programele de aplica /uni0163ie ale clientului
Utilitarele oferite de sistemul Oracle , versiunea Oracle
Database 10g Express Edition, sunt Administration, Object Browser,
SQL, Utilities etc. (figura 1) [16].

Fig. 1. Mediul Oracle Database 10g Express Edition

Utilitarul Administration oferã o interfa /uni0163ã graficã pentru
efectuarea opera /uni0163iilor de gestionare a unei baze de date, a userilor , a
memoriei utilizate, vizualizarea fisierelor de date , a spa /uni0163iilor tabelã,
gestionarea accesului HTTP, etc. Aplica /uni0163ia SQL permite execu /uni0163ia
comenzilor SQL, a programelor PL/SQL și a scripturilor SQL [17].

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
41 În cazul conectãrii la un cont de user diferit de S YS, este
accesibil și utilitarul Application Builder, care oferã facili tã /uni0163i de realizare și
gestionare a aplica /uni0163iilor cu interfa /uni0163ã vizualã (de tip formular, raport), permite
crearea de servicii Web care acceseazã baze de date Oracle, etc.
Observa /uni0163ie: Toate aplica /uni0163iile din aceastã carte sunt verificate
folosind versiunea Oracle Database 10g Express Edition.

3.2. Tipuri de date. Crearea unei baze de date
Tipurile de date folosite în Oracle sunt prezentate în tabelul 1 [18]:

Crearea unei baze de date necesit ă cuno știn /uni0163e de administrare strict
legate de produsul software de gestiune a bazei de date. Elementele tehnice
și fizice ce caracterizeaz ă serverele de baze de date, cum ar fi: Oracle, SQL
Server, DB2, Informix, sunt:
– spa/uni0163iile tabel ă (table space) folosite pentru alocarea de spa /uni0163iu
pe disc pentru obiectele bazei
– segmentele de rollback sunt obiecte utilizate de si stem pentru
salvarea datelor necesare valid ării tranzac /uni0163iilor
– fișierele de date și procesele sistem asociate sistemelor de
gestiune a bazelor de date. Tabelul 1.
TIP Caracteristici
VARCHAR2(size) șir de caractere de lungime variabilã
NUMBER(p,s) numeric: p (precision) = 1..38, s (s cale) =-84..127
LONG șir de caractere de lung>2GB
DATE datã calendaristicã
RAW(size) date de tip binar. Maxim size este 2000 bytes.
LONG RAW lungime variabilã > 2GB se stocheazã gr afice, sunete,
documente
ROWID adresa fiecarui rând din tabel
CHAR(size) șir de caractere de lungime fixã
BLOB binary large object (max 4GB) se stocheazã d ate
nestructurate (text,imagine, video, date spatiale)
BFILE con /uni0163ine un pointer cãtre un fi șier binar stocat în afara bazei
de date

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
42 Exemplu – Se considerã activitatea de eviden /uni0163ã a comenzilor încheiate de o
societate comercialã cu diverse firme prin intermed iul agen /uni0163ilor angaja /uni0163i în
cadrul societã/uni0163ii. Comenzile con /uni0163in produse aflate în depozitul societã /uni0163ii, iar
pentru fiecare produs se cunoaste în permanen /uni0163ã stocul existent (figura 1).

Fig. 1. Tabelele aplica /uni0163iei

Comenzile DDL (DATA DEFINITION LANGUAGE – Limbaj de
Definire a Datelor) utilizate în Oracle sunt urmãto arele:

Comanda Ac /uni0163iune
CREATE Creazã un obiect nou: TABLE, INDEX, CLUSTER,
TABLESPACE, SEQUENCE, VIEW, MATERIALIZED
VIEW, USER, ROLE, PROCEDURE, FUNCTION,
TRIGGER
ALTER Modificã o parte dintre proprietã /uni0163ile unui obiect
DROP Șterge un obiect din baza de date

În continuare, vor fi prezentate detaliat comenzile DDL folosite pentru
crearea tabelelor, modificarea structurii și ștergerea acestora.
3.3. Crearea tabelelor
Pentru a crea o tabelã, se specificã urmãtoarele [1 3]:
– defini /uni0163iile atributelor
– modul de organizare a tabelei

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
43 – restric /uni0163iile de integritate
– spa /uni0163iul de tabelã
– caracteristicile de stocare
– clusterul
– datele (dacã se preiau dintr-o altã tabelã)
– defini /uni0163iile parti /uni0163iilor
Restric /uni0163ii de integritate: În Oracle existã urmãtoarele tipuri de
restric /uni0163ii [6]:
o NOT NULL
o UNIQUE
o PRIMARY KEY
o FOREIGN KEY
o CHECK
Precizarea restric /uni0163iilor se poate face în 2 moduri:
– in-line la definirea coloanei pe care se impune restric /uni0163ia și
– out-of-line separat, fie la sfâr șitul comenzii CREATE TABLE, fie
prin comanda ALTER
Comanda de creare a unui tabel în limbajul SQL vers iunea Oracle:
CREATE TABLE nume_tabel ( camp1 tip_de_date_1
[definitie_câmp], camp2 tip_de_date_2 [definitie_câ mp] [, … ] )
unde câmp1, câmp2, … sunt coloanele tabelului nume_ tabel, iar
defini /uni0163ie_câmp poate con /uni0163ine clauze pentru ini /uni0163ializarea unui atribut cu o
valoare implicit ă sau restric /uni0163ii precum cheie primar ă, unicitate, null, o
restric /uni0163ie definit ă de utilizator și cheie extern ă.
Scriptul care creeaz ă tabelele bazei și stabile ște rela /uni0163iile dintre ele și
restric /uni0163iile, este urm ătorul:
create table firme
(codfirma number(2) constraint PK_firme primary key ,
denfirma varchar2(20) not null,
loc varchar2(20),

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
44 zona varchar2(15)
CONSTRAINT ZONA_CK check (zona in ('MUNTENIA',
'MOLDOVA','ARDEAL','BANAT', 'DOBROGEA','TRANSILVANI A')));

create table agenti
(codagent varchar2(3) constraint pk_agent primary k ey,
nume varchar2(25) not null,
zona varchar2(15) CONSTRAINT AGZONA_CK check (zona
in('MOLDOVA','ARDEAL','BANAT','MUNTENIA','DOBROGEA' ,
'TRANSILVANIA')),
functie varchar2(20));

create table comenzi
(nrcom number(4) constraint pk_comenzi primary key,
codfirma number(2) not null, codagent varchar2(3) n ot null,
data date default sysdate,
CONSTRAINT FKAgent FOREIGN KEY (codagent) REFERENCE S
agenti(codagent),
CONSTRAINT FKFirme FOREIGN KEY (codfirma) REFERENCE S
firme(codfirma));

Crearea unui tabel pe baza câmpurilor din alt tabel se poate efectua
folosind comanda:
CREATE TABLE nume_tabela
AS SELECT [*, nume campuri]
FROM nume_tabela_sursa WHERE [conditie];
Exemplu : Tabela nume_firme va con /uni0163ine numele firmei, codul și localitatea:
CREATE TABLE nume_FIRME
AS SELECT codfirma, denfirma, loc FROM FIRME;

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
45 Comanda DESCRIBE sau DESC – permite vizualizarea structurii unei
tabele.
Exemplu: Sã se vizualizeze structura tabelei AGENTI (figura 2):
DESC AGENTI;

Fig. 2. Tabelul AGENTI
Ad ăugarea restric /uni0163iilor
În limbajul SQL se pot declara toate tipurile de re stric /uni0163ii pentru o
baz ă de date rela /uni0163ional ă [13]:
– cheie primar ă – atributul PRIMARY KEY;
– valori obligatorii (nenule) – op /uni0163iunea NOT NULL;
– restric /uni0163ii utilizator – implementate sub forma regulilor de validare la
nivel de câmp, înregistrare sau pot fi incluse în d eclan șatoare;
– restric /uni0163ii referen /uni0163iale – apar datorit ă existen /uni0163ei cheilor str ăine (clauza
FOREIGN KEY). Restric /uni0163iile referen /uni0163iale p ăstreaz ă integritatea bazei de
date la execu /uni0163ia anumitor opera /uni0163ii, precum: inserarea unei linii într-o tabel ă
copil sau modificarea unei chei str ăine; la ștergerea unei linii dintr-o tabel ă
părinte (fie se efectueazã ștergerea în cascad ă în tabelul copil, fie se
interzice ștergerea).

3.4. Modificarea structurii tabelelor
O bun ă analiz ă și proiectare a aplica /uni0163iei permite reducerea
modific ărilor structurii tabelelor și a restric /uni0163iilor. Totu și, schema bazei de
date poate fi modificat ă la anumite opera /uni0163ii ca [14]:
• apari/uni0163ia unui nou atribut (coloan ă); modificarea lungimii unui atribut

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
46 • înc ărcarea bazei dintr-o alt ă aplica /uni0163ie; salv ări, restaur ări sau alte
opera /uni0163ii in care sunt necesare dezactivarea temporar ă a unor restric /uni0163ii
si reactivarea lor ulterioar ă.
Modificarea structurii bazei de date în Oracle poat e fi efectuat ă
utilizând comanda ALTER TABLE, care are urm ătoarea sintax ă:
ALTER TABLE nume_tabel
ADD ( coloana <definitie_coloana>)
| MODIFY (coloana<modificare_coloana>)
| RENAME TO <nume_nou>
| ADD (CONSTRAINT nume_constrangere <definitie_res trictie>)
| DROP| DISABLE CONSTRAINT <nume_restrictie>
Comanda ALTER TABLE realizeaza urmatoarele:
– Modificarea structurii tabelei: ADD, MODIFY, DROP C OLUMN, SET
UNUSED
– Modificarea restric /uni0163iilor de integritate: ADD, MODIFY, DROP,
DISABLE CONSTRAINT
– Redenume ște tabela: RENAME
Clauza ADD adaug ă o coloan ă sau o restric /uni0163ie, clauza MODIFY modific ă
defini /uni0163ia unei coloane, iar DROP șterge o coloan ă sau o restric /uni0163ie.
Toate restric /uni0163iile (PRIMARY KEY, UNIQUE, CHECK și
FOREIGN KEY) pot fi declarate ulterior cre ării tabelei și pot fi anulate dac ă
este necesar.
Dupã fiecare comandã se poate vizualiza structura t abelei cu:
DESCRIBE nume_tabel sau DESC nume_tabel Exemplu: DESCribe firme

Exemple:
– Redenumi /uni0163i tabelul comenzi în com și reveni /uni0163i la vechea denumire:
ALTER TABLE comenzi RENAME TO com; RENAME com TO co menzi;
– Adãuga /uni0163i coloana adresa la tabelul comenzi
ALTER TABLE comenzi

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
47 ADD (adresa VARCHAR2(10) );
– modifica /uni0163i coloana adresa la tipul VARCHAR2(30) în tabelul c omenzi:
ALTER TABLE comenzi
MODIFY (adresa VARCHAR2(30));
– adãuga /uni0163i la tabelul comenzi restric /uni0163ia de validare pentru coloana codfirma:
sã aibã valori între 10 și 100:
ALTER TABLE comenzi
ADD (CONSTRAINT c1 CHECK (codfirma > 10 and codfir ma <
100));
– dezactiva /uni0163i restric /uni0163ia de validare pentru coloana codfirma în tabelul
comenzi:
ALTER TABLE comenzi
DISABLE CONSTRAINT c1;
– șterge /uni0163i restric /uni0163ia de validare pentru coloana codfirma în tabelul c omenzi:
ALTER TABLE comenzi DROP CONSTRAINT c1;

3.5. Ștergerea tabelelor
Comenzile DROP și TRUNCATE TABLE realizeaz ă ștergerea unui
tabel
DROP TABLE nume_tabel CASCADE CONSTRAINTS;
Ex: DROP TABLE comenzi CASCADE CONSTRAINTS;
TRUNCATE șterge înregistrarile unei tabele și elibereaza spa /uni0163iul alocat ei:
TRUNCATE TABLE angajati;

Rezumat
1. Pentru crearea tabelelelor se folose ște comanda CREATE TABLE
CREATE TABLE nume_tabel ( camp1 tip_de_date_1
[definitie_câmp], camp2 tip_de_date_2 [definitie_câ mp] [, … ] )
Crearea unei tabele pe baza câmpurilor din altã tab elã se poate efectua
folosind comanda:

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE OR ACLE, Editura
MA TRIX ROM, Bucure ști, ISBN 978-973-755-745-2, 2011, 109 pag.
48 CREATE TABLE nume_tabela
AS SELECT [*, nume campuri]
FROM nume_tabela_sursa
WHERE [conditie];
2. În Oracle existã urmãtoarele tipuri de restric /uni0163ii:
• NOT NULL
• UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
3. Modificarea structurii unui tabel (coloane sau rest ric /uni0163ii) – comanda
ALTER TABLE
ALTER TABLE nume_tabel
ADD ( coloana <definitie_coloana>)
| MODIFY (coloana<modificare_coloana>)
|RENAME TO <nume_nou>
| ADD (CONSTRAINT nume_constrangere <definitie_res trictie>)
| DROP| DISABLE CONSTRAINT <nume_restri ctie>
4. Pentru ștergerea unui tabel se folosesc comenzile DROP TABL E și
TRUNCATE:
DROP TABLE nume_tabel CASCADE CONSTRAINTS;
TRUNCATE șterge înregistrãrile unei tabele și elibereazã spa /uni0163iul alocat ei.

Similar Posts