sql >> Database teknologi >  >> RDS >> Database

TCL-kommandoer i SQL

I Structured Query Language er TCL en forkortelse for Transaction Control Language. En enkelt arbejdsenhed i en database dannes efter den fortløbende udførelse af kommandoer er kendt som en transaktion.

Der er nogle kommandoer i Structured Query Language, og Transaction Control Language-kommandoen er en af ​​SQL-kommandoerne. TCL-kommandoer håndterer transaktionerne i en database

I Structured Query Language er Commit, Rollback og Savepoint de kommandoer til Transaction Control Language, der er meget brugt i SQL.

Lad os nu forstå og lære, hvordan kommandoerne Transaction Control Language fungerer i Structured Query-sproget ved hjælp af nogle få eksempler. Sprogkommandoer for transaktionskontrol er:

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

COMMIT-kommando

Commit Command i SQL bruges til at gemme alle de transaktioner, der ændres permanent på disken. Når vi udfører handlingen på Data Definition Language-kommandoer (DDL) såsom INSERT-kommando, UPDATE-kommando og DELETE-kommando, er de ændringer, der foretages af disse kommandoer, permanente, men før den aktuelle session lukkes eller indtil slutningen af ​​sessionen. Vi kan nemt fortryde den handling, vi udførte, ved hjælp af Data Definition Language, før sessionen lukkes ned. Commit-kommandoen bruges til at gemme ændringen permanent på lageret uden at sessionen afsluttes.

Syntaks:

COMMIT;

Hvis du har en eksisterende database i systemet, skal du bruge den eksisterende database eller oprette en ny database. Vi vil bruge den eksisterende database Company.

USE Company

Overvej de allerede eksisterende medarbejderes tabeller, som har de bestemte data:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4

I SQL bruges START TRANSACTION-forespørgslen til at starte transaktionen.

START TRANSACTION;           

Nu vil vi indsætte to poster i den eksisterende medarbejdertabel. For at indsætte flere poster, vil vi bruge nedenstående erklæring:

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 vil nu bruge SELECT-forespørgslen til at bekræfte, om posterne er indsat korrekt eller ej i tabellen.

SELECT * FROM EMPLOYEES;

Output på ovenstående forespørgsel:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
4002 ASHWINI BAGHAT 54500 JAIPUR JAVA 3
4003 PURVA DHANDEKAR 57.000 PUNE TEST 4

Outputtet viser, at alle poster er indsat.

For at gemme INSERT-handlingen på tabellen Employees, udfører vi kommandoen COMMIT.

COMMIT;

I SQL er auto-commit som standard slået til. For at deaktivere auto-commit i SQL skal du indstille auto-commit-værdien til 0.

Vi vil opdatere medarbejder-id 4002 og sætte byen som 'Noida. Brug nedenstående forespørgsel til at opdatere medarbejderregistreringen.

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

Vi vil nu bruge SELECT-forespørgslen til at bekræfte, om posten er opdateret korrekt eller ej i tabellen.

SELECT * FROM EMPLOYEES;

Output på ovenstående forespørgsel:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57.000 PUNE TEST 4

Som vi kan se i outputtet, blev medarbejder-id 4002 by ændret.

For at gemme ændringerne på medarbejdernes bord, skriver vi en COMMIT-kommando.

COMMIT;

Nu vil vi slette medarbejder-id 4003 fra tabellen Medarbejdere. Brug nedenstående forespørgsel til at slette medarbejderregistreringen.

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

Vi vil nu bruge SELECT-forespørgslen til at bekræfte, om posten er slettet korrekt eller ej i tabellen.

SELECT * FROM EMPLOYEES;

Output på ovenstående forespørgsel:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

Outputtet bekræfter, at vi har slettet medarbejder-id 4003-detaljerne.

For at gemme ændringerne på medarbejdernes bord, skriver vi en COMMIT-kommando.

COMMIT;

SAVEPOINT-kommando

Udførte databaseoperationer kan opdeles i to dele. Betragt f.eks. alle de sletningserklæringer, vi udførte, som ét segment af transaktionen og opdateringserklæringen som ét segment af transaktionen. For at gemme indsæt-forespørgsler i indsæt-delen og slette forespørgsler i dele-delen af ​​samme transaktion, bruger vi kommandoen SAVEPOINT i SQL. Antag, at vi vil gemme alle slette-relaterede forespørgsler med lagringspunktet med navnet delete. For at gemme alle slette-relaterede operationer i ét savepoint, skal vi udføre SAVEPOINT-kommandoen efterfulgt af savepoint-navnet efter at have udført sletteforespørgslen.

Syntaks:

SAVEPOINT savepoint name; 

ROLLBACK-kommando

