|
Limbajul de manipulare a datelor (DML- Data Manipulation Language)
SQL furnizeaza patru comenzi care permit consultarea, modificarea si actualizarea continutului bazei de date. Actualizarea se refera la adaugarea unor noi randuri intr-un tabel (INSERT), la modificarea uneia sau mai multor valori dintr-un rand (UPDATE) si la stergerea unor randuri dintr-un tabel (DELETE). De asemenea, DML furnizeaza o comanda puternica ce permite interogarea obiectelor create cu ajutorul limbajului de definire a datelor (DDL). Consultarea se face cu ajutorul comenzii SELECT (deja studiata).
Cererile limbajului DML pot fi formulate direct, utilizand interfata SQL*PLUS sau pot fi utilizate in utilitare ale sistemului ORACLE. Ele pot fi, de asemenea, incapsulate intr-un program PL/SQL.
In functie de momentul in care se doreste realizarea actualizarilor asupra bazei de date, utilizatorul poate folosi una din comenzile
SET AUTOCOMMIT ON- schimbarile se efectueaza automat
SET AUTOCOMMIT OFF- schimbarile sunt pastrate intr-un buffer pana la executia uneia din instructiunile:
o COMMIT- are rolul de a permanentiza schimbarile efectuate;
o ROLLBACK- determina anularea schimbarilor realizate.
v Comanda INSERT se foloseste pentru a insera randuri intr-un tabel.
Forme:
a) INSERT INTO tabel [(col1, col2, .)]
VALUES (expresie 1, expresie2, .);
b) INSERT INTO table [(col1, col2,.)]
comanda_SELECT;
Prima forma permite inserarea directa a unei linii intr-un tabel, iar a doua forma permite inserarea mai multor linii care sunt rezultatul unei comenzi SELECT.
Ex:- inserarea in tabelul dept a unui nou departament cu codul 70, numele CONTROLLING si sediul in LOS ANGELES:
INSERT INTO dept
VALUES (70,'CONTROLLING','LOS ANGELES');
Obs:
daca nu a fost specificata lista coloanelor si daca exista campuri care nu au valori efective, acestor campuri li se va atribui valoarea NULL ;
este permisa folosirea variabilelor de substitutie.
v Comanda DELETE se foloseste pentru suprimarea randurilor unui tabel, dar fara eliberarea spatiului.
DELETE FROM tabel
[WHERE conditie];
Ex:- stergerea departamentului cu codul 70:
DELETE FROM dept
WHERE deptno=70;
Daca nu este specificata nici o conditie se sterg toate randurile tabelului.
In clauza WHERE pot fi folosite si subinterogari.
Stergerile accidentale pot fi omise, restaurandu-se valorile initiale prin comanda SET AUTOCOMMIT OFF.
v Comanda UPDATE modifica randurile unui tabel.
Forme:
UPDATE tabel
SET coloana1=expresie1[, coloana2=expresie2,.]
[WHERE conditie];
UPDATE table
SET (coloana1, coloana2, .)=(subinterogare)
[WHERE conditie];
Ex:-modificarea locatiei departamentului 70
UPDATE dept
SET loc='LAS VEGAS'
WHERE deptno=70;
Limbajul de definire a datelor (DDL- Data Definition Language)
Limbajul de definire a datelor permite definirea bazelor de date si a obiectelor care compun aceste baze de date. Definirea unui obiect include, in general, crearea, modificarea si suprimarea obiectului. Limbajul de definire a datelor consta din acele instructiuni SQL (CREATE, ALTER, DROP) care permit crearea, modificarea si distrugerea obiectelor bazei de date.
Definirea tabelelor
Tabelul reprezinta o structura de date ce contine datele unei baze de date relationale. Definirea tabelelor presupune crearea de noi tabele (CREATE) , modificarea structurii tabelelor (ALTER) si suprimarea tabelelor (DROP).
Crearea unui tabel consta in generarea structurii sale, adica atribuirea unui nume tabelului si definirea caracteristicilor sale.
Forma simplificata a comenzii CREATE TABLE este urmatoarea:
CREATE TABLE nume_tabel (nume_coloana_1 tip_date [NOT NULL]
nume_coloana_2 tip_date [NOT NULL],
nume_coloana_n tip_date [NOT NULL]);
Exemplu: se creeaza un tabel cu numele angajati si cu structura marca, nume,salariu:
CREATE TABLE angajati (marca NUMBER(4) NOT NULL, nume VARCHAR2(15), salariu NUMBER(10));
Un tabel poate fi creat dintr-un tabel existent:
CREATE TABLE tabel_nou (nume_coloana_1, nume_coloana_2, ., nume_coloana_n)
AS (SELECT nume_coloana_1, nume_coloana_2, ., nume_coloana_n
FROM tabel_vechi WHERE conditie);
Exemplu: se creeaza un tabel cu structura cod, nume, salariu avand campurile preluate din tabelul emp:
CREATE TABLE ang (cod, nume, salariu)
AS SELECT empno, ename, sal FROM emp;
Modificarea structurii unui tabel se realizeaza cu ajutorul comenzii ALTER TABLE care permite:
v adaugarea unei coloane la tabelul existent
v modificarea unei coloane existente-pot fi modificate tipul de date, dimensiunea sau valoarea implicita.
Sintaxa:
ALTER TABLE nume_tabel
ADD nume_coloana tip_de_data;
MODIFY nume_coloana tip_de_data;
Exemple:
sa se modifice structura tabelului angajati, prin adaugarea coloanei meserie:
ALTER TABLE angajati
ADD (meserie VARCHAR2(10));
sa se modifice structura tabelului angajati, prin modificarea dimensiunii coloanei marca din NUMBER(4) in NUMBER(5):
ALTER TABLE angajati
MODIFY (marca NUMBER(5)) ;
sa se modifice structura tabelului angajati prin modificarea tipului de date al coloanei marca din numeric (NUMBER) in sir de caractere (VARCHAR2):
ALTER TABLE angajati
MODIFY (marca VARCHAR2(5));
Stergerea unui tabel se realizeaza cu ajutorul comenzii DROP TABLE. Executia acestei comenzi este ireversibila, adica nu poate fi executata o comanda ROLLBACK dupa DROP TABLE.
Sintaxa:
DROP TABLE nume_tabel;
Exemplu: stergerea tabelului ang:
DROP TABLE ang;