Sunteți pe pagina 1din 10

CAPITOLUL 3

LIMBAJUL SQL - CREAREA TABELELOR


N ORACLE

3.1. Prezentare general


Limbajul SEQUEL (Structured English as Query Language) a fost
prezentat pentru prima dat ca un limbaj de interogare n anul 1974, de ctre
Chamberlin i Boyce. n 1980, Chamberlin a schimbat denumirea SEQUEL
n SQL (Structured Query Language limbaj structurat de interogare).
ANSI (Institutul Naional American pentru Standarde) a publicat n
1986 standardul SQL ANSI 1986, care definea comenzile de baz ale
limbajului SQL, inclusiv pentru crearea de tabele i vederi (create table i
create view). Limbajul SQL 86 nu coninea opiuni 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. Totui, variantele comerciale ale diferiilor productori erau
incompatibile la nivel de detaliu.
n 1999 a fost publicat un standard SQL 3 care iese din sfera
relaionalului i a normalizrii relaiilor, aa cum au fost formulate de Codd.
Principalele orientri ale limbajului SQL 3 vizeaz transformarea acestuia
ntr-un limbaj complet, n vederea definirii i gestionrii obiectelor
complexe i persistente. Astfel, au fost introduse:

Moteniri

multiple,

polimorfismul,

ncapsularea,

caracteristici preluate din limbajele orientate pe obiecte


39
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

Tipuri de date definite de utilizator

Suport pentru sisteme bazate pe gestiunea cunotinelor

Interogri recursive i instrumente de administrare a datelor.

Sistemul de gestiune a bazelor de date Oracle respect standardele


referitoare la limbajele de interogare a datelor (SQL) .
Utilizarea sistemului de gestiune a bazelor de date Oracle:

Oracle suport baze de date de orice dimensiuni, ncepnd de la civa

octei pn la civa gigaoctei

Oracle suport un numr mare de utilizatori simultan, minimizeaz

conflictele i garanteaz concurena tranzaciilor

Oracle suport un mediu client/server real. El permite mprirea

procesrii ntre baza de date server i programele de aplicaie 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 grafic pentru
efectuarea operaiilor de gestionare a unei baze de date, a userilor, a
memoriei utilizate, vizualizarea fisierelor de date, a spaiilor tabel,
gestionarea accesului HTTP, etc. Aplicaia SQL permite execuia
comenzilor SQL, a programelor PL/SQL i a scripturilor SQL [17].
40
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

n cazul conectrii la un cont de user diferit de SYS, este


accesibil i utilitarul Application Builder, care ofer faciliti de realizare i
gestionare a aplicaiilor cu interfa vizual (de tip formular, raport), permite
crearea de servicii Web care acceseaz baze de date Oracle, etc.
Observaie: Toate aplicaiile 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]:
Tabelul 1.
TIP
VARCHAR2(size)
NUMBER(p,s)
LONG
DATE
RAW(size)
LONG RAW
ROWID
CHAR(size)
BLOB
BFILE

Caracteristici
ir de caractere de lungime variabil
numeric: p (precision) = 1..38, s (scale) =-84..127
ir de caractere de lung>2GB
dat calendaristic
date de tip binar. Maxim size este 2000 bytes.
lungime variabil > 2GB se stocheaz grafice, sunete,
documente
adresa fiecarui rnd din tabel
ir de caractere de lungime fix
binary large object (max 4GB) se stocheaz date
nestructurate (text,imagine, video, date spatiale)
conine un pointer ctre un fiier binar stocat n afara bazei
de date

Crearea unei baze de date necesit cunotine 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:
-

spaiile tabel (table space) folosite pentru alocarea de spaiu


pe disc pentru obiectele bazei

segmentele de rollback sunt obiecte utilizate de sistem pentru


salvarea datelor necesare validrii tranzaciilor

fiierele de date i procesele sistem asociate sistemelor de


gestiune a bazelor de date.
41

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura


MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

Exemplu - Se consider activitatea de eviden a comenzilor ncheiate de o


societate comercial cu diverse firme prin intermediul agenilor angajai n
cadrul societii. Comenzile conin produse aflate n depozitul societii, iar
pentru fiecare produs se cunoaste n permanen stocul existent (figura 1).

