Database
 sql >> Datenbank >  >> RDS >> Database

TCL-Befehle in SQL

In der Structured Query Language ist TCL eine Abkürzung für Transaction Control Language. Eine einzelne Arbeitseinheit in einer Datenbank wird gebildet, nachdem die aufeinanderfolgende Ausführung von Befehlen als Transaktion bezeichnet wird.

Es gibt einige Befehle in der Structured Query Language, und der Befehl Transaction Control Language ist einer der SQL-Befehle. TCL-Befehle handhaben die Transaktionen in einer Datenbank

In der Structured Query Language sind Commit, Rollback und Savepoint die in SQL weit verbreiteten Befehle der Transaction Control Language.

Lassen Sie uns nun anhand einiger Beispiele verstehen und lernen, wie die Befehle der Transaktionssteuerungssprache in der strukturierten Abfragesprache funktionieren. Befehle der Transaktionskontrollsprache sind:

  1. COMMIT-Befehl
  2. ROLLBACK-Befehl
  3. SAVEPOINT-Befehl

COMMIT-Befehl

Der Commit-Befehl in SQL wird verwendet, um alle Transaktionen, die sich dauerhaft ändern, auf der Festplatte zu speichern. Wann immer wir die Operation mit Data Definition Language-Befehlen (DDL) wie dem INSERT-Befehl, dem UPDATE-Befehl und dem DELETE-Befehl ausführen, sind alle Änderungen, die durch diese Befehle vorgenommen werden, dauerhaft, aber vor dem Schließen der aktuellen Sitzung oder bis zum Ende der Sitzung. Wir können den Vorgang, den wir mit der Data Definition Language durchgeführt haben, leicht rückgängig machen, bevor die Sitzung beendet wird. Der Commit-Befehl wird verwendet, um die Änderung dauerhaft im Speicher zu speichern, ohne dass die Sitzung beendet wird.

Syntax:

COMMIT;

Wenn Sie eine vorhandene Datenbank im System haben, verwenden Sie diese vorhandene Datenbank oder erstellen Sie eine neue Datenbank. Wir werden die vorhandene Datenbank Company.

verwenden
USE Company

Betrachten Sie die bereits vorhandenen Mitarbeitertabellen, die bestimmte Daten enthalten:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4

In SQL wird die Abfrage START TRANSACTION verwendet, um die Transaktion zu beginnen.

START TRANSACTION;           

Jetzt fügen wir zwei Datensätze in die vorhandene Employees-Tabelle ein. Um mehrere Datensätze einzufügen, verwenden wir die folgende Anweisung:

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

Wir werden nun die SELECT-Abfrage verwenden, um zu überprüfen, ob die Datensätze erfolgreich in die Tabelle eingefügt wurden oder nicht.

SELECT * FROM EMPLOYEES;

Ausgabe bei obiger Abfrage:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 JAIPUR JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4

Die Ausgabe zeigt, dass alle Datensätze erfolgreich eingefügt wurden.

Um die INSERT-Operation in der Employees-Tabelle zu speichern, führen wir den COMMIT-Befehl aus.

COMMIT;

In SQL ist Auto-Commit standardmäßig aktiviert. Um die Auto-Commit-Funktion in SQL zu deaktivieren, setzen Sie den Auto-Commit-Wert auf 0.

Wir werden die Mitarbeiter-ID 4002 aktualisieren und die Stadt als „Noida“ festlegen. Verwenden Sie die folgende Abfrage, um den Mitarbeiterdatensatz zu aktualisieren.

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

Wir werden nun die SELECT-Abfrage verwenden, um zu überprüfen, ob der Datensatz erfolgreich in der Tabelle aktualisiert wurde oder nicht.

SELECT * FROM EMPLOYEES;

Ausgabe bei obiger Abfrage:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4

Wie wir in der Ausgabe sehen können, wurde die Mitarbeiter-ID 4002 Stadt geändert.

Um die Änderungen in der Mitarbeitertabelle zu speichern, schreiben wir einen COMMIT-Befehl.

COMMIT;

Jetzt löschen wir die Mitarbeiter-ID 4003 aus der Mitarbeitertabelle. Verwenden Sie die folgende Abfrage, um den Mitarbeiterdatensatz zu löschen.

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

Wir werden nun die SELECT-Abfrage verwenden, um zu überprüfen, ob der Datensatz in der Tabelle erfolgreich gelöscht wurde oder nicht.

SELECT * FROM EMPLOYEES;

Ausgabe bei obiger Abfrage:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

Die Ausgabe bestätigt, dass wir die Mitarbeiter-ID 4003 gelöscht haben.

Um die Änderungen in der Mitarbeitertabelle zu speichern, schreiben wir einen COMMIT-Befehl.

COMMIT;

SAVEPOINT-Befehl

Durchgeführte Datenbankoperationen können in zwei Teile unterteilt werden. Betrachten Sie beispielsweise alle von uns ausgeführten Löschanweisungen als ein Segment der Transaktion und die Aktualisierungsanweisung als ein Segment der Transaktion. Um Einfügeabfragen im Einfügeteil und Löschabfragen im Löschteil derselben Transaktion zu speichern, verwenden wir den SAVEPOINT-Befehl in SQL. Angenommen, wir möchten alle löschbezogenen Abfragen mit dem Sicherungspunkt namens delete speichern. Um alle löschbezogenen Operationen in einem Sicherungspunkt zu speichern, müssen wir den Befehl SAVEPOINT gefolgt vom Namen des Sicherungspunkts ausführen, nachdem wir die Löschabfrage durchgeführt haben.

