Śledź nas na:



DML, Modyfikowanie zawartości relacji (tabel) bazy danych.

Polecenia manipulowania danymi DML: sposoby wypełniania relacji krotkami, modyfikowania zawartosci relacji i usuwania krotek.

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);


Zobacz także