Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Limbajul de manipulare a datelor este o parte importanta a SQL. Cand dorim sa adaugam (INSERT), sa modificam (UPDATE) sau sa stergem (DELETE) date din baza de date vom executa o comanda a limbajului de manipulare a datelor (Data Manipulation Language).
Adaugarea unui rand intr-o tabela se va realiza cu ajutorul comenzi INSERT care are sintaxa:
INSERT INTO table[(column [,column . ])]
VALUES (value [,value . ]);
unde
table este numele tabelei in care se va insera un rand.
column este numele coloanei din tabela.
value este valoarea corespunzatoare coloanei.
Aceasta comanda adauga numai un rand la un moment dat intr-o tabela.
Inserarea unui rand continand valori pentru fiecare coloana a tabelei. Vom insera un rand nou in tabela dept prin urmatorea secventa:
INSERT INTO dept(deptno, dname, loc)
VALUES (50, 'ANALIST', 'ORADEA');
Inserarea unui rand care contine valori NULL se poate realiza implicit prin omiterea coloanei care contine valori NULL din lista de coloane. Vom exemplifica prin exemplu urmator:
INSERT INTO dept(deptno, dname)
VALUES (60, 'MIS');
Inserarea unui rand care contine valori NULL se poate realiza explicit prin specificarea cuvantului NULL in lista de valori. Vom exemplifica prin exemplu urmator:
INSERT INTO dept(deptno, dname, loc)
VALUES (70, 'FINANCIAR', NULL);
Inserarea valorilor prin utilizarea variabilelor de substitutie va permite introducerea valorilor interactiv. De exemplu, vom introduce informatii interactiv in tabela dept prin secventa urmatoare:
INSERT INTO dept(deptno, dname, loc)
VALUES (&dept_id '&dept_name', '&dept_loc');
In linia de prompter se va afisa un mesajul pentru fiecare variabila, de forma ' Enter value for <variabila> :'.
Afisarea unui mesaj definit de utilizator prin utilizarea comenzii ACCEPT din SQL*PLUS, se va realiza astfel:
ACCEPT dept_id PROMPT ' Introduce-ti dept_id:
ACCEPT dept_name PROMPT ' Introduce-ti dept_name:
ACCEPT dept_loc PROMPT ' Introduce-ti dept_loc:
INSERT INTO dept(deptno, dname, loc)
VALUES (&dept_id '&dept_name', '&dept_loc');
Copierea unor inregistrari dintr-o alta tabela utilizand comanda INSERT va fi exemplificata prin urmatorul exemplu:
INSERT INTO manager(id, name, salary, hiredate)
SELECT empno, ename, sal, hiredate
FROM emp
WHERE job = ' MANAGER';
Numarul de coloane in clauza INSERT trebuie sa fie acelasi cu numarul de coloane din comanda SELECT.
Modificarea unui rand existent dintr-o tabela se realizeaza utilizand comanda UPDATE, care are sintaxa:
UPDATE table
SET column = value [, column = value]
[WHERE condition]
unde:
table este numele tabelei.
column este numele coloanei din tabela.
value valoarea corespunzatoare coloanei.
condition conditia care identifica randurile care vor fi modificate.
Utilizarea clauzei WHERE pentru a specifica randurile care vor fi modificate intr-o tabela:
UPDATE emp
SET deptno = 20
WHERE empno = 7782;
Se modifica coloana deptno pentru inregistrarile care au campul empno = 7782.
Subqueri multiple coloane pot fi implementate intr-o clauza SET a comenzi UPDATE. Vom exemplifica acest lucru prin urmatorul exemplu:
UPDATE emp
SET (job, deptno) =
(SELECT job, deptno
FROM emp
WHERE empno = 7499)
WHERE empno = 7698;
Se modifica coloanele job si deptno pentru angajatul cu codul 7698, coloanele vor fi egale cu a angajatului cu codul 7499.
Putem utiliza subqueri intr-o comanda UPDATE pentru a modifica randuri intr-o tabela bazate pe valori dintr-o alta tabela. Vom exemplifica printr-un exemplu:
UPDATE employee
SET deptno = (SELECT deptno
FROM emp
WHERE empno = 7788)
WHERE job = (SELECT job
FROM emp
WHERE empno = 7788);
In exemplu, se modifica numarul de departament pentru angajatii care au acelasi job ca si angajatul cu codul 7788.
Nu poate fi modificata valoarea unei coloane dintr-o inregistrare daca aceea coloana este legata printr-o constrangere de integritate. De exemplu, modificarea coloanei deptno din tabela emp va determina aparitia unei erori, deoarece coloana deptno este cheie externa
UPDATE emp
SET deptno = 55
WHERE deptno = 10;
Pentru a suprima un rand existent dintr-o tabela se va utiliza comanda DELETE, care are urmatoarea sintaxa:
DELETE [FROM] table
[WHERE condition]
unde:
table este numele tabelei.
condition este o conditie care identifica randurile care vor fi suprimate.
Randurile care se vor sterge se vor specifica prin clauza WHERE.
DELETE FROM dept
WHERE dname = 'ANALIST';
Se vor sterge toate randurile din tabela dept care au numele departamentului ANALIST.
Daca clauza WHERE este omisa se vor sterge toate randurile din tabela.
DELETE FROM dept;
Putem utiliza subqueri-uri la stergerea randurilor dintr-o tabela, bazandu-ne pe valori dintr-o alta tabela. Vom exemplifica prin urmatorul exemplu:
DELETE FROM employee
WHERE deptno =
(SELECT deptno
FROM dept
WHERE dname ='VANZARI');
In exemplu de mai sus se vor sterge toate randurile din tabela employee care au numarul de departament egal cu angajati din departamentul VANZARI.
Nu putem sterge un rand care contine o cheie primara care a fost utilizata ca si cheie externa intr-o alta tabela. De exemplu, stergerea randurilor din tabela dept care au coloana deptno =10, va determina aparitia unei erori, deoarece deptno este o cheie primara in tabela dept si a fost utilizata ca si cheie externa in tabela emp.
DELETE FROM dept
WHERE deptno = 10;
Copyright © 2024 - Toate drepturile rezervate