Syntax:

SAVEPOINT savepoint name; 

ROLLBACK-Befehl

Während der Durchführung einer Transaktion haben wir die Sicherungspunkte erstellt, um die verschiedenen Segmente der Transaktion zu speichern. Wenn sich die Anforderungen des Benutzers ändern, kann der Benutzer die Transaktion an verschiedenen Sicherungspunkten rückgängig machen. Stellen Sie sich ein Szenario vor:Wir haben eine Transaktion initiiert, gefolgt von der Tabellenerstellung und dem Einfügen von Datensätzen in die Tabelle. Wir haben den INS mit dem Namen savepoint erstellt, nachdem wir der Tabelle Datensätze hinzugefügt hatten. Nach dem Einfügen führten wir den Löschvorgang durch und erinnerten uns später daran, versehentlich die falschen Datensätze gelöscht zu haben. Wir werden unsere Transaktion rückgängig machen, um den Sicherungspunkt INS zu erreichen. Um die Transaktion rückgängig zu machen, verwenden Sie den ROLLBACK-Befehl.

Wir können die durchgeführte Operation rückgängig machen oder die gesamte Savepoint-Transaktion rückgängig machen.

Syntax zum Rollback des Vorgangs:

ROLLBACK;

Syntax zum Rollback der Transaktion:

ROLLBACK TO savepoint;

Beispiele für die Befehle SAVEPOINT und ROLLBACK:

Wenn Sie eine vorhandene Datenbank im System haben, verwenden Sie diese vorhandene Datenbank oder erstellen Sie eine neue Datenbank. Wir wählen die bereits vorhandene Datenbank mit dem Namen Company.

aus
USE Company

Betrachten Sie die vorhandenen Mitarbeitertabellen mit den folgenden Datensätzen:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

In SQL wird die Abfrage START TRANSACTION verwendet, um die Transaktion zu beginnen.

START TRANSACTION;           

Jetzt fügen wir zwei Datensätze in die vorhandene Employees-Tabelle ein. Um mehrere Datensätze einzufügen, verwenden wir die folgende Anweisung:

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

Wir werden nun die SELECT-Abfrage verwenden, um zu überprüfen, ob die Datensätze erfolgreich in die Tabelle eingefügt wurden oder nicht.

SELECT * FROM EMPLOYEES;

Ausgabe bei obiger Abfrage:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Wie wir alle wissen, wird der SAVEPOINT-Befehl in SQL verwendet, um verschiedene Teile derselben Transaktion zu speichern. Angenommen, Insertion ist ein Segment unserer Transaktion. Verwenden Sie den Sicherungspunkt, um dieses Einfügungssegment als Einfügung zu speichern.

SAVEPOINT Insertion;

Jetzt führen wir die UPDATE-Operation für die Employee-Tabellen durch und aktualisieren das Mitarbeitergehalt um 1,2 für die Mitarbeiter-ID 2003.

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

Wir werden den Aktualisierungsvorgang gegenprüfen, indem wir die SELECT-Abfrage für die Employees-Tabelle ausführen:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
2003 RUSCHIKA JAIN 60000 MUMBAI TESTEN 4

Die obigen Abfrageergebnisse zeigen, dass der Mitarbeiter-ID-Datensatz 2003 erfolgreich aktualisiert wurde.

Betrachten Sie die Aktualisierungsabfrage als ein Segment unserer Transaktion. Wir speichern den Teil des Aktualisierungsvorgangs unter Verwendung eines SAVEPOINT namens Update.

SAVEPOINT Updation;

Jetzt führen wir einen Löschvorgang für die Employees-Tabelle durch. Wir führen einen Löschvorgang für die Mitarbeitertabelle durch, wenn das Mitarbeitergehalt größer als 60000 ist.

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

Wir überprüfen den Löschvorgang, indem wir die SELECT-Abfrage für die Employees-Tabelle ausführen:

SELECT * FROM EMPLOYEES;

Ausgabe bei obiger Abfrage:

MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2003 RUSCHIKA JAIN 60000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Die obige Abfrage zeigt, dass das Löschen der Mitarbeiterdatensätze erfolgreich war.

Betrachten Sie die Löschabfragen als ein Segment unserer Transaktion. Wir speichern den Teil des Aktualisierungsvorgangs mit einem SAVEPOINT namens Deletion.

SAVEPOINT Deletion;

Plötzlich erkannte der Benutzer, dass die Abfrage, die wir für den Löschvorgang durchführen wollten, nicht diese Abfrage sein sollte. In einer solchen Situation rollen Benutzer auf die gesamte Transaktion bis zum SAVEPOINT zurück; Der Benutzer kann zu jedem SAVEPOINT zurückkehren, den er zurücksetzen möchte, z. B. Insertion, Updation SAVEPOINT.

ROLLBACK TO Insertion;

Wenn der Benutzer die Datensätze nicht entfernen möchte. Daher wird der Benutzer zum Insertion SAVEPOINT.

zurückgesetzt

Um zu überprüfen, ob wir dieselbe Mitarbeitertabelle haben, die wir vor der Durchführung der Aktualisierungs- und Löschvorgänge hatten. Um die Mitarbeiterdaten abzurufen, führen Sie die SELECT-Operation für die Mitarbeitertabelle aus.

SELECT * FROM EMPLOYEES;
MITARBEITERID FIRST_NAME NACHNAME GEHALT STADT ABTEILUNG MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1
1003 NICHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUSCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SCHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOLD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3