Database
 sql >> база данни >  >> RDS >> Database

TCL команди в SQL

В езика за структурирани заявки TCL е съкращение за език за управление на транзакциите. Единична единица работа в база данни се формира, след като последователното изпълнение на команди е известно като транзакция.

Има някои команди в езика на структурираните заявки, а командата на езика за управление на транзакциите е една от SQL командите. TCL командите обработват транзакциите в база данни

В езика на структурираните заявки Commit, Rollback и Savepoint са командите на езика за управление на транзакциите, широко използвани в SQL.

Сега нека разберем и научим как работят командите на езика за управление на транзакциите в езика на структурираните заявки с помощта на няколко примера. Командите на езика за управление на транзакциите са:

  1. Команда COMMIT
  2. Команда ROLLBACK
  3. Команда SAVEPOINT

Команда COMMIT

Commit Command в SQL се използва за запазване на всички транзакции, които се променят за постоянно на диска. Всеки път, когато извършваме операция с команди на езика за дефиниране на данни (DDL), като команда INSERT, команда UPDATE и команда DELETE, каквито и модификации, направени от тези команди, са постоянни, но преди затваряне на текущата сесия или до края на сесията. Можем лесно да отменим операцията, която извършихме с помощта на езика за дефиниране на данни, преди сесията да бъде спряна. Командата Commit се използва за трайно запазване на модификацията в хранилището без края на сесията.

Синтаксис:

COMMIT;

Ако имате съществуваща база данни в системата, използвайте тази база данни или създайте нова база данни. Ще използваме съществуващата база данни Company.

USE Company

Помислете за вече съществуващите таблици на служителите, които съдържат определени данни:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4

В SQL заявката START TRANSACTION се използва за започване на транзакцията.

START TRANSACTION;           

Сега ще вмъкнем два записа в съществуващата таблица на служителите. За да вмъкнем няколко записа, ще използваме следния израз:

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

Сега ще използваме заявката SELECT, за да проверим дали записите са вмъкнати успешно или не в таблицата.

SELECT * FROM EMPLOYEES;

Извеждане на горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 ДЖАЙПУР JAVA 3
4003 PURVA ДАНДЕКАР 57 000 ПУНА ТЕСТВАНЕ 4

Резултатът показва, че всички записи са вмъкнати успешно.

За да запазим операцията INSERT в таблицата Employees, ще изпълним командата COMMIT.

COMMIT;

В SQL по подразбиране автоматичното записване е включено. За да изключите автоматичното записване в SQL, задайте стойността за автоматично записване на 0.

Ще актуализираме идентификатора на служителя 4002 и ще зададем града като „Noida. Използвайте заявката по-долу, за да актуализирате записа на служителите.

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

Сега ще използваме заявката SELECT, за да проверим дали записът е актуализиран успешно или не в таблицата.

SELECT * FROM EMPLOYEES;

Извеждане на горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA ДАНДЕКАР 57 000 ПУНА ТЕСТВАНЕ 4

Както можем да видим в изхода, идентификационният номер на служител 4002 град е променен.

За да запазим промените в таблицата на служителите, ще напишем команда COMMIT.

COMMIT;

Сега ще изтрием идентификатора на служител 4003 от таблицата Служители. Използвайте заявката по-долу, за да изтриете записа на служител.

DELETE FROM EMPLOYEES WHERE EMPLOYEEID = 4003;

Сега ще използваме заявката SELECT, за да проверим дали записът е изтрит успешно или не в таблицата.

SELECT * FROM EMPLOYEES;

Извеждане на горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

Резултатът потвърждава, че сме изтрили данните за идентификатора на служителя 4003.

За да запазим промените в таблицата на служителите, ще напишем команда COMMIT.

COMMIT;

Команда SAVEPOINT

Извършените операции с база данни могат да бъдат разделени на две части. Например, разгледайте всички оператори за изтриване, които изпълнихме като един сегмент от транзакцията, а отчета за актуализиране като един сегмент от транзакцията. За да запазим заявки за вмъкване в частта за вмъкване и изтриване на заявки в частта за изтриване на същата транзакция, ние използваме командата SAVEPOINT в SQL. Да предположим, че искаме да запазим всички свързани с изтриването заявки с точката на запис, наречена delete. За да запазим всички операции, свързани с изтриването, в една точка на запис, трябва да изпълним командата SAVEPOINT, последвана от името на точката на запис, след като изпълним заявката за изтриване.

Синтаксис:

SAVEPOINT savepoint name; 

Команда ROLLBACK

