DML, Modyfikowanie zawartości relacji (tabel) bazy danych.
Wstawiajac wartosci do wszystkich atrybutów relacji można pominac liste atrybutów.
Wartosci w klauzuli INSERT musza wystepowac w takiej samej kolejnosci, w jakiej
wystepowały definicje atrybutów w poleceniu CREATE TABLE. W celu zwiekszenia
przejrzystosci i niezależnosci aplikacji zaleca sie podawanie listy nazw atrybutów.
Wstawianie krotek do relacji;
INSERT INTO nazwa_relacji VALUES (wartosc1, ..., wartoscn); INSERT INTO nazwa_relacji [ (atrybut1, ..., atrybutn)] VALUES (wartosc1, ..., wartoscn);
Przykład:
INSERT INTO zespoly VALUES (60,’MULTIMEDIA’,null); INSERT INTO zespoly (id_zesp, nazwa) VALUES (70, ‘GRAFIKA’);
Wstawianie parametryzowane w SQL*Plus;
INSERT INTO zespoly (id_zesp, nazwa, adres) VALUES (&identyfikator, ‘&nazwa’, ‘&adres’);
Wstawianie krotek bedacych wynikiem zapytania;
INSERT INTO nazwa_relacji [(atrybut1, ..., atrybutn)] SELECT [(atrybut1, ..., atrybutn)] FROM relacja1 [(relacja2, ...];
Przykład:
INSERT INTO prac30 (numer_prac, nazwisko_prac, numer_zesp) SELECT id_prac, nazwisko, id_zesp FROM pracownicy WHERE id_zesp=30;
Modyfikowanie krotek relacji.
Polecenie UPDATE
UPDATE relacja SET atrybut1=wartosc, atrybut2=wartosc [,...] [WHERE warunek];
uwaga: pominiecie klauzuli WHERE spowoduje, że zmodyfikowane zostana wszystkie krotki w relacji.
UPDATE pracownicy SET etat = ‘PROFESOR’ placa_pod = placa_pod*2.5 WHERE nazwisko = ‘KOSZLAJDA’;
Najczesciej spotykana wersja polecenia UPDATE jest polecenie wykorzystujace podzapytania skorelowane i zagnieżdżone.
UPDATE relacjaA SET atrybutA1 = ( SELECT atrybutB1 FROM relacjaB [WHERE ...]) [WHERE warunek];
Usuwanie krotek relacji
Polecenie DELETE
DELETE [FROM] relacja [WHERE warunek];
uwaga: klauzula WHERE okresla, które krotki należy usunac z relacji. Jeżeli klauzula WHERE nie zostanie wyspecyfikowana, to usuniete zostana wszystkie krotki z relacji.
DELETE FROM pracownicy WHERE nazwisko IN (‘BIAŁY’, ‘KONOPKA’); DELETE FROM pracownicy p WHERE p.placa_pod < ( SELECT AVG(placa_pod) FROM pracownicy WHERE (id_zesp = p.id_zesp);