sql >> Database >  >> RDS >> Database

TCL-opdrachten in SQL

In Structured Query Language is TCL een afkorting voor Transaction Control Language. Een enkele werkeenheid in een database wordt gevormd nadat de opeenvolgende uitvoering van opdrachten bekend staat als een transactie.

Er zijn enkele opdrachten in de Structured Query Language en de opdracht Transaction Control Language is een van de SQL-opdrachten. TCL-commando's verwerken de transacties in een database

In Structured Query Language zijn Commit, Rollback en Savepoint de Transaction Control Language-opdrachten die veel worden gebruikt in SQL.

Laten we nu met behulp van een paar voorbeelden begrijpen en leren hoe de Transaction Control Language-opdrachten werken in de Structured Query-taal. Transactiecontrole Taalcommando's zijn:

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

COMMIT-opdracht

Commit Command in SQL wordt gebruikt om alle transacties die permanent veranderen op de schijf op te slaan. Telkens wanneer we de bewerking uitvoeren op Data Definition Language-commando's (DDL), zoals INSERT-commando, UPDATE-commando en DELETE-commando, zijn alle wijzigingen die door deze commando's worden aangebracht permanent, maar voordat de huidige sessie wordt afgesloten of tot het einde van de sessie. We kunnen de bewerking die we hebben uitgevoerd eenvoudig ongedaan maken met de Data Definition Language voordat de sessie wordt afgesloten. De opdracht Commit wordt gebruikt om de wijziging permanent in de opslag op te slaan zonder dat de sessie wordt beëindigd.

Syntaxis:

COMMIT;

Als u een bestaande database in het systeem hebt, gebruikt u die bestaande database of maakt u een nieuwe database. We zullen de bestaande database Company gebruiken.

USE Company

Overweeg de reeds bestaande werknemerstabellen die de bepaalde gegevens hebben:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4

In SQL wordt de START TRANSACTION-query gebruikt om de transactie te starten.

START TRANSACTION;           

Nu gaan we twee records invoegen in de bestaande tabel Werknemers. Om meerdere records in te voegen, gebruiken we de onderstaande verklaring:

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

We zullen nu de SELECT-query gebruiken om te controleren of de records al dan niet met succes in de tabel zijn ingevoegd.

SELECT * FROM EMPLOYEES;

Uitvoer op de bovenstaande zoekopdracht:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 JAIPUR JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4

De uitvoer toont dat alle records met succes zijn ingevoegd.

Om de INSERT-bewerking op de Employees-tabel op te slaan, voeren we het COMMIT-commando uit.

COMMIT;

In SQL is automatisch vastleggen standaard ingeschakeld. Om de auto-commit in de SQL uit te schakelen, stelt u de auto-commit waarde in op 0.

We zullen het werknemers-ID 4002 bijwerken en de stad instellen als 'Noida. Gebruik de onderstaande vraag om het werknemersrecord bij te werken.

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

We zullen nu de SELECT-query gebruiken om te controleren of het record met succes is bijgewerkt of niet in de tabel.

SELECT * FROM EMPLOYEES;

Uitvoer op de bovenstaande zoekopdracht:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4

Zoals we kunnen zien in de output, is werknemer-ID 4002 stad gewijzigd.

Om de wijzigingen op de werknemerstafel op te slaan, schrijven we een COMMIT-commando.

COMMIT;

Nu zullen we de werknemer-ID 4003 verwijderen uit de tabel Werknemers. Gebruik de onderstaande vraag om het werknemersrecord te verwijderen.

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

We zullen nu de SELECT-query gebruiken om te controleren of het record met succes is verwijderd of niet in de tabel.

SELECT * FROM EMPLOYEES;

Uitvoer op de bovenstaande zoekopdracht:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

De uitvoer bevestigt dat we de details van het werknemers-ID 4003 hebben verwijderd.

Om de wijzigingen op de werknemerstafel op te slaan, schrijven we een COMMIT-commando.

COMMIT;

SAVEPOINT-opdracht

Uitgevoerde databasebewerkingen kunnen in twee delen worden verdeeld. Beschouw bijvoorbeeld alle verwijderingsverklaringen die we hebben uitgevoerd als één segment van de transactie en de updateverklaring als één segment van de transactie. Om insert-query's op te slaan in het insert-gedeelte en delete-query's in het delete-gedeelte van dezelfde transactie, gebruiken we de opdracht SAVEPOINT in SQL. Stel dat we alle verwijdergerelateerde query's willen opslaan met het opslagpunt met de naam delete. Om alle verwijdergerelateerde bewerkingen in één opslagpunt op te slaan, moeten we het SAVEPOINT-commando uitvoeren gevolgd door de naam van het opslagpunt na het uitvoeren van de verwijderquery.

Syntaxis:

SAVEPOINT savepoint name; 

ROLLBACK-opdracht

Tijdens het uitvoeren van een transactie hebben we de savepoints gebouwd om de verschillende segmenten van de transactie op te slaan. Naarmate de vereisten van de Gebruiker veranderen, kan de Gebruiker de transactie naar verschillende opslagpunten ongedaan maken. Overweeg een scenario:we hebben een transactie gestart, gevolgd door het maken van de tabel en het invoegen van records in de tabel. We hebben de INS met de naam savepoint gebouwd nadat we records aan de tabel hebben toegevoegd. Na het invoegen hebben we de wisbewerking uitgevoerd en later herinnerden we ons dat we per ongeluk de verkeerde records hadden verwijderd. We zullen onze transactie ongedaan maken om het savepoint INS te bereiken. Gebruik de opdracht ROLLBACK om de transactie ongedaan te maken.

We kunnen de operatie die we hebben uitgevoerd terugdraaien of de hele savepoint-transactie terugdraaien.

Syntaxis om de bewerking terug te draaien:

ROLLBACK;

Syntaxis om de transactie terug te draaien:

ROLLBACK TO savepoint;

Voorbeelden van de opdrachten SAVEPOINT en ROLLBACK:

Als u een bestaande database in het systeem hebt, gebruikt u die bestaande database of maakt u een nieuwe database. We zullen de reeds bestaande database met de naam Bedrijf selecteren.

USE Company

Overweeg de bestaande werknemerstabellen die de volgende records hebben:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

In SQL wordt de START TRANSACTION-query gebruikt om de transactie te starten.

START TRANSACTION;           

Nu gaan we twee records invoegen in de bestaande tabel Werknemers. Om meerdere records in te voegen, gebruiken we onderstaande verklaring:

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

We zullen nu de SELECT-query gebruiken om te controleren of de records al dan niet met succes in de tabel zijn ingevoegd.

SELECT * FROM EMPLOYEES;

Uitvoer op de bovenstaande zoekopdracht:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

Zoals we allemaal weten, wordt de opdracht SAVEPOINT in SQL gebruikt om verschillende delen van dezelfde transactie op te slaan. Stel dat invoeging een onderdeel van onze transactie is. Gebruik savepoint om dit invoegsegment op te slaan als invoeging.

SAVEPOINT Insertion;

Nu zullen we de UPDATE-bewerking uitvoeren op de werknemerstabellen en we zullen het werknemerssalaris bijwerken met 1,2 voor de werknemer-ID 2003.

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

We zullen de update-bewerking controleren door de SELECT-query uit te voeren in de tabel Werknemers:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
2003 RUCHIKA JAIN 60000 MUMBAI TESTEN 4

De bovenstaande zoekresultaten laten zien dat het record van de werknemer-ID 2003 met succes is bijgewerkt.

Beschouw de update-query als een onderdeel van onze transactie. We zullen het update-bewerkingsgedeelte opslaan met behulp van een SAVEPOINT genaamd een update.

SAVEPOINT Updation;

Nu gaan we een wisbewerking uitvoeren op de tabel Werknemers. We zullen een verwijderingsbewerking uitvoeren op de werknemerstabel waar het werknemerssalaris hoger is dan 60000.

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

We zullen de wisbewerking controleren door de SELECT-query uit te voeren in de tabel Werknemers:

SELECT * FROM EMPLOYEES;

Uitvoer op de bovenstaande zoekopdracht:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2003 RUCHIKA JAIN 60000 MUMBAI TESTEN 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 57000 PUNE TESTEN 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3

De bovenstaande query laat zien dat het verwijderen van de werknemersrecords is gelukt.

Beschouw de verwijderquery's als een onderdeel van onze transactie. We zullen het update-bewerkingsgedeelte opslaan met een SAVEPOINT genaamd Verwijdering.

SAVEPOINT Deletion;

Plotseling realiseerde de gebruiker zich dat de query die we wilden uitvoeren op de verwijderingsbewerking niet die query was. In een dergelijke situatie zullen gebruikers de hele transactie terugdraaien naar het SAVEPOINT; de gebruiker kan teruggaan naar elk SAVEPOINT dat hij wil terugdraaien, zoals Insertion, Update SAVEPOINT.

ROLLBACK TO Insertion;

Als de gebruiker de records niet wil verwijderen. Daarom wordt de gebruiker teruggezet naar het SAVEPOINT voor invoeging.

Om te controleren of we dezelfde werknemerstabel hebben die we hadden voordat we de update- en verwijderingsbewerkingen uitvoerden. Om de gegevens van de werknemers op te halen, voert u de SELECT-bewerking uit op de tafel van de werknemers.

SELECT * FROM EMPLOYEES;
WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 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 TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA DHANDEKAR 57000 PUNE TESTEN 4
5001 ASHWIN PATEL 54500 JAIPUR JAVA 3


  1. Hoe AppArmor te configureren voor PostgreSQL en TimescaleDB

  2. Zorg ervoor dat de cursor correct is geïnitialiseerd voordat u er gegevens van opent

  3. Kerndumpbestand en foutopsporingscodes toevoegen in het uitvoerbare programma voor Oracle Apps

  4. Hoe een gebruiker aan te maken in PostgreSQL