Database
 sql >> Baza danych >  >> RDS >> Database

Polecenia TCL w SQL

W Structured Query Language, TCL to skrót od Transaction Control Language. Pojedyncza jednostka pracy w bazie danych jest tworzona po wykonaniu kolejnych poleceń, co jest znane jako transakcja.

Istnieje kilka poleceń w Structured Query Language, a polecenie Transaction Control Language jest jednym z poleceń SQL. Polecenia TCL obsługują transakcje w bazie danych

W Structured Query Language, Commit, Rollback i Savepoint to polecenia języka kontroli transakcji szeroko stosowane w SQL.

Teraz zrozummy i dowiedzmy się, jak polecenia języka kontroli transakcji działają w języku zapytań strukturalnych za pomocą kilku przykładów. Polecenia języka kontroli transakcji to:

  1. Polecenie ZATWIERDZ
  2. Polecenie WYCOFANIA
  3. Polecenie ZAPISZ PUNKT

Polecenie ZATWIERDZ

Commit Command w SQL służy do zapisywania na dysku wszystkich transakcji, które zmieniają się na stałe. Za każdym razem, gdy wykonujemy operację na poleceniach języka definicji danych (DDL), takich jak polecenie INSERT, polecenie UPDATE i polecenie DELETE, wszelkie modyfikacje wprowadzone przez te polecenia są trwałe, ale przed zamknięciem bieżącej sesji lub do końca sesji. Możemy łatwo cofnąć operację, którą wykonaliśmy za pomocą języka definicji danych, zanim sesja zostanie zamknięta. Polecenie Zatwierdź służy do trwałego zapisania modyfikacji w pamięci bez kończenia sesji.

Składnia:

COMMIT;

Jeśli masz w systemie istniejącą bazę danych, użyj tej istniejącej bazy danych lub utwórz nową bazę danych. Użyjemy istniejącej bazy danych firmy.

USE Company

Weź pod uwagę już istniejące tabele pracowników, które zawierają określone dane:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4

W SQL zapytanie START TRANSACTION jest używane do rozpoczęcia transakcji.

START TRANSACTION;           

Teraz wstawimy dwa rekordy do istniejącej tabeli Pracownicy. Aby wstawić wiele rekordów, użyjemy poniższego oświadczenia:

INSERT INTO EMPLOYEES (EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT, MANAGERID) VALUES (4002, 'ASHWINI', 'BAGHAT', 54500, 'JAIPUR', 'JAVA', 3), (4003, 'PURVA', 'DHANDEKAR', 57000, 'PUNE', 'TESTING', 4);

Użyjemy teraz zapytania SELECT, aby zweryfikować, czy rekordy zostały pomyślnie wstawione do tabeli.

SELECT * FROM EMPLOYEES;

Wyjście powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 JAIPUR JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTOWANIE 4

Dane wyjściowe pokazują, że wszystkie rekordy zostały wstawione pomyślnie.

Aby zapisać operację INSERT w tabeli Employees, wykonamy polecenie COMMIT.

COMMIT;

W SQL domyślnie włączone jest automatyczne zatwierdzanie. Aby wyłączyć automatyczne zatwierdzanie w SQL, ustaw wartość automatycznego zatwierdzania na 0.

Zaktualizujemy identyfikator pracownika 4002 i ustawimy miasto jako 'Noida. Użyj poniższego zapytania, aby zaktualizować rekord pracownika.

UPDATE EMPLOYEES SET CITY = 'NOIDA' WHERE EMPLOYEEID = 4002;

Użyjemy teraz zapytania SELECT, aby zweryfikować, czy rekord został pomyślnie zaktualizowany w tabeli.

SELECT * FROM EMPLOYEES;

Wyjście powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTOWANIE 4

Jak widać w danych wyjściowych, miasto o identyfikatorze pracownika 4002 zostało zmodyfikowane.

Aby zapisać zmiany w tabeli pracowników, napiszemy polecenie COMMIT.

COMMIT;

Teraz usuniemy identyfikator pracownika 4003 z tabeli Pracownicy. Użyj poniższego zapytania, aby usunąć rekord pracownika.

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

Użyjemy teraz zapytania SELECT, aby sprawdzić, czy rekord został pomyślnie usunięty z tabeli.

SELECT * FROM EMPLOYEES;

Wyjście powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3

Dane wyjściowe potwierdzają, że usunęliśmy dane 4003 identyfikatora pracownika.

Aby zapisać zmiany w tabeli pracowników, napiszemy polecenie COMMIT.

COMMIT;

Polecenie ZAPISZ PUNKT

Wykonywane operacje na bazie danych można podzielić na dwie części. Rozważmy na przykład wszystkie wykonane przez nas instrukcje usuwania jako jeden segment transakcji, a instrukcję aktualizacji jako jeden segment transakcji. Aby zapisać zapytania insert w części insert i usunąć zapytania w części delete tej samej transakcji, używamy polecenia SAVEPOINT w SQL. Załóżmy, że chcemy zapisać wszystkie zapytania związane z usuwaniem za pomocą punktu zapisu o nazwie delete. Aby zapisać wszystkie operacje związane z usuwaniem w jednym punkcie zapisu, po wykonaniu zapytania usuwającego musimy wykonać komendę SAVEPOINT, a następnie nazwę punktu zapisu.

Składnia:

SAVEPOINT savepoint name; 

Polecenie COFNIĘCIE

