INSERT INTO [schema.]{nume_tabel | nume_view} [(lista_coloane)] VALUES(lista_valori) INSERT INTO [schema.]{nume_tabel | nume_view} [(lista_coloane)] subinterogareObservaţii:
INSERT /* +APPEND */ INTO ...In acest caz se elimină parcurgerea amintită pentru căutarea de spaţiu liber şi înserarea se face începând de la ultimul bloc folosit la adăugarea precedentă.
INSERT [{ALL | FIRST}] {[WHEN (conditie)] INTO ... VALUES (...) } ... [[ELSE] INTO ... VALUES (...)] instructiune_SELECT
UPDATE [schema.]nume_tabel SET coloana=valoare [, coloana=valoare]... [WHERE conditie] UPDATE nume_tabel SET (coloana [, coloana]...) = (subinterogare) [WHERE conditie]Din tabelul precizat se modifică înregistrările pentru care condiţia din clauza WHERE are valoarea true. Dacă această clauză lipseşte, atunci se modifică tot tabelul.
DELETE [FROM] [schema.]nume_tabel [WHERE conditie_where]Se elimină înregistrările din "nume_tabel" ce satisfac cu true condiţia din WHERE.
TRUNCATE TABLE [schema.]nume_tabelSe elimină toate înregistrările din tabel.
MERGE INTO {tabel_destinatie | view_destinatie}[alias-1] USING {tabel_sursa | view_sursa | interogare} [alias-2] ON (conditie) WHEN MATCHED THEN UPDATE SET coloana = expresie [, coloana = expresie] ... [clauza_WHERE] [DELETE clauza_WHERE] WHEN NOT MATCHED THEN INSERT [(coloana [, coloana] ... )] VALUES (expresie [, expresie] ... ) [clauza_WHERE] [DELETE clauza_WHERE]In tabel_destinatie, sau view_destinatie (view modificabil), se efectuează unele modificări de actualizare sau înserare.
Exemplu:
Presupunem tabelul următor:
create table persoane(cnp char(13), nume varchar2(30), prenume varchar2(30)); insert into persoane(cnp, nume, prenume) values('2580305123131','Ignat','Ana'); insert into persoane(cnp, nume, prenume) values('1580911244217','Matei','Ioan'); insert into persoane(cnp, nume, prenume) values('1591010120644','Matei','Vasile'); insert into persoane(cnp, nume, prenume) values('1630201126195','Irimia','Alin'); insert into persoane(cnp, nume, prenume) values('1660518125177','Barla','Bazil'); insert into persoane(cnp, nume, prenume) values('1661011120649','Bancescu','Gabriel'); insert into persoane(cnp, nume, prenume) values('2670518084754','Pop','Stefana'); insert into persoane(cnp, nume, prenume) values('2701007120700','Rus','Mihaiela');Acest tabel se copiază în tabelul persoane_m, care se actualizează (se modifică valori pentru coloanele nume şi prenume, se adaugă noi înregistrări) într-o anumită aplicaţie (de exemplu pe un dispozitiv mobil), după care tabelul se copiază în baza de date.
insert into persoane_m(cnp, nume, prenume) values('2580305123131','Popescu','Ana'); insert into persoane_m(cnp, nume, prenume) values('1580911244217','Matei','Ioan Aurel'); insert into persoane_m(cnp, nume, prenume) values('2670518084754','Popa','Stefana'); insert into persoane_m(cnp, nume, prenume) values('2701007120700','Rusu','Mihaiela'); insert into persoane_m(cnp, nume, prenume) values('1821115260049','Safta','Ioan'); insert into persoane_m(cnp, nume, prenume) values('2810527314008','Suteu','Valentina'); insert into persoane_m(cnp, nume, prenume) values('1820210125811','Bercea','Adrian'); insert into persoane_m(cnp, nume, prenume) values('1820609125477','Rad','Tiberiu'); insert into persoane_m(cnp, nume, prenume) values('2820726082565','Florean','Stefana');Conţinutul primului tabel:
select * from persoane;este:
CNP | NUME | PRENUME |
---|---|---|
2580305123131 | Ignat | Ana |
1580911244217 | Matei | Ioan |
1591010120644 | Matei | Vasile |
1630201126195 | Irimia | Alin |
1660518125177 | Barla | Bazil |
1661011120649 | Bancescu | Gabriel |
2670518084754 | Pop | Stefana |
2701007120700 | Rus | Mihaiela |
8 rows selected.
Datele din tabelul persoane_m se folosesc pentru actualizarea datelor din tabelul persoane:
MERGE INTO persoane a USING (SELECT cnp, nume, prenume from persoane_m) b ON (a.cnp = b.cnp) WHEN MATCHED THEN UPDATE SET a.nume = b.nume, a.prenume = b.prenume WHEN NOT MATCHED THEN INSERT (cnp, nume, prenume) VALUES (b.cnp, b.nume, b.prenume);Conţinutul primului tabel după această instrucţiune:
select * from persoane;este:
CNP | NUME | PRENUME |
---|---|---|
2580305123131 | Popescu | Ana |
1580911244217 | Matei | Ioan Aurel |
1591010120644 | Matei | Vasile |
1630201126195 | Irimia | Alin |
1660518125177 | Barla | Bazil |
1661011120649 | Bancescu | Gabriel |
2670518084754 | Popa | Stefana |
2701007120700 | Rusu | Mihaiela |
2820726082565 | Florean | Stefana |
1820210125811 | Bercea | Adrian |
2810527314008 | Suteu | Valentina |
1821115260049 | Safta | Ioan |
1820609125477 | Rad | Tiberiu |
13 rows selected.