Sunteți pe pagina 1din 9

Crearea si gestionarea tabelelor

Obiective

Dupa parcurgerea acestei lectii, veti putea realiza urmatoarele obiective:


• Descrierea obiectelor din baza de date;
• Crearea tabelelor;
• Descrierea tipurilor de date ce pot fi utilizate în momentul
definirii specificatiilor coloanelor;
• Modificarea structurii unei tabele;
• Stergerea, redenumirea si trunchierea tabelelor.

Obiectele bazei de date

Obiect Descriere
Table Unitatea de baza pentru stocari compusa din linii
si coloane.
View Reprezentare logica a unor date dintr-o tabela sau
mai multe.
Sequence Genereaza valori pentru chei primare.
Index Mareste viteza în cazul interogarilor.
Synonym Da nume alternative obiectelor.

O baza de date în Oracle poate contine structuri de date multiple. Fiecare


structura trebuie definita în designul bazei de date, astfel încât sa poata fi creata în
momentul construirii bazei de date.

Structura tabelelor in Oracle


• Tabelele pot fi create în orice moment, chiar în momentul când utilizatorul
foloseste baza de date.
• Nu este necesara specificarea marimii unei baze de date. Este important,
totusi, cat spatiu va ocupa tabela dupa un timp.
• Structura unei tabele poate fi modificata dinamic.

Conventii pentru denumirea tabelelor

• Numele trebuie sa înceapa cu o litera;


• Poate fi de 1-30 caractere lungime;
• Caracterele permise sunt numai A-Z, a-z, 0-9, $ si #;
• Un utilizator nu poate avea doua tabele cu nume identice;
• Nu trebuie sa fiu un nume rezervat.

Indrumari privind denumirea tabelelor


• Folositi nume descriptive pentru tabele sau alte obiecte de tip baza de date;
• Folositi aceleasi nume pentru aceleasi entitati din tabele diferite. De
exemplu, coloana cu numarul departamentului este denumita DEPTNO
atât în tabela EMP, cât si în tabela DEPT.

1
Comanda CREATE TABLE
• Trebuie sa aveti:
- Drepturi pentru crearea unei tebele;
- Unitate de stocare

CREATE TABLE [schema.] table


(column datatype [DEFAULT expr]);

• Trebuie specificate:
- Numele tabelei
- Numele coloanei, tipul de data pentru coloana si marimea tipului de data.

Sintaxa:
- schema numele posesorului tabelei;
- table numele tabelei;
- DEFAULT expr specifica valoarea implicita, daca aceasta lipseste într-o
comanda ulterioara de inserare (INSERT);
- column numele coloanei;
- datatype tipul de data si lungimea.

Referirea tabelelor unui alt utilizator

• Tabelele a caror proprietar sunt alti utilizatori nu sunt în shema


utilizatorului curent;
• Pentru a fi referite trebuie folosit numele proprietarului tabelei.

Optiunea DEFAULT

• Specifica valoarea implicita pentru o coloana într-o operatie de inserare;

… hiredate DATE DEFAULT SZSDATE, …

• Valorile permise sunt valori literale, expresii sau functii SQL;


• Valorile ilegale sunt numele altor coloane sau pseudocoloane;
• Valoarea implicita trebuie sa aiba acelasi tip cu cel al coloanei.

Unei coloane i se poate asigna o valoare implicita utilizâd optiunea


DEFAULT. Aceasta optiune previne atribuirea unor valori null coloanelor inserate
fara o valoare explicita. Valoarea poate fi una literala, o expresie sau o functie SQL,
cum ar fi SYSDATE si USER, dar valoarea nu poate fi cea a unei alte coloane sau o
pseudocoloana, cum ar fi NEXVAL sau CURRVAL. Valoarea implicita trebuie sa se
potriveasca cu tipul de data al coloanei.

Crearea tabelelor

• Crearea unei tabele:

2
SQL> CREATE TABLE DEPT
2 (deptno NUMBER(2),
3 dname VARCHAR(14),
4 loc VARCHAR(13));
Table created.

• Confirmarea crearii tabelei:

SQL> DESCRIBE dept

Name Null? Type


DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR(14)
LOC VARCHAR(13)

Exemplul anterior creaza tabela DEPT, cu trei coloane: DEPTNO, DNAME si


LOC. Mai departe se confirma crearea tabelei DEPT ca rezultat al comenzii
DESCRIBE.

Interogarea dictionarului de date

• Descrierea tabelelor unui user:

SQL> SELECT *
2 FROM user_tables;

• Afisarea obiectelor distincte ale unui utilizator:

SQL> SELECT DISTINCT object_type


2 FROM user_objects;

• Afizarea tabelelor, view-urilor, sinonimelor, si sequences+rile unui


utilizator:

SQL> SELECT *
2 FROM user_catalog;

Puteti interoga dictionarul de date pentru a afisa informatii diverse despre


