Što je DELETE upit?
Naredba MySQL DELETE koristi se za brisanje redaka koji više nisu potrebni iz tablica baze podataka. Iz tablice briše cijeli redak i vraća broj izbrisanih redaka. Naredba Delete korisna je za brisanje privremenih ili zastarjelih podataka iz baze podataka.
Upit Delete u MySQL može izbrisati više od jednog retka iz tablice u jednom upitu. To se pokazuje kao prednost prilikom uklanjanja velikog broja redaka iz tablice baze podataka.
Jednom kada je izbrisan redak u MySQL retku, ne može se oporaviti. Stoga se snažno preporučuje izrada sigurnosnih kopija baze podataka prije brisanja podataka iz baze podataka. To vam može omogućiti da vratite bazu podataka i kasnije ih pregledate ako zatreba.
Kako izbrisati red u MySQL-u
Za brisanje retka u MySQL-u koristi se naredba DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
OVDJE
- DELETE FROM `ime_tabele` govori MySQL poslužitelju da ukloni retke iz tablice ...
- [WHERE uvjet] nije obavezan i koristi se za stavljanje filtra koji ograničava broj redaka na koje utječe MySQL DELETE upit retka.
Ako se klauzula WHERE ne koristi u upitu MySQL DELETE, tada će se izbrisati svi retci u datoj tablici.
Primjer MySQL upita za brisanje
Prije nego što krenemo u detaljniju raspravu o naredbi DELETE, ubacimo neke uzorke podataka u tablicu filmova s kojima ćemo raditi.
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);
Izvršavanje gornje skripte dodaje tri (3) filma u tablicu filmova. Prije nego što krenemo dalje u našu lekciju, stavimo sve filmove u tablicu. Skripta prikazana u nastavku to čini.
SELECT * FROM `movies`;
Izvršavanje gornje skripte daje nam sljedeće rezultate.
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 |
Pretpostavimo da videoteka Myflix više ne želi iznajmljivati "Veliki diktator" svojim članovima i žele ga ukloniti iz baze podataka. Njegov je ID filma 18, možemo koristiti skriptu prikazanu dolje kako bismo izbrisali njegov redak iz tablice filmova.
DELETE FROM `movies` WHERE `movie_id` = 18;
Izvršavanje gornje skripte u MySQL WorkBenchu protiv Myflixa briše film s id 18 iz tablice baze podataka.
Pogledajmo trenutni status tablice filmova.
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 |
BILJEŠKA:
- film s id 18 nije vraćen u skupu rezultata upita.
- ne možete izbrisati niti jedan stupac za tablicu. Možete izbrisati cijeli redak.
Recimo da imamo popis filmova koje želimo izbrisati. Klauzulu WHERE možemo koristiti zajedno s IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Izvršavanjem gornje skripte filmovi s ID-ovima 20 i 21 brišu se iz naše tablice filmova.
Sažetak
- Naredba delete koristi se za uklanjanje podataka koji više nisu potrebni iz tablice.
- Klauzula "WHERE" koristi se za ograničavanje broja redaka na koje utječe upit DELETE.
- Jednom kad se podaci izbrišu, ne mogu se oporaviti, stoga se preporučuje da napravite sigurnosne kopije prije brisanja podataka.