Fig. 1. Tabelele aplicaiei

Comenzile DDL (DATA DEFINITION LANGUAGE Limbaj de


Definire a Datelor) utilizate n Oracle sunt urmtoarele:
Comanda

Aciune

CREATE

Creaz un obiect nou: TABLE, INDEX, CLUSTER,


TABLESPACE,
VIEW,

USER,

SEQUENCE,
ROLE,

VIEW,

MATERIALIZED

PROCEDURE,

FUNCTION,

TRIGGER
ALTER

Modific o parte dintre proprietile 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 urmtoarele [13]:
-

definiiile atributelor

modul de organizare a tabelei


42

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura


MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

restriciile de integritate

spaiul de tabel

caracteristicile de stocare

clusterul

datele (dac se preiau dintr-o alt tabel)

definiiile partiiilor

Restricii de integritate: n Oracle exist urmtoarele tipuri de


restricii [6]:
o NOT NULL
o UNIQUE
o PRIMARY KEY
o FOREIGN KEY
o CHECK
Precizarea restriciilor se poate face n 2 moduri:
-

in-line la definirea coloanei pe care se impune restricia i

out-of-line separat, fie la sfritul comenzii CREATE TABLE, fie


prin comanda ALTER
Comanda de creare a unui tabel n limbajul SQL versiunea Oracle:
CREATE TABLE nume_tabel ( camp1 tip_de_date_1

[definitie_cmp], camp2 tip_de_date_2 [definitie_cmp] [, ] )


unde cmp1, cmp2, sunt coloanele tabelului nume_tabel, iar
definiie_cmp poate conine clauze pentru iniializarea unui atribut cu o
valoare implicit sau restricii precum cheie primar, unicitate, null, o
restricie definit de utilizator i cheie extern.
Scriptul care creeaz tabelele bazei i stabilete relaiile dintre ele i
restriciile, este urmtorul:
create table firme
(codfirma number(2) constraint PK_firme primary key,
denfirma varchar2(20) not null,
loc varchar2(20),
43
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

zona varchar2(15)
CONSTRAINT ZONA_CK check (zona in ('MUNTENIA',
'MOLDOVA','ARDEAL','BANAT', 'DOBROGEA','TRANSILVANIA')));
create table agenti
(codagent varchar2(3) constraint pk_agent primary key,
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) not null,
data date default sysdate,
CONSTRAINT FKAgent FOREIGN KEY (codagent) REFERENCES
agenti(codagent),
CONSTRAINT FKFirme FOREIGN KEY (codfirma) REFERENCES
firme(codfirma));
Crearea unui tabel pe baza cmpurilor 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 conine numele firmei, codul i localitatea:
CREATE TABLE nume_FIRME
AS SELECT codfirma, denfirma, loc FROM FIRME;

44
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

Comanda DESCRIBE sau DESC permite vizualizarea structurii unei


tabele.
Exemplu: S se vizualizeze structura tabelei AGENTI (figura 2):
DESC AGENTI;

Fig. 2. Tabelul AGENTI

Adugarea restriciilor
n limbajul SQL se pot declara toate tipurile de restricii pentru o
baz de date relaional [13]:
-

cheie primar atributul PRIMARY KEY;

valori obligatorii (nenule) opiunea NOT NULL;

restricii utilizator implementate sub forma regulilor de validare la

nivel de cmp, nregistrare sau pot fi incluse n declanatoare;


-

restricii refereniale apar datorit existenei cheilor strine (clauza

FOREIGN KEY). Restriciile refereniale pstreaz integritatea bazei de


date la execuia anumitor operaii, precum: inserarea unei linii ntr-o tabel
copil sau modificarea unei chei strine; la tergerea unei linii dintr-o tabel
printe (fie se efectueaz tergerea n cascad n tabelul copil, fie se
interzice tergerea).

3.4. Modificarea structurii tabelelor


O bun analiz i proiectare a aplicaiei permite reducerea
modificrilor structurii tabelelor i a restriciilor. Totui, schema bazei de
date poate fi modificat la anumite operaii ca [14]:

apariia unui nou atribut (coloan); modificarea lungimii unui atribut