obiectele de tip baza de date ale unui utilizator. Tabelele cele mai utilizate ale din
dictionarul de date sunt USER_TABLES, USER_OBJECTS si USER_CATALOG.
Tabela USER_CATALOG are un sinonim numit CAT. Puteti folosi acest nume în loc
de USER_CATALOG în comenzi.

SQL> SELECT *
2 FROM CAT;

3
Tipuri de date

Tipul de data Descriere


VARCHAR2(size) Data de tip careacter, de lungime variabila.
(Trebuie specificata o lungime maxima,
size, valoarea implicita este 1,maxima
4000)
CHAR(size) Data de tip caracter de lungime (size) fixa.
(Valoarea implicita este cea minima 1,
maxima 2000)
NUMBER(p,s) Numar cu p cifre si s cifre zecimale. (p
poate lua valori între 1 si 38, s între –84 si
127)
DATE Data de tip data calendaristica cuprinsa
între Ianuarie,1 ,4712 B.C. si Decembrie,
31, 9999 A.D.
LONG Data de tip caracter cu lungime variabila
pâna la 2 gigabytes.
CLOB Data de pâna la 4 gigabytes.
RAW(size) Data binara cu lungime specificata, size.
Valoarea maxima este de 2000. Trebuie
specificata aceasta valoare.
LONG RAW Data binara cu lungime de pâna la 2
gigabytes.
BLOB Data binara cu lungime de pâna la 4
gigabytes.
BFILE Data binara stocata într+un fisier extern,
lungime maxima de pâna la 4 gigabytes.

Crearea unei tabele utilizând o interogare

• Creati o tabela, si inserati linii combinând comanda CREATE TABLE cu


optiunea AS subquery;

SQL> CREATE table


2 [column (, column … )]
3 AS subquery;

• Numarul coloanelor tabelei trebuie sa fie egal cu numarul coloanelor din


subinterogare;

A doua metoda de a crea o tabela este utilizând optiunea AS subquerz, care


creaza tabela si insereaza inregistrarile furnizate de interogare.
Sintaxa:
- table numele tabelei;
- column numele coloanei, valoarea implicita, si constrângerile de tip;

4
- subquery comanda SELECT care defineste un set de inregistrari ce
trebuie inserate în tabela.

Exemplu:
SQL> CREATE TABLE dept30
2 AS
3 SELECT empno, ename, sal*12 ANNSAL, hiredate
4 FROM emp
5 WHERE deptno=30;
Table created.
SQL> DESCRIBE dept30
Name Null? Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR(10)
ANNSAL NUMBER
HIREDATE DATE

Comanda ALTER TABLE

• Adauga o coloana;
• Modifica o coloana existenta;
• Defineste o valoare implicita pentru o coloana.
SQL> ALTER TABLE table
2 ADD (column datatype [DEFAULT expr]
3 [, column datatype] …);

SQL> ALTER TABLE table


2 MODIFY (column datatype [DEFAULT expr]
3 [, column datatype] …);

Comanda este utila daca se doreste modificarea structurii unei tabele. Se pot
adauga noi coloane utilizând clauza ADD:
Sintaxa:
- table numele tabelei;
- column numele noii coloane;
- datatype tipul datei si lungimea;
- DEFAULT expr specifica valoarea implicita pentru coloana.
Se poate modifica o coloana existenta utilizând clauza MODIFY.

Adaugarea unei coloane

SQL> ALTER TABLE dept30


2 ADD (job VARCHAR(9));
Table altered.

SQL> SELECT * FROM dept30;


EMPNO ENAME ANNSAL HIREDATE JOB
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP-81

5
7499 ALLEN 19200 20-FEB-81
7844 TURNER 18000 08-SEP-81

6 rows selected.

Observatii:
Se pot adauga, modifica coloane, dar nu se pot elimina din tabela. Nu puteti
specifica locul de aparitie al noii coloane. Noua coloana devine ultima coloana. Daca
tabela contine înregistrari în momentul adaugarii unei noi coloane, atunci noua
coloana se initializeaza cu valori nule pentru toate înregistrarile.

Modificarea unei coloane

SQL> ALTER TABLE dept30


2 MODIFY (ename VARCHAR(15));
Table altered.

Se pot modifica specificatiile coloanelor utilizând comanda ALTER TABLE,


cu clauza MODIFY. Modificarile permise pot fi schimbarea tipului de data, marimea
si valoarea initiala.
Observatii:
• Se poate mari latimea sau precizia unei coloane numerice
• Se poate miscsora latimea unei coloane daca aceasta contine numai valori nule sau
daca tabela nu are randuri
• Se poate schimba tipul de date daca coloana contine numai valori null
• Se poate converti o coloana de tip CHAR la una de tip VARCHAR2 sau invers
daca aceasta contine valori null sau daca nu-i schimbati latimea
• Schimbarea valorii predefinite pentru o coloana afecteaza numai inserarile
ulterioare in tabela

