Diferència entre les ordres TRUNCATE, DELETE i DROP a SQL Server

Bloc

Diferència entre les ordres TRUNCATE, DELETE i DROP a SQL Server

Diferència entre les ordres TRUNCATE, DELETE i DROP a SQL Server

La diferència entre TRUNCATE, DELETE i DROP és una de les preguntes més habituals de l’entrevista. Les consultes SQL TRUNCATE, DELETE i DROP s'utilitzen sovint a SQL Server per a A continuació, es mostren algunes de les diferències habituals entre elles.

TRONCAR

La consulta SQL TRUNCATE elimina totes les files d'una taula, sense registrar les eliminacions de files individuals. TRUNCATE és més ràpid que la consulta DELETE.

L'exemple següent elimina totes les dades de la taula Clients.

TRUNCATE TABLE Customers;
  1. TRUNCATE és una ordre DDL
  2. TRUNCATE s'executa mitjançant un bloqueig de taula i es bloqueja tota la taula per eliminar tots els registres.
  3. No podem utilitzar la clàusula WHERE amb TRUNCATE.
  4. TRUNCATE elimina totes les files d'una taula.
  5. Registre mínim al registre de transaccions, de manera que sigui més ràpid en funció del rendiment.
  6. TRUNCATE TABLE elimina les dades repartint les pàgines de dades utilitzades per emmagatzemar les dades de la taula i només registra les reparticions de pàgines al registre de transaccions.
  7. Identifiqueu que la columna es restableix al seu valor inicial si la taula conté una columna d'identitat.
  8. Per utilitzar Trunca en una taula, necessiteu com a mínim permís ALTER a la taula.
  9. Truncar utilitza menys espai de transacció que la sentència Delete.
  10. El truncat no es pot utilitzar amb les vistes indexades.
  11. TRUNCATE és més ràpid que DELETE.

ESBORRAR

La consulta SQL DELETE suprimeix tots els registres d'una taula de bases de dades. Per executar una consulta DELETE, calen permisos de supressió a la taula de destinació. Si heu d’utilitzar una clàusula WHERE en un DELETE, també cal que seleccioneu permisos.

La següent consulta elimina totes les files de la taula Clients.

DELETE FROM Customers; GO

La següent consulta SQL suprimeix totes les files de la taula Clients en què OrderID és superior a 1000.

DELETE FROM Customers WHERE OrderId > 1000; GO
  1. DELETE és una ordre DML.
  2. DELETE s'executa mitjançant un bloqueig de fila; cada fila de la taula es bloqueja per suprimir-la.
  3. Podem utilitzar la clàusula where amb DELETE per filtrar i suprimir registres específics.
  4. L'ordre DELETE s'utilitza per eliminar files d'una taula segons la condició WHERE.
  5. Manté el registre, de manera que és més lent que TRUNCATE.
  6. La sentència DELETE elimina les files d'una en una i registra una entrada al registre de transaccions per a cada fila suprimida.
  7. Identitat de conservació de columna DELETE conserva la identitat.
  8. Per utilitzar Suprimeix, necessiteu permís SUPRIMIR a la taula.
  9. Delete elimina més espai de transaccions que la sentència Truncate.
  10. La supressió es pot utilitzar amb visualitzacions indexades.

TIRAR

La consulta de taula DROP elimina una o més definicions de taula i totes les dades, índexs, activadors, restriccions i especificacions de permisos per a aquestes taules. L'ordre DROP requereix ALTER el permís de l'esquema al qual pertany la taula, el permís CONTROL a la taula o la pertinença a la funció de base de dades fixa db_ddladmin.

La següent consulta SQL elimina la taula de clients i les seves dades i índexs de la base de dades actual.

DROP TABLE Customers ;
  1. L'ordre DROP elimina una taula de la base de dades.
  2. També se suprimiran totes les files, índexs i privilegis de les taules.
  3. No s'activaran activadors de DML.
  4. L'operació no es pot recuperar.
  5. DROP i TRUNCATE són ordres DDL, mentre que DELETE és una ordre DML.
  6. Les operacions DELETE es poden recuperar (desfer), mentre que les operacions DROP i TRUNCATE no es poden recuperar

Resum

En aquest post, hem vist les diferències entre les ordres SQL TRUNCATE, DELETE i DROP. Vam veure les característiques clau d’aquestes ordres.

Gràcies per llegir!

#sql #sql sever #database #webdev