Realizując transakcję, zbudowaliśmy savepointy, aby zapisać różne segmenty transakcji. W miarę zmiany wymagań Użytkownika, Użytkownik może cofnąć transakcję w różnych punktach zapisu. Rozważmy scenariusz:Zainicjowaliśmy transakcję, po której nastąpiło utworzenie tabeli i wstawienie rekordu do tabeli. Nazwany punkt zapisu INS zbudowaliśmy po dodaniu rekordów do tabeli. Po wstawieniu wykonaliśmy operację usunięcia, a później przypomnieliśmy sobie, że przez pomyłkę usunęliśmy błędne rekordy. Cofniemy naszą transakcję, aby dotrzeć do punktu zapisu INS. Aby cofnąć transakcję, użyj polecenia ROLLBACK.

Możemy cofnąć operację, którą wykonaliśmy lub cofnąć całą transakcję w punkcie zapisu.

Składnia przywracania operacji:

ROLLBACK;

Składnia do wycofania transakcji:

ROLLBACK TO savepoint;

Przykłady poleceń SAVEPOINT i ROLLBACK:

Jeśli masz w systemie istniejącą bazę danych, użyj tej istniejącej bazy danych lub utwórz nową bazę danych. Wybierzemy istniejącą już bazę danych o nazwie Firma.

USE Company

Rozważ istniejące tabele pracowników, które zawierają następujące zapisy:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3

W SQL zapytanie START TRANSACTION jest używane do rozpoczęcia transakcji.

START TRANSACTION;           

Teraz wstawimy dwa rekordy do istniejącej tabeli Pracownicy. Aby wstawić wiele rekordów, użyjemy poniższego oświadczenia:

INSERT INTO EMPLOYEES (EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT, MANAGERID) VALUES (4003, 'PURVA', 'DHANDEKAR', 57000, 'PUNE', 'TESTING', 4), (5001, 'ASHWIN', 'PATEL', 54500, 'JAIPUR', 'JAVA', 3);

Użyjemy teraz zapytania SELECT, aby zweryfikować, czy rekordy zostały pomyślnie wstawione do tabeli.

SELECT * FROM EMPLOYEES;

Wyjście powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTOWANIE 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Jak wszyscy wiemy, polecenie SAVEPOINT w SQL służy do zapisywania różnych części tej samej transakcji. Załóżmy, że Insertion to jeden z segmentów naszej transakcji. Użyj punktu zapisu, aby zapisać ten segment wstawiania jako wstawianie.

SAVEPOINT Insertion;

Teraz wykonamy operację UPDATE w tabelach Employee i zaktualizujemy wynagrodzenie pracownika o 1,2 dla identyfikatora pracownika 2003.

UPDATE EMPLOYEES SET SALARY = SALARY * 1.2 WHERE EMPLOYEEID = 2003;

Sprawdzimy krzyżowo operację aktualizacji, wykonując zapytanie SELECT w tabeli Pracownicy:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
2003 RUCHIKA JAIN 60000 MUMBAJ TESTOWANIE 4

Powyższe wyniki zapytania pokazują, że rekord identyfikatora pracownika 2003 został pomyślnie zaktualizowany.

Rozważ zapytanie o aktualizację jako jeden z segmentów naszej transakcji. Zapiszemy część operacji aktualizacji za pomocą SAVEPOINT o nazwie Aktualizacja.

SAVEPOINT Updation;

Teraz wykonamy operację usuwania na tabeli Pracownicy. Wykonamy operację usuwania na tabeli pracowników, w której wynagrodzenie pracownika jest większe niż 60000.

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

Sprawdzimy krzyżowo operację usuwania, wykonując zapytanie SELECT w tabeli Pracownicy:

SELECT * FROM EMPLOYEES;

Wyjście powyższego zapytania:

ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2003 RUCHIKA JAIN 60000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTOWANIE 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Powyższe zapytanie pokazuje, że usunięcie rekordów pracowników powiodło się.

Rozważ zapytania dotyczące usuwania jako jeden segment naszej transakcji. Zapiszemy część operacji aktualizacji za pomocą SAVEPOINT o nazwie Usuwanie.

SAVEPOINT Deletion;

Nagle Użytkownik zdał sobie sprawę, że zapytanie, które chcieliśmy wykonać podczas operacji usuwania, nie powinno być tym zapytaniem. W takiej sytuacji użytkownicy powrócą do całej transakcji do SAVEPOINT; Użytkownik może cofnąć się do dowolnego PUNKTÓW ZAPISU, które chce przywrócić, np. Wstawianie, Aktualizacja PUNKT ZAPIS.

ROLLBACK TO Insertion;

Jeśli użytkownik nie chce usunąć rekordów. W związku z tym użytkownik zostanie cofnięty do punktu zapisu wstawiania.

Aby sprawdzić, czy mamy tę samą tabelę pracowników, którą mieliśmy przed wykonaniem operacji aktualizacji i usunięcia. Aby pobrać dane pracowników, wykonaj operację WYBIERZ na tabeli pracowników.

SELECT * FROM EMPLOYEES;
ID PRACOWNIKA FIRST_NAME LAST_NAME WYNAGRODZENIE MIASTO DZIAŁ IDENTYFIKATOR KIEROWCY
1001 VAIBHAVI MISHRA 65000 PUNE WYROCZNIA 1
1002 VAIBHAV SHARMA 60000 NOIDA WYROCZNIA 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACI SHARMA 55500 CZANDIGAR WYROCZNIA 1
2002 PRZYJMUJ SIĘ JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAJ TESTOWANIE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAJ JAVA 3
4001 RAJESH GOUD 60500 MUMBAJ TESTOWANIE 4
4002 ASHWINI TORBA 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTOWANIE 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niespodzianki dotyczące wydajności i założenia:DATADODANO

  2. Zdarzenia i wątki w .NET

  3. Co to jest klucz kandydata w projekcie bazy danych?

  4. Używanie pseudokolumn z połączonym serwerem

  5. Czym są strumienie sekwencyjne i równoległe w Javie?