Stergerea unei tabele

Sinatxa:
DROP TABLE table;

SQL> DROP TABLE dept30


Table dropped.

Comanda DROP TABLE sterge definitia uni tabele Oracle8. Cand se aplica
comanda DROP unei tabele, baza de date pierde toate înregistrarile din tabela,
împreuna cu indexurile asociate acesteia.
Comanda este ireversibila.
Observatii:
• Toate datele sunt sterse
• Orice view sau sinonim va ramane dar va fi invalid
• Orice tranzactie in curs va fi finalizata
• Numai utilizatorul care a creat tabela sau cel care are privilegiul DROP ANY
TABLE poate sterge o tabela

6
Modificarea numelui unui obiect

Pentru a modifica numele unei tabele, reprezentari, seqence sau synonym se


foloseste comanda RENAME
Sintaxa:
RENAME old_name TO new_name;
- old_name numele vechi al obiectului;
- new_name numele nou al oobiectului;

SQL> RENAME dept30 TO department;


Table renamed.

Numai proprietarul obiectului poate modifica numele obiectului.

Trunchierea unei tabele

Comanda sterge toate înregistrarile din tabela specificata, eliberând spatiul


folosit de tabela. Operatiunea este ireversibila. Se mai poate utiliza comanda
DELETE.
Sinatxa:
TRUNCATE TABLE table;
- table numele tabelei.

SQL> TRUNCATE TABLE department;


Table truncated.

Comanda DELETE sterge înregistrarile din tabela, dar nu elibereaza spatiu de


stocare (facând astfel posibila readucerea înregistrarilor).

Adaugarea comentariilor unei tabele

Se pot adauga comentarii unei tabele utilizând comanda COMMENT.


Comentariile pot fi vizualizate interogând dictionarul de date, si anume:
- ALL_COL_COMMENTS;
- USER_COL_COMMENTS;
- ALL_TAB_COMMENTS;
- USER_TAB_COMMENTS.
Se pot adauga comentarii de pâna la 2000 bytes coloanelor, tabelelor, etc.
Sinatxa:
COMMENT ON TABLE table | COLUMN table.column IS text;
- table numele tabelei;
- column numele coloanei din tabela;
- text textul comentariului.

SQL> COMMENT ON TABLE emp


2 IS “Employee Information”;
Comment created.

Se poate renunta la un comentariu, setându-l ca fiind un sir vid (‘’).


SQL> COMMENT ON TABLE emp IS “”;

7
REZUMAT

CREATE TABLE
• Creaza o tabela
• Se poate crea o tabela bazandu-ne pe o alta tabela folosind o subinterogare
ALTER TABLE
• Modifica structura tabelelor
• Schimba latimea sau tipul de date al coloanelor, poate adauga coloane
DROP TABLE
• Sterge randurile si structura tabelei
• Odata executata nu se mai poate reveni
RENAME
• Redenumeste o tabela, view, secventa sau sinonim
TRUNCATE
• Sterge toate randurile dintr-o tabela si elibereaza spatiul folosit de tabela
• Comanda DELETE sterge doar randurile
COMMENT
• Adauga un comentariu la o tabela sau la o coloana
• Interogati dictionarul de date pentru vizualizarea comentariilor

Practica

1. Creati tabelul DEPARTMENT bazat pe structura din tabelul urmator. Salvati


instructiunea in scriptul p1.sql , executati scriptul si verificati.

Column Name Id Name


Key Type
Nulls/Unique
FK Table
FK Column
Datatype Number Varchar2
Length 7 25

2. Introduceti inregistrari in tabela DEPARTMENT din tabela DEPT. Includeti doar


coloanele de care aveti nevoie.

3. Creati tabela EMPLOYEE bazata pe tabelul urmator. Salvati instructiunea intr-un


script p3.sql si apoi executati scriptul.

Column Name ID LAST_NAME FIRST_NAME DEPT_ID


Key Type
Nulls/Unique
FK Table
FK Column
Datatype Number Varchar2 Varchar2 Number
Length 7 25 25 7

8
4. Modificati tabela EMPLOYEE pentru a permite nume mai lungi in coloana
Last_name.

5. Asigurati-va ca cele doua tabele create sunt stocate de dictionarul de date.

6. Creati tabela EMPLOYEE2 bazata pe structura tabelei EMP, incluzind doar


coloanele EMPNO, ENAME si DEPTNO. Redenumiti coloanele in noua tabela astfel:
ID, LAST_NAME, DEPT_ID.

7. Stergeti tabela EMPLOYEE.

8. Redenumiti tabela EMPLOYEE2 in EMPLOYEE.

9. Adaugati comentarii la definitiile celor 2 tabele descriindu-le. Vizualizati


modificarile in dictionarul de date.

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