Докато извършвахме транзакция, ние изградихме точките за запис, за да запазим различните сегменти от транзакцията. Тъй като изискванията на Потребителя се променят, Потребителят може да отмени транзакцията към различни точки за запис. Помислете за сценарий:Инициирахме транзакция, последвана от създаване на таблица и вмъкване на запис в таблицата. Изградихме INS, наречена точка за запис, след добавяне на записи към таблицата. След вмъкването извършихме операцията за изтриване, а по-късно се сетихме, че по погрешка сме изтрили грешните записи. Ще отменим транзакцията си, за да достигнем до INS точката за запис. За да отмените транзакцията, използвайте командата ROLLBACK.

Можем да върнем обратно извършената от нас операция или цялата транзакция на точката на запис.

Синтаксис за връщане на операцията:

ROLLBACK;

Синтаксис за връщане на транзакцията:

ROLLBACK TO savepoint;

Примери за командите SAVEPOINT и ROLLBACK:

Ако имате съществуваща база данни в системата, използвайте тази база данни или създайте нова база данни. Ще изберем вече съществуващата база данни с име Company.

USE Company

Помислете за съществуващите таблици на служителите, които имат следните записи:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3

В SQL заявката START TRANSACTION се използва за започване на транзакцията.

START TRANSACTION;           

Сега ще вмъкнем два записа в съществуващата таблица на служителите. За да вмъкнем няколко записа, ще използваме следния израз:

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

Сега ще използваме заявката SELECT, за да проверим дали записите са вмъкнати успешно или не в таблицата.

SELECT * FROM EMPLOYEES;

Извеждане на горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA ДАНДЕКАР 57 000 ПУНА ТЕСТВАНЕ 4
5001 ASHWIN PATEL 54500 ДЖАЙПУР JAVA 3

Както всички знаем, командата SAVEPOINT в SQL се използва за запазване на различни части от една и съща транзакция. Да приемем, че вмъкването е един сегмент от нашата транзакция. Използвайте точка за запис, за да запазите този сегмент за вмъкване като вмъкване.

SAVEPOINT Insertion;

Сега ще извършим операцията АКТУАЛИЗИРАНЕ на таблиците на служителите и ще актуализираме заплатата на служителите с 1.2 за идентификатора на служителя 2003.

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

Ще проверим кръстосано операцията за актуализиране, като изпълним заявката SELECT в таблицата Employees:

SELECT * FROM EMPLOYEES WHERE EMPLOYEEID = 2003;
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
2003 РУЧИКА ДЖЕЙН 60 000 МУМБАЙ ТЕСТВАНЕ 4

Резултатите от заявката по-горе показват, че записът за идентификация на служителя 2003 е актуализиран успешно.

Разгледайте заявката за актуализиране като един сегмент от нашата транзакция. Ще запазим частта от операцията за актуализиране, използвайки SAVEPOINT, наречена Updation.

SAVEPOINT Updation;

Сега ще извършим операция за изтриване на таблицата служители. Ще извършим операция за изтриване на таблицата на служителите, където заплатата на служителите е по-голяма от 60 000.

DELETE FROM EMPLOYEES WHERE SALARY > 60000;

Ще проверим кръстосано операцията за изтриване, като изпълним заявката SELECT в таблицата Employees:

SELECT * FROM EMPLOYEES;

Извеждане на горната заявка:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2003 РУЧИКА ДЖЕЙН 60 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA ДАНДЕКАР 57 000 ПУНА ТЕСТВАНЕ 4
5001 ASHWIN PATEL 54500 ДЖАЙПУР JAVA 3

Горната заявка показва, че изтриването на записите на служителите е било успешно.

Считайте заявките за изтриване като един сегмент от нашата транзакция. Ще запазим частта от операцията за актуализиране с помощта на SAVEPOINT, наречена Изтриване.

SAVEPOINT Deletion;

Изведнъж потребителят разбра, че заявката, която искахме да изпълним при операцията за изтриване, не е трябвало да бъде тази заявка. В такава ситуация потребителите ще се върнат към цялата транзакция до SAVEPOINT; Потребителят може да се върне към всяка ТОЧКА НА ЗАПИСВАНЕ, която иска да върне, като вмъкване, актуализация SAVEPOINT.

ROLLBACK TO Insertion;

Ако потребителят не иска да премахне записите. Следователно потребителят ще бъде върнат обратно към ТОЧКАТА НА ЗАПИСВАНЕ на вмъкване.

За кръстосана проверка дали имаме същата таблица на служителите, която имахме преди да извършим операциите за актуализиране и изтриване. За да извлечете данните за служителите, изпълнете операцията SELECT върху таблицата на служителите.

SELECT * FROM EMPLOYEES;
ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50 000 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 PURVA ДАНДЕКАР 57 000 ПУНА ТЕСТВАНЕ 4
5001 ASHWIN PATEL 54500 ДЖАЙПУР JAVA 3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 готови метода за преобразуване на SQL данни и случаи на употреба

  2. Как да поръчам по две колони в SQL?

  3. Решете между базирано на агент срещу наблюдение без агент

  4. Управление на вашата MS SQL репликация

  5. Какво е оператор за сравнение?