Mens vi udførte en transaktion, byggede vi lagringspunkterne for at gemme de forskellige segmenter af transaktionen. Efterhånden som brugerens krav ændres, kan brugeren fortryde transaktionen til forskellige lagringspunkter. Overvej et scenario:Vi har startet en transaktion efterfulgt af tabeloprettelse og registreringsindsættelse i tabellen. Vi byggede INS-navnet savepoint efter at have tilføjet poster til tabellen. Efter indsættelse udførte vi sletteoperationen, og senere huskede vi fejlagtigt slettede de forkerte poster. Vi fortryder vores transaktion for at nå savepoint INS. For at fortryde transaktionen, brug kommandoen ROLLBACK.

Vi kan rulle tilbage den operation, vi udførte, eller rulle hele savepoint-transaktionen tilbage.

Syntaks for at rulle handlingen tilbage:

ROLLBACK;

Syntaks til at tilbageføre transaktionen:

ROLLBACK TO savepoint;

Eksempler på kommandoerne SAVEPOINT og ROLLBACK:

Hvis du har en eksisterende database i systemet, skal du bruge den eksisterende database eller oprette en ny database. Vi vil vælge den allerede eksisterende database med navnet Company.

USE Company

Overvej den eksisterende medarbejders tabeller, som har følgende poster:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

I SQL bruges START TRANSACTION-forespørgslen til at starte transaktionen.

START TRANSACTION;           

Nu vil vi indsætte to poster i den eksisterende tabel Medarbejdere. For at indsætte flere poster vil vi bruge nedenstående erklæring:

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 vil nu bruge SELECT-forespørgslen til at bekræfte, om posterne er indsat korrekt eller ej i tabellen.

SELECT * FROM EMPLOYEES;

Output på ovenstående forespørgsel:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57.000 PUNE TEST 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Som vi alle ved, bruges SAVEPOINT-kommandoen i SQL til at gemme forskellige dele af den samme transaktion. Antag, at indsættelse er et segment af vores transaktion. Brug savepoint til at gemme dette indsættelsessegment som insertion.

SAVEPOINT Insertion;

Nu vil vi udføre OPDATERING på medarbejdertabellerne, og vi vil opdatere medarbejderløn med 1,2 for medarbejder-id 2003.

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

Vi krydstjekker opdateringshandlingen ved at udføre SELECT-forespørgslen i tabellen Medarbejdere:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING MANAGERID
2003 RUCHIKA JAIN 60.000 MUMBAI TEST 4

Ovenstående forespørgselsresultater viser, at medarbejder-id 2003-posten er opdateret.

Betragt opdateringsforespørgslen som et segment af vores transaktion. Vi gemmer opdateringsoperationsdelen ved hjælp af et SAVEPOINT kaldet en opdatering.

SAVEPOINT Updation;

Nu vil vi udføre en sletteoperation på tabellen Medarbejdere. Vi udfører sletningsoperationer på medarbejdertabellen, hvor medarbejderlønnen er større end 60.000.

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

Vi krydstjekker slettehandlingen ved at udføre SELECT-forespørgslen i tabellen Medarbejdere:

SELECT * FROM EMPLOYEES;

Output på ovenstående forespørgsel:

EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Ovenstående forespørgsel viser, at sletning af medarbejderregistreringer lykkedes.

Betragt sletteforespørgslerne som et segment af vores transaktion. Vi gemmer opdateringsoperationsdelen ved hjælp af et SAVEPOINT kaldet en Deletion.

SAVEPOINT Deletion;

Pludselig indså brugeren, at den forespørgsel, vi ønskede at udføre på sletningsoperationen, ikke skulle være den forespørgsel. I en sådan situation vil brugerne rulle tilbage til hele transaktionen til SAVEPOINT; Brugeren kan rulle tilbage til ethvert SAVEPOINT, han ønsker at rulle tilbage, f.eks. Insertion, Update SAVEPOINT.

ROLLBACK TO Insertion;

Hvis brugeren ikke ønsker at fjerne registreringerne. Derfor vil brugeren blive rullet tilbage til indsættelses-SAVEPOINT.

For at krydstjekke, at vi har fået den samme medarbejdertabel, som vi havde, før vi udførte opdaterings- og sletningshandlingerne. For at hente medarbejdernes detaljer skal du udføre SELECT-handlingen på medarbejdernes bord.

SELECT * FROM EMPLOYEES;
EMPLOYEEID FIRST_NAME LAST_NAME LØN BY AFDELING 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 TEST 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 TEST 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57.000 PUNE TEST 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3


  1. Introduktion til PL/SQL Ref-markører i Oracle-databasen

  2. Sådan konverteres streng til tidsstempel uden tidszone

  3. SQL Server rekursiv forespørgsel

  4. Sådan kortlægges PostgreSQL enum med JPA og Hibernate