logo

Diferència entre DELETE i TRUNCATE

ELIMINAR és una ordre DML (Llenguatge de manipulació de dades) i s'utilitza quan especifiquem la fila (tupla) que volem eliminar o eliminar de la taula o relació. L'ordre DELETE pot contenir una clàusula WHERE. Si la clàusula WHERE s'utilitza amb l'ordre DELETE, elimina o elimina només aquelles files (tuples) que compleixen la condició; en cas contrari, per defecte, elimina totes les tuples (files) de la taula. Recordeu que DELETE registra les supressions de files.

Sintaxi:

ELIMINAR DE TableName



ON condició;

què és f5 al teclat

TRUNCAR és una ordre DDL (Data Definition Language) i s'utilitza per eliminar totes les files o tuples d'una taula. A diferència de l'ordre DELETE, l'ordre TRUNCATE no conté a clàusula ON . A l'ordre TRUNCATE, el registre de transaccions de cada pàgina de dades suprimida no es registra. A diferència de l'ordre DELETE, l'ordre TRUNCATE és ràpida. No podem revertir les dades després d'utilitzar l'ordre TRUNCATE.

Sintaxi:

TRUNCATE TABLE TableName;

Entenem-ho prenent un exemple senzill en què crearem una taula simulada i després farem l'operació d'eliminació.

Consulta:

CREATE table Employee ( Emp_id int,  name VARCHAR(20),  country VARCHAR(20),  Salary INT); --insert the data in the Employee Table INSERT INTO Employee (Emp_id, name, country, Salary) values (101, 'Mohit', 'India', 60000),  (103, 'Anish', 'England', 70000),  (104, 'Shubham', 'France', 100000),  (102, 'Danish', 'Sweden', 40000),  (105, 'Vivek', 'Wales', 50000),  (106, 'Rohan', 'Scotland', 30000);  Select * from Employee ;>

Sortida

Taula d'empleats

Taula d'empleats

Exemple per a l'ordre d'eliminació:

Ara heu de crear una consulta per eliminar l'última entrada amb el valor 106 per a Emp_id.

Consulta:

Delete from Employee where Emp_id = 106;>

Sortida

sortida

sortida

Exemple per a l'ordre TRUNCATE

Per eliminar completament tots els registres dels jugadors de la taula en aquest cas, utilitzeu l'ordre truncate.

Consulta:

TRUNCATE TABLE Employee;>

Diferències entre DELETE i TRUNCATE

Suprimeix Truncar
L'ordre DELETE s'utilitza per suprimir files especificades (una o més). Tot i que aquesta ordre s'utilitza per eliminar totes les files d'una taula.
És un DML (llenguatge de manipulació de dades) comandament. Si bé és a DDL (llenguatge de definició de dades) comandament.
Pot haver-hi una clàusula WHERE a l'ordre DELETE per filtrar els registres. Tot i que pot ser que no hi hagi la clàusula WHERE a l'ordre TRUNCATE.
A l'ordre DELETE, una tupla es bloqueja abans d'eliminar-la. En aquesta ordre, la pàgina de dades es bloqueja abans d'eliminar les dades de la taula.
La instrucció DELETE elimina les files d'una en una i registra una entrada al registre de transaccions per a cada fila suprimida. TRUNCATE TABLE elimina les dades desassignant les pàgines de dades utilitzades per emmagatzemar les dades de la taula i només registra les desassignacions de pàgines al registre de transaccions.
L'ordre DELETE és més lenta que l'ordre TRUNCATE. Mentre que l'ordre TRUNCATE és més ràpida que l'ordre DELETE.
Per utilitzar l'opció Suprimeix, necessiteu el permís DE SUPPRIMER a la taula. Per utilitzar Truncate en una taula necessitem almenys ALTERA permís a la taula.
La identitat de la columna menys conserva la identitat després d'utilitzar la instrucció DELETE a la taula. Identitat, la columna es restableix al seu valor inicial si la taula conté una columna d'identitat.
La supressió es pot utilitzar amb vistes indexades. El truncat no es pot utilitzar amb vistes indexades.
Aquesta ordre també pot activar el disparador. Aquesta ordre no activa l'activació.
La instrucció DELETE ocupa més espais de transacció que Truncate. La instrucció truncada ocupa menys espais de transacció que DELETE.

Les operacions d'eliminació es poden enredar.

TRUNCATE no es pot revertir perquè provoca una confirmació implícita.

Suprimir no deixa caure tota la taula. Adquireix un bloqueig a la taula i comença a suprimir les files.

TRUNCATE primer deixa caure la taula i després la torna a crear, cosa que és més ràpid que suprimir files individuals.

Conclusió

En aquest article, SQL els desenvolupadors poden eliminar les files correctament utilitzant les ordres DELETE i TRUNCATE correctament. L'ordre TRUNCATE s'ha d'utilitzar amb precaució perquè elimina tots els registres de la taula. Els principiants també es beneficiaran de l'explicació d'aquest tutorial sobre les distincions entre les ordres Suprimeix i Truncar.

ELIMINAR:

  • Voleu eliminar d'una taula tots els empleats que no han comprat res en els últims sis mesos.
  • Voleu eliminar un empleat d'una taula.

TRUNCAR:

  • Voleu restaurar el contingut de la taula al seu estat original.
  • No cal que pugueu restaurar les dades; només voleu eliminar-lo del tot de la taula.