45

Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura


MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

ncrcarea bazei dintr-o alt aplicaie; salvri, restaurri sau alte


operaii in care sunt necesare dezactivarea temporar a unor restricii
si reactivarea lor ulterioar.
Modificarea structurii bazei de date n Oracle poate fi efectuat

utiliznd comanda ALTER TABLE, care are urmtoarea sintax:


ALTER TABLE nume_tabel
ADD ( coloana <definitie_coloana>)
| MODIFY (coloana<modificare_coloana>)
| RENAME TO <nume_nou>
| ADD (CONSTRAINT nume_constrangere <definitie_restrictie>)
| DROP| DISABLE CONSTRAINT <nume_restrictie>
Comanda ALTER TABLE realizeaza urmatoarele:
-

Modificarea structurii tabelei: ADD, MODIFY, DROP COLUMN, SET

UNUSED
-

Modificarea restriciilor de integritate: ADD, MODIFY, DROP,

DISABLE CONSTRAINT
-

Redenumete tabela: RENAME

Clauza ADD adaug o coloan sau o restricie, clauza MODIFY modific


definiia unei coloane, iar DROP terge o coloan sau o restricie.
Toate

restriciile

(PRIMARY

KEY,

UNIQUE,

CHECK

FOREIGN KEY) pot fi declarate ulterior crerii tabelei i pot fi anulate dac
este necesar.
Dup fiecare comand se poate vizualiza structura tabelei cu:
DESCRIBE nume_tabel sau DESC nume_tabel Exemplu: DESCribe firme
Exemple:
- Redenumii tabelul comenzi n com i revenii la vechea denumire:
ALTER TABLE comenzi RENAME TO com; RENAME com TO comenzi;
- Adugai coloana adresa la tabelul comenzi
ALTER TABLE comenzi
46
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

ADD (adresa VARCHAR2(10) );


- modificai coloana adresa la tipul VARCHAR2(30) n tabelul comenzi:
ALTER TABLE comenzi
MODIFY (adresa VARCHAR2(30));
- adugai la tabelul comenzi restricia de validare pentru coloana codfirma:
s aib valori ntre 10 i 100:
ALTER TABLE comenzi
ADD (CONSTRAINT c1 CHECK (codfirma > 10 and codfirma <
100));
- dezactivai restricia de validare pentru coloana codfirma n tabelul
comenzi:
ALTER TABLE comenzi
DISABLE CONSTRAINT c1;
- tergei restricia de validare pentru coloana codfirma n tabelul comenzi:
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 spaiul alocat ei:
TRUNCATE TABLE angajati;

Rezumat
1. Pentru crearea tabelelelor se folosete comanda CREATE TABLE
CREATE TABLE nume_tabel ( camp1 tip_de_date_1
[definitie_cmp], camp2 tip_de_date_2 [definitie_cmp] [, ] )
Crearea unei tabele pe baza cmpurilor din alt tabel se poate efectua
folosind comanda:
47
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.

CREATE TABLE nume_tabela


AS SELECT [*, nume campuri]
FROM nume_tabela_sursa
WHERE [conditie];
2. n Oracle exist urmtoarele tipuri de restricii:

NOT NULL

UNIQUE

PRIMARY KEY

FOREIGN KEY

CHECK

3. Modificarea structurii unui tabel (coloane sau restricii) comanda


ALTER TABLE
ALTER TABLE nume_tabel
ADD ( coloana <definitie_coloana>)
| MODIFY (coloana<modificare_coloana>)
|RENAME TO <nume_nou>
| ADD (CONSTRAINT nume_constrangere <definitie_restrictie>)
| DROP| DISABLE CONSTRAINT <nume_restrictie>
4. Pentru tergerea unui tabel se folosesc comenzile DROP TABLE i
TRUNCATE:
DROP TABLE nume_tabel CASCADE CONSTRAINTS;
TRUNCATE terge nregistrrile unei tabele i elibereaz spaiul alocat ei.

48
Tudor N. L., SISTEME INFORMATICE SI GESTIUNEA BAZELOR DE DATE ORACLE, Editura
MATRIX ROM, Bucureti, ISBN 978-973-755-745-2, 2011, 109 pag.