Τι είναι το ερώτημα DELETE;
Η εντολή MySQL DELETE χρησιμοποιείται για τη διαγραφή σειρών που δεν απαιτούνται πλέον από τους πίνακες βάσης δεδομένων. Διαγράφει ολόκληρη τη σειρά από τον πίνακα και επιστρέφει τον αριθμό των διαγραμμένων σειρών. Η εντολή Διαγραφή είναι χρήσιμη για τη διαγραφή προσωρινών ή ξεπερασμένων δεδομένων από τη βάση δεδομένων σας.
Το ερώτημα Διαγραφή στο MySQL μπορεί να διαγράψει περισσότερες από μία σειρές από έναν πίνακα σε ένα μόνο ερώτημα. Αυτό αποδεικνύεται ότι είναι πλεονεκτήματα κατά την αφαίρεση μεγάλου αριθμού σειρών από έναν πίνακα βάσης δεδομένων.
Μόλις διαγραφεί μια σειρά Διαγραφή στη γραμμή MySQL, δεν μπορεί να ανακτηθεί. Συνιστάται επομένως να δημιουργείτε αντίγραφα ασφαλείας της βάσης δεδομένων πριν διαγράψετε τυχόν δεδομένα από τη βάση δεδομένων. Αυτό μπορεί να σας επιτρέψει να επαναφέρετε τη βάση δεδομένων και να προβάλετε τα δεδομένα αργότερα εάν απαιτείται.
Πώς να διαγράψετε μια σειρά στο MySQL
Για να διαγράψετε μια σειρά στη MySQL, χρησιμοποιείται η δήλωση DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
ΕΔΩ
- ΔΙΑΓΡΑΦΗ ΑΠΟ το «table_name` λέει στον διακομιστή MySQL να αφαιρέσει σειρές από τον πίνακα…
- Το [WHERE condition] είναι προαιρετικό και χρησιμοποιείται για την τοποθέτηση ενός φίλτρου που περιορίζει τον αριθμό των σειρών που επηρεάζονται από το ερώτημα σειράς MySQL DELETE.
Εάν ο όρος WHERE δεν χρησιμοποιείται στο ερώτημα ΔΙΑΓΡΑΦΗ MySQL, τότε όλες οι σειρές σε έναν δεδομένο πίνακα θα διαγραφούν.
Παράδειγμα MySQL Delete Query
Πριν προχωρήσουμε σε περισσότερες λεπτομέρειες συζητήστε την εντολή ΔΙΑΓΡΑΦΗ, ας εισαγάγουμε μερικά δείγματα δεδομένων στον πίνακα ταινιών για να εργαστούμε.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 7);INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);INSERT INTO movies (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);
Η εκτέλεση του παραπάνω σεναρίου προσθέτει τρεις (3) ταινίες στον πίνακα ταινιών. Πριν προχωρήσουμε περισσότερο στο μάθημά μας, ας πάρουμε όλες τις ταινίες στο τραπέζι μας. Το σενάριο που φαίνεται παρακάτω το κάνει αυτό.
SELECT * FROM `movies`;
Η εκτέλεση του παραπάνω σεναρίου μας δίνει τα ακόλουθα αποτελέσματα.
movie_id | itle | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
18 | The Great Dictator | Chalie Chaplie | 1920 | 7 |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
Ας υποθέσουμε ότι η βιβλιοθήκη βίντεο του Myflix δεν επιθυμεί πλέον να ενοικιάζει το "The Great Dictator" στα μέλη της και θέλουν να αφαιρεθεί από τη βάση δεδομένων. Το αναγνωριστικό ταινίας του είναι 18, μπορούμε να χρησιμοποιήσουμε το σενάριο που εμφανίζεται παρακάτω για να διαγράψουμε τη σειρά του από τον πίνακα ταινιών.
DELETE FROM `movies` WHERE `movie_id` = 18;
Η εκτέλεση του παραπάνω σεναρίου στο MySQL WorkBench ενάντια στο Myflix διαγράφει την ταινία με το αναγνωριστικό 18 από τον πίνακα βάσης δεδομένων.
Ας δούμε την τρέχουσα κατάσταση του πίνακα ταινιών.
SELECT * FROM `movies`;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
ΣΗΜΕΙΩΣΗ:
- η ταινία με αναγνωριστικό 18 δεν έχει επιστρέψει στο σύνολο αποτελεσμάτων ερωτήματος.
- δεν μπορείτε να διαγράψετε μία στήλη για έναν πίνακα. Μπορείτε να διαγράψετε μια ολόκληρη σειρά.
Ας υποθέσουμε ότι έχουμε μια λίστα με ταινίες που θέλουμε να διαγράψουμε. Μπορούμε να χρησιμοποιήσουμε τον όρο WHERE μαζί με το IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Η εκτέλεση του παραπάνω σεναρίου διαγράφει ταινίες με αναγνωριστικά 20 και 21 από τον πίνακα ταινιών μας.
Περίληψη
- Η εντολή διαγραφής χρησιμοποιείται για την αφαίρεση δεδομένων που δεν απαιτούνται πλέον από έναν πίνακα.
- Ο όρος "WHERE" χρησιμοποιείται για τον περιορισμό του αριθμού των σειρών που επηρεάζονται από το ερώτημα DELETE.
- Μόλις διαγραφούν τα δεδομένα, δεν είναι δυνατή η ανάκτησή τους, συνιστάται επομένως να δημιουργείτε αντίγραφα ασφαλείας πριν από τη διαγραφή δεδομένων.