sql >> Databasteknik >  >> RDS >> Database

TCL-kommandon i SQL

I Structured Query Language är TCL en förkortning för Transaction Control Language. En enda arbetsenhet i en databas bildas efter att kommandon utförs i följd kallas en transaktion.

Det finns några kommandon i Structured Query Language, och Transaction Control Language-kommandot är ett av SQL-kommandona. TCL-kommandon hanterar transaktionerna i en databas

I Structured Query Language är Commit, Rollback och Savepoint de kommandon för Transaction Control Language som används ofta i SQL.

Låt oss nu förstå och lära oss hur kommandona Transaction Control Language fungerar i Structured Query-språket med hjälp av några exempel. Språkkommandon för transaktionskontroll är:

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

COMMIT-kommando

Commit Command i SQL används för att spara alla transaktioner som ändras permanent på disken. Närhelst vi utför operationen på Data Definition Language-kommandon (DDL) som INSERT-kommandot, UPDATE-kommandot och DELETE-kommandot, är alla ändringar som görs av dessa kommandon permanenta men innan den aktuella sessionen stängs eller till slutet av sessionen. Vi kan enkelt ångra operationen vi utförde med hjälp av Data Definition Language innan sessionen stängs av. Commit-kommandot används för att spara ändringen permanent i lagringen utan att sessionen avslutas.

Syntax:

COMMIT;

Om du har en befintlig databas i systemet, använd den befintliga databasen eller skapa en ny databas. Vi kommer att använda den befintliga databasen Company.

USE Company

Tänk på de redan befintliga anställdas tabeller som har vissa data:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4

I SQL används START TRANSACTION-frågan för att påbörja transaktionen.

START TRANSACTION;           

Nu kommer vi att infoga två poster i den befintliga tabellen Anställda. För att infoga flera poster använder vi följande uttalande:

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

Vi kommer nu att använda SELECT-frågan för att verifiera om posterna har infogats framgångsrikt eller inte i tabellen.

SELECT * FROM EMPLOYEES;

Utdata på ovanstående fråga:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
4002 ASHWINI BAGHAT 54500 JAIPUR JAVA 3
4003 PURVA DHANDEKAR 57 000 PUNE TESTER 4

Utdata visar att alla poster har infogats.

För att spara INSERT-operationen i tabellen Employees kommer vi att köra kommandot COMMIT.

COMMIT;

I SQL är auto-commit på som standard. För att stänga av auto-commit i SQL, ställ in auto-commit-värdet till 0.

Vi kommer att uppdatera medarbetar-ID 4002 och ställa in staden som 'Noida. Använd frågan nedan för att uppdatera personalposten.

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

Vi kommer nu att använda SELECT-frågan för att verifiera om posten har uppdaterats framgångsrikt eller inte i tabellen.

SELECT * FROM EMPLOYEES;

Utdata på ovanstående fråga:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57 000 PUNE TESTER 4

Som vi kan se i utdata ändrades anställd-ID 4002 stad.

För att spara ändringarna på de anställdas bord kommer vi att skriva ett COMMIT-kommando.

COMMIT;

Nu kommer vi att ta bort anställd-id 4003 från tabellen Anställda. Använd frågan nedan för att radera personalposten.

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

Vi kommer nu att använda SELECT-frågan för att verifiera om posten har raderats framgångsrikt eller inte i tabellen.

SELECT * FROM EMPLOYEES;

Utdata på ovanstående fråga:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

Utdata bekräftar att vi har tagit bort personal-id 4003-detaljerna.

För att spara ändringarna på de anställdas bord kommer vi att skriva ett COMMIT-kommando.

COMMIT;

SAVEPOINT-kommando

Databasoperationer som utförs kan delas upp i två delar. Betrakta till exempel alla raderingssatser vi utförde som ett segment av transaktionen och uppdateringssatsen som ett segment av transaktionen. För att spara insert queries i insert delen och radera frågor i delete delen av samma transaktion använder vi kommandot SAVEPOINT i SQL. Anta att vi vill spara alla raderingsrelaterade frågor med räddningspunkten som heter delete. För att spara alla raderingsrelaterade operationer i en räddningspunkt måste vi utföra kommandot SAVEPOINT följt av räddningspunktens namn efter att ha utfört raderingsfrågan.

Syntax:

SAVEPOINT savepoint name; 

ROLLBACK-kommandot

När vi genomförde en transaktion byggde vi räddningspunkterna för att spara de olika segmenten av transaktionen. När användarens krav ändras kan användaren ångra transaktionen till olika sparpunkter. Tänk på ett scenario:Vi har initierat en transaktion följt av att tabellen skapas och posten infogas i tabellen. Vi byggde INS-namnet savepoint efter att ha lagt till poster i tabellen. Efter infogning utförde vi raderingsoperationen, och senare kom vi ihåg att vi av misstag raderade fel poster. Vi kommer att ångra vår transaktion för att nå räddningspunkten INS. För att ångra transaktionen, använd kommandot ROLLBACK.

Vi kan återställa operationen vi utförde eller återställa hela sparpunktstransaktionen.

Syntax för att återställa åtgärden:

ROLLBACK;

Syntax för att återställa transaktionen:

ROLLBACK TO savepoint;

Exempel på kommandona SAVEPOINT och ROLLBACK:

Om du har en befintlig databas i systemet, använd den befintliga databasen eller skapa en ny databas. Vi kommer att välja den redan befintliga databasen med namnet Företag.

USE Company

Tänk på den befintliga medarbetarens tabeller som har följande poster:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

I SQL används START TRANSACTION-frågan för att påbörja transaktionen.

START TRANSACTION;           

Nu kommer vi att infoga två poster i den befintliga tabellen Anställda. För att infoga flera poster kommer vi att använda nedanstående uttalande:

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

Vi kommer nu att använda SELECT-frågan för att verifiera om posterna har infogats framgångsrikt eller inte i tabellen.

SELECT * FROM EMPLOYEES;

Utdata på ovanstående fråga:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57 000 PUNE TESTER 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Som vi alla vet används kommandot SAVEPOINT i SQL för att spara olika delar av samma transaktion. Anta att infogning är ett segment av vår transaktion. Använd savepoint för att spara detta infogningssegment som infogning.

SAVEPOINT Insertion;

Nu kommer vi att utföra UPDATE-operationen i tabellerna för anställda, och vi kommer att uppdatera anställdas lön med 1,2 för anställd-id 2003.

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

Vi kommer att krysskontrollera uppdateringsoperationen genom att köra SELECT-frågan i tabellen Anställda:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
2003 RUCHIKA JAIN 60 000 MUMBAI TESTER 4

Ovanstående frågeresultat visar att anställd-id 2003-posten har uppdaterats framgångsrikt.

Betrakta uppdateringsfrågan som ett segment av vår transaktion. Vi kommer att spara uppdateringsoperationsdelen med hjälp av en SAVEPOINT som heter en uppdatering.

SAVEPOINT Updation;

Nu kommer vi att utföra en raderingsoperation på tabellen Anställda. Vi kommer att utföra raderingsåtgärder på personaltabellen där anställdas lön är högre än 60 000.

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

Vi kommer att korskontrollera borttagningen genom att köra SELECT-frågan i tabellen Anställda:

SELECT * FROM EMPLOYEES;

Utdata på ovanstående fråga:

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2003 RUCHIKA JAIN 60 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 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 57 000 PUNE TESTER 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Frågan ovan visar att borttagningen av personalposterna lyckades.

Betrakta raderingsfrågorna som ett segment av vår transaktion. Vi kommer att spara uppdateringsoperationsdelen med hjälp av en SAVEPOINT som heter en Deletion.

SAVEPOINT Deletion;

Plötsligt insåg användaren att frågan vi ville utföra på raderingsoperationen inte var tänkt att vara den frågan. I en sådan situation kommer användare att rulla tillbaka till hela transaktionen till SAVEPOINT; Användaren kan rulla tillbaka till vilken SAVEPOINT som helst han vill rulla tillbaka som Insertion, Update SAVEPOINT.

ROLLBACK TO Insertion;

Om användaren inte vill ta bort posterna. Därför kommer användaren att återställas till SAVEPOINT för infogning.

För att dubbelkontrollera att vi har fått samma personaltabell som vi hade innan vi utförde uppdaterings- och raderingsoperationerna. För att hämta medarbetarnas uppgifter utför SELECT-operationen på de anställdas bord.

SELECT * FROM EMPLOYEES;
ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57 000 PUNE TESTER 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3


  1. Varför har heltal i databasradtuppel ett 'L'-suffix?

  2. Konfigurera AlwaysOn-tillgänglighetsgrupper - Del 2

  3. Ansluter Oracle till Amazon Aurora

  4. Spotlight Tuning Pack Basic:Det bästa gratis verktyget för SQL-optimering