INSERT INTO [schema.]{nume_tabel | nume_view} [(lista_coloane)] VALUES(lista_valori)
INSERT INTO [schema.]{nume_tabel | nume_view} [(lista_coloane)] subinterogare
Observaţ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.