Middle
Ποια είναι η διαφορά μεταξύ DELETE και TRUNCATE στο SQL;
sobes.tech AI
Απάντηση από AI
Οι βασικές διαφορές μεταξύ DELETE και TRUNCATE σε SQL:
- DELETE διαγράφει γραμμές από έναν πίνακα γραμμή προς γραμμή και μπορεί να έχει μια συνθήκη
WHERE. Η λειτουργία καταγράφεται στο αρχείο καταγραφής, επιτρέποντας την αναίρεση (ROLLBACK). - TRUNCATE διαγράφει όλες τις γραμμές από τον πίνακα ολόκληρο, χωρίς δυνατότητα να ορίσετε μια συνθήκη. Είναι μια πιο γρήγορη λειτουργία, καθώς δεν καταγράφει τη διαγραφή κάθε γραμμής ξεχωριστά, αλλά επαναφέρει τις σελίδες δεδομένων.
Παράδειγμα:
DELETE FROM users WHERE age < 18; -- θα διαγράψει μόνο τους χρήστες κάτω των 18
TRUNCATE TABLE users; -- θα διαγράψει όλους τους χρήστες ταυτόχρονα
Επιπλέον, το TRUNCATE συνήθως επαναφέρει τους μετρητές αυτο-αύξησης, ενώ το DELETE όχι.