Podstawy języka SQL
Strona 77
INSERT INTO manager
SELECT (empno, ename, sal, job, hiredate)
FROM emp
WHERE job='MANAGER';
Modyfikacja wierszy
Polecenie UPDATE
Do zmiany zawartości wierszy służy polecenie UPDATE.
UPDATE
UPDATE
UPDATE
UPDATE
nazwa_tabeli [alias]
SET
SET
SET
SET
kolumna = { wyra
ż
enie | podzapytanie }
[ , kolumna= { wyra
ż
enie | podzapytanie } ...]
[
WHERE
WHERE
WHERE
WHERE
warunek ];
Przykład
UPDATE
dept
SET
dname='MARKETING'
loc='DENVER'
WHERE
deptno=20;
Jeśli nie wpiszemy klauzuli
WHERE
,
to zostaną zmodyfikowane wszystkie
wiersze tabeli.
W poleceniu UPDATE można używać podzapytań, zarówno zagnieżdżonych jak
i skorelowanych.
Usuwanie wierszy
Polecenie DELETE
Do usuwania wierszy z tabeli służy polecenie DELETE.
DELETE
DELETE
DELETE
DELETE
[
FROM
FROM
FROM
FROM
] tabela
[
WHERE
WHERE
WHERE
WHERE
warunek ];
Warunek w klauzuli
WHERE
określa, które wiersze będą usunięte.
Przykład
Podstawy języka SQL
Strona 78
DELETE FROM emp
WHERE job='MANAGER';
Zostaną usunięci prasownicy pracujący na stanowisku MANAGER.
Transakcje
Co to jest transakcja?
Transakcja to operacja zmiany stanu bazy, składającą się z wielu operacji aktualizacji
wierszy w tabeli. W przypadku przerwania operacji zmiany bazy w trakcie trwania
transakcji, baza powinna wrócić do stanu sprzed transakcji. Dopiero po zakończeniu
transakcji zmiany dokonane w czasie transakcji będą widoczne dla innych użytkowników.
Transakcja rozpoczyna się automatycznie podczas wykonywania pierwszej operacji
DML — zmiany stanu bazy i trwa do:
•
jawnego zatwierdzenia transakcji — polecenie COMMIT. Zmiany stają się
nieodwracalne i widoczne dla innych użytkowników;
•
jawnego polecenia wycofania transakcji — polecenie ROLLBACK. Baza danych
wraca wtedy do stanu sprzed transakcji;
•
wykonania polecenia DDL (CREATE, ALTER, DROP). Każde takie polecenie jest
transakcją i zatwierdza niezatwierdzoną transakcję wcześniejszą;
•
zakończenia sesji aplikacji — w zależności od aplikacji transakcja jest albo
zatwierdzana albo wycofywana;
•
przerwania sesji — awaria sieci, brak zasilania — transakcje są wycofywane.
Transakcja powinna tworzyć spójną całość, należy unikać zbyt długich transakcji —
powinno się je zatwierdzać po wykonaniu części stanowiącej logiczną całość. Dzięki temu
oszczędzamy zasoby systemowe i umożliwiamy innym użytkownikom korzystanie
z wprowadzonych zmian.
Polecenie COMMIT
Polecenie to służy do jawnego zatwierdzania transakcji.
COMMIT
COMMIT
COMMIT
COMMIT
[
WORK
WORK
WORK
WORK
];
Polecenie to powoduje:
•
zakończenie transakcji,
•
zatwierdzenie zmian — stają się nieodwracalne,
•
zmiany stają się widoczne dla innych użytkowników,
•
usunięcie wszystkich blokad i wszystkich punktów zachowania.
Podstawy języka SQL
Strona 79
Wykonanie jakiegokolwiek polecenia DDL spowoduje taki sam efekt, jak wykonanie
polecenia COMMIT.
Polecenie ROLLBACK
Służy do jawnego wycofywania transakcji.
ROLLBACK
ROLLBACK
ROLLBACK
ROLLBACK
[
WORK
WORK
WORK
WORK
];
Polecenie ROLBACK powoduje:
•
zakończenie transakcji,
•
wycofanie wszystkich zmian dokonanych w sesji od początku transakcji,
•
usunięcie wszystkich blokad i wszystkich punktów zachowania.
Punkty zachowania
Punkty zachowania stosuje się, aby podzielić transakcje na mniejsze części.
SAVEPOINT
SAVEPOINT
SAVEPOINT
SAVEPOINT
nazwa_punktu_zachowania;
Wprowadzenie punktu zachowania pozwala wycofać transakcję do określonego punktu
zachowania, nie tracąc przy tym zmian wprowadzonych wcześniej.
Do wycofania zmian do ostatniego punktu zachowania służy następujące polecenie:
ROLLBACK
ROLLBACK
ROLLBACK
ROLLBACK
[
WORK
WORK
WORK
WORK
]
TO
TO
TO
TO
[
SAVEPOINT
SAVEPOINT
SAVEPOINT
SAVEPOINT
] nazwa_punktu_zachowania;
Polecenie to:
•
wycofuje część transakcji do podanego punktu zachowania,
•
zachowuje ten punkt zachowania, ale powoduje utartę wszystkich późniejszych,
•
zwalnia blokady założone przez polecenia wydane po tym punkcie zachowania.
Niejawne wycofanie
Niejawne całkowite wycofanie transakcji ma miejsce w przypadku np. przerwania sesji
użytkownika, awarii komputera, braku zasilania itp.
Niejawne częściowe wycofanie transakcji ma miejsce w przypadku błędu wykonania
polecenia. Wycofywane są wtedy zmiany dokonane przez ten błędny rozkaz.
Podstawy języka SQL
Strona 80
Automatyczny COMMIT
W SQL*Plus możemy wymusić automatyczne zatwierdzanie transakcji po każdym
poleceniu INSERT, UPDATE i DELETE.
SET
SET
SET
SET
AUTO
AUTO
AUTO
AUTO
[
COMMIT
COMMIT
COMMIT
COMMIT
]
ON
ON
ON
ON
Dyrektywę odwołujemy poleceniem:
SET
SET
SET
SET
AUTO
AUTO
AUTO
AUTO
[
COMMIT
COMMIT
COMMIT
COMMIT
]
OFF
OFF
OFF
OFF