SQL Tutorial
SQL Database
SQL Table
SQL Select
SQL Order By
SQL Insert
SQL Update
SQL Delete
Difference
SQL Injection
SQL String Functions
Miscl
- SQL Formatter
- SQL group by
- SQL add/drop/update column operation
- SQL CAST Function
- SQL Comments
- SQL CONCAT Function
- CTE (Common Table Expression)SQL
- How to use distinct in SQL?
- Joining Three or More Tables in SQL
- What is Web SQL?
- How to create functions in SQL?
- How to run SQL Script?
- How to Delete Duplicate Rows in SQL?
- Nth Highest salary
- 12 Codd's Rules
- SQL EXCEPT
- Types of SQL JOIN
- Change datatype of column in SQL
- SQL Auto Increment
- SQL Like
- Commit and Rollback in SQL
- SQL Concatenate
- SQL get month from the date
- Savepoint in SQL
- SQL ORDER BY DATE
- TIME Datatype in SQL
- SQL BETWEEN
- CRUD Operations in SQL
- SQL INDEX
- Scalar Functions in SQL
- SET Operators in SQL
- Types of SQL Commands
- TCL Commands in SQL
- SQL Subquery
- SQL View
- Constraints in SQL
- Pattern Matching in SQL
- SQL Date Functions
- DDL Commands in SQL
- DML Commands in SQL
- SQL CASE
- SQL Inner Join
- SQL IN Operator
- Check Constraint in SQL
- SQL CLAUSES
- SQL LOGICAL OPERATORS
- Delete Column from Table
- Add Column in the Table
- Delete one row in SQL
- Change the Column Value
- How to Add Foreign Key in SQL
- Add a Primary Key
- Insert One or More rows
- How to Use LIKE in SQL
- Cursor in SQL
- Difference Between DROP and Truncate
- SQL Comparison Operators
- SQL COUNT WHERE
- SQL SELECT MIN
- SQL Stored Procedure
- SQL SELECT AVG
- SQL SELECT MAX
- SQL ADD COLUMN
- How to use Auto-Increment in SQL
- SQL Languages
- SQL Arithmetic Operators
- How to Use GROUP BY in SQL
- How to Use ORDER BY in SQL
- Trigger in SQL
- What is Race Condition
- SQL COUNT DISTINCT
PL/SQL Tutorial
Sql Interview Question
SQl Quiz
TCL Commands in SQL
- In SQL, TCL stands for Transaction control language.
- A single unit of work in a database is formed after the consecutive execution of commands is known as a transaction.
- There are certain commands present in SQL known as TCL commands that help the user manage the transactions that take place in a database.
- COMMIT. ROLLBACK and SAVEPOINT are the most commonly used TCL commands in SQL.
Now let us take a deeper dive into the TCL commands of SQL with the help of examples. All the queries in the examples will be written using the MySQL database.
1. COMMIT
COMMIT command in SQL is used to save all the transaction-related changes permanently to the disk. Whenever DDL commands such as INSERT, UPDATE and DELETE are used, the changes made by these commands are permanent only after closing the current session. So before closing the session, one can easily roll back the changes made by the DDL commands. Hence, if we want the changes to be saved permanently to the disk without closing the session, we will use the commit command.
Syntax:
Example:
We will select an existing database, i.e., school.
To create a table named t_school, we will execute the following query:
BEGIN / START TRANSACTION command is used to start the transaction.
Now, we will execute the following query to insert multiple records at the same time in the t_school table.
We will now execute the SELECT query to verify the execution of the INSERT INTO query executed above.
After executing the SELECT query on the t_school table, you will get the following output:
ID | School_Name | Number_Of_Students | Number_Of_Teachers | Number_Of_Classrooms | EmailID |
---|---|---|---|---|---|
1 | Boys Town Public School | 1000 | 80 | 12 | btps15@gmail.com |
2 | Guru Govind Singh Public School | 800 | 35 | 15 | ggps25@gmail.com |
3 | Delhi Public School | 1200 | 30 | 10 | dps101@gmail.com |
4 | Ashoka Universal School | 1110 | 40 | 40 | aus17@gmail.com |
5 | Calibers English Medium School | 9000 | 31 | 50 | cems@gmail.com |
The output of the SELECT query shows that all the records are inserted successfully.
We will execute the COMMIT command to save the results of the operations carried on the t_school table.
Autocommit is by default enabled in MySQL. To turn it off, we will set the value of autocommit as 0.
MySQL, by default, commits every query the user executes. But if the user wishes to commit only the specific queries instead of committing every query, then turning off the autocommit is useful.
2. SAVEPOINT
We can divide the database operations into parts. For example, we can consider all the insert related queries that we will execute consecutively as one part of the transaction and the delete command as the other part of the transaction. Using the SAVEPOINT command in SQL, we can save these different parts of the same transaction using different names. For example, we can save all the insert related queries with the savepoint named INS. To save all the insert related queries in one savepoint, we have to execute the SAVEPOINT query followed by the savepoint name after finishing the insert command execution.
Syntax:
3. ROLLBACK
While carrying a transaction, we must create savepoints to save different parts of the transaction. According to the user's changing requirements, he/she can roll back the transaction to different savepoints. Consider a scenario: We have initiated a transaction followed by the table creation and record insertion into the table. After inserting records, we have created a savepoint INS. Then we executed a delete query, but later we thought that mistakenly we had removed the useful record. Therefore in such situations, we have an option of rolling back our transaction. In this case, we have to roll back our transaction using the ROLLBACK command to the savepoint INS, which we have created before executing the DELETE query.
Syntax:
Examples to understand the SAVEPOINT and ROLLBACK commands:
Example 1:
We will select an existing database, i.e., school.
To create a table named t_school, we will execute the following query:
Now, we will execute the following query to insert multiple records at the same time in the t_school table.
We will now execute the SELECT query to verify the execution of the INSERT INTO query executed above.
After executing the SELECT query on the t_school table, you will get the following output:
ID | School_Name | Number_Of_Students | Number_Of_Teachers | Number_Of_Classrooms | EmailID |
---|---|---|---|---|---|
1 | Boys Town Public School 1000 | 80 | 12 | btps15@gmail.com | |
2 | Guru Govind Singh Public School | 800 | 35 | 15 | ggps25@gmail.com |
3 | Delhi Public School | 1200 | 30 | 10 | dps101@gmail.com |
4 | Ashoka Universal School | 1110 | 40 | 40 | aus17@gmail.com |
5 | Calibers English Medium School | 9000 | 31 | 50 | cems@gmail.com |
The output of the SELECT query shows that all the records are inserted successfully.
BEGIN / START TRANSACTION command is used to start the transaction.
As we know, the SAVEPOINT command in SQL is used to save the different parts of the same transaction using different names. Consider till this point as one part of our transaction. We will save this part using a savepoint named Insertion.
Now, we will execute the update command on the t_school table to set the Number_Of_Students as 9050 for the record with ID 5.
To verify that the record with ID 5 now has the Number_Of_Students as 9050, we will execute the SELECT query.
After executing the SELECT query on the t_school table, you will get the following output:
ID | School_Name | Number_Of_Students | Number_Of_Teachers | Number_Of_Classrooms | EmailID |
---|---|---|---|---|---|
1 | Boys Town Public School | 1000 | 80 | 12 | btps15@gmail.com |
2 | Guru Govind Singh Public School | 800 | 35 | 15 | ggps25@gmail.com |
3 | Delhi Public School | 1200 | 30 | 10 | dps101@gmail.com |
4 | Ashoka Universal School | 1110 | 40 | 40 | aus17@gmail.com |
5 | Calibers English Medium School | 9050 | 31 | 50 | cems@gmail.com |
The output of the SELECT query shows that the record with ID 5 is updated successfully.
Consider the update operation as one part of our transaction. We will save this part using a savepoint named Updation.
Suddenly, our requirement changed, and we realized that we had updated a record that was not supposed to be. In such a scenario, we need to roll back our transaction to the savepoint, which was created prior to the execution of the UPDATE command.
We didn't need the updation carried on the record. Hence, we have rolled back to the savepoint named Insertion.
For confirming that we have got the same t_school table that we had before carrying out the updation operation, we will again execute the SELECT query.
ID | School_Name | Number_Of_Students | Number_Of_Teachers | Number_Of_Classrooms | EmailID |
---|---|---|---|---|---|
1 | Boys Town Public School | 1000 | 80 | 12 | btps15@gmail.comm |
2 | Guru Govind Singh Public School | 800 | 35 | 15 | ggps25@gmail.comm |
3 | Delhi Public School | 1200 | 30 | 10 | dps101@gmail.comm |
4 | Ashoka Universal School | 1110 | 40 | 40 | aus17@gmail.comm |
5 | Calibers English Medium School | 9000 | 31 | 50 | cems@gmail.com |
The SELECT query output confirms that the transaction is now successfully rolled back to the savepoint 'Insertion'.
Example 2:
We will select an existing database, i.e., bank.
To create a table named customer, we will execute the following query:
Now, we will execute the following query to insert multiple records at the same time in the customer table.
We will now execute the SELECT query to verify the execution of the INSERT INTO query executed above.
After executing the SELECT query on the t_school table, you will get the following output:
Customer_ID | Name | Age | Salary | Salary_BankAccount |
---|---|---|---|---|
1 | Aryan Jain | 51 | 56000 | SBI |
2 | Arohi Dixit | 21 | 25000 | Axis |
3 | Vineet Garg | 24 | 31000 | ICICI |
4 | Anuja Sharma | 26 | 49000 | HDFC |
5 | Deepak Kohli | 28 | 65000 | SBI |
The output of the SELECT query shows that all the records are inserted successfully.
BEGIN / START TRANSACTION command is used to start the transaction.
As we know, the SAVEPOINT command in SQL is used to save the different parts of the same transaction using different names. Consider till this point as one part of our transaction. We will save this part using a savepoint named Insertion.
We will execute the delete command on the customer table to remove the record with ID 5.
We will execute the SELECT query to verify that the record with ID 5 has been removed.
Customer_ID | Name | Age | Salary | Salary_BankAccount |
---|---|---|---|---|
1 | Aryan Jain | 51 | 56000 | SBI |
2 | Arohi Dixit | 21 | 25000 | Axis |
3 | Vineet Garg | 24 | 31000 | ICICI |
4 | Anuja Sharma | 26 | 49000 | HDFC |
The output of the SELECT query shows that the record with ID 5 is removed successfully.
Consider the delete operation as one part of our transaction. We will save this part using a savepoint named Deletion.
Suddenly, our requirement changed, and we realized that we had deleted a record that was not supposed to be. In such a scenario, we need to roll back our transaction to the savepoint, which was created prior to the execution of the DELETE command.
We didn't need the deletion carried on the record. Hence, we have rolled back to the savepoint named Insertion.
For confirming that we have got the same customer table that we had before carrying out the deletion operation, we will again execute the SELECT query.
Customer_ID | Name | Age | Salary | Salary_BankAccount |
---|---|---|---|---|
1 | Aryan Jain | 51 | 56000 | SBI |
2 | Arohi Dixit | 21 | 25000 | Axis |
3 | Vineet Garg | 24 | 31000 | ICICI |
4 | Anuja Sharma | 26 | 49000 | HDFC |
5 | Deepak Kohli | 28 | 65000 | SBI |
The SELECT query output confirms that the transaction is now successfully rolled back to the savepoint 'Insertion'.