MySQL Upit DELETE: Kako izbrisati redak iz tablice
โก Pametni saลพetak
MySQL Upit DELETE uklanja retke iz tablice koji viลกe nisu potrebni i vraฤa broj pogoฤenih redaka. Ovaj resurs objaลกnjava sintaksu naredbe DELETE, filtriranje WHERE, brisanje viลกe redaka s IN i sigurnije alternative TRUNCATE i DROP.

ล to je DELETE upit?
The MySQL DELETE Naredba se koristi za uklanjanje redaka koji viลกe nisu potrebni iz tablice baze podataka. Briลกe cijeli redak iz tablice i vraฤa broj izbrisanih redaka. Naredba DELETE je korisna kada trebate izbrisati privremene ili zastarjele podatke iz baze podataka.
Upit DELETE u MySQL moลพe ukloniti viลกe od jednog retka iz tablice u jednom izvrลกavanju. To se pokazalo korisnim kada uklanjate veliki broj redaka iz tablice baze podataka.
Nakon ลกto se redak izbriลกe, ne moลพe se oporaviti. Uvijek napravite sigurnosnu kopiju baze podataka prije brisanja podataka kako bi se baza podataka mogla vratiti i kasnije pregledati ako je potrebno.
Kako izbrisati redak u MySQL
Nakon ลกto je svrha naredbe jasna, sljedeฤi korak je sintaksa. Za brisanje retka u MySQL, koristi se naredba DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
OVDJE:
- IZBRIล I IZ `naziv_tablice` govori MySQL posluลพitelj za uklanjanje redaka iz imenovane tablice.
- [WHERE stanje] je opcionalan i koristi se za primjenu filtra koji ograniฤava broj redaka na koje utjeฤe upit DELETE.
Ako WHERE klauzula ne koristi se u MySQL IZBRIล I upit, zatim svi retci u zadanoj tablici bit ฤe izbrisani.
โ ๏ธ Upozorenje: Prvo pokrenite filter kao SELECT. Ako vrati toฤno one retke koje namjeravate ukloniti, odgovarajuฤi DELETE je siguran. Potpuna sintaksa dokumentirana je u MySQL Priruฤnik za brisanje naredbi.
Primjer MySQL Izbriลกi upit
Sljedeฤi odjeljak gradi mali skup podataka, a zatim iz njega briลกe.
Korak 1: Umetnite uzorak podataka
Prije nego ลกto detaljnije raspravimo o SQL naredbi DELETE, umetnimo neke primjere podataka u tablicu filmova s โโkojima ฤemo raditi.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 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 gornjeg skripta dodaje tri (3) filma u tablicu filmova. Prije nego ลกto nastavimo, navedimo sve filmove u naลกoj tablici.
SELECT * FROM `movies`;
Izvrลกavanje gornjeg skripta daje nam sljedeฤe rezultate. Tri novo umetnuta retka su oznaฤena.
| film_id | naslov | direktor | godina_izdana | kategorija_id |
|---|---|---|---|---|
| 1 | Pirati s Kariba 4 | Rob Marshall | 2011 | 1 |
| 2 | Zaboravljam Saru Marshal | Nicholas stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Ime Crno | Edgar Jimz | 2010 | NULL |
| 5 | Tatine djevojฤice | NULL | 2007 | 8 |
| 6 | Anฤeli i demoni | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67% kriv | NULL | 2012 | NULL |
| 18 | Veliki diktator | Charlie Chaplin | 1940 | 7 |
| 19 | primjer filma | anoniman | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
Korak 2: Izbriลกite jedan redak
Pretpostavimo da Myflix videoteka viลกe ne ลพeli iznajmljivati โโfilm "Veliki diktator" i ลพeli ga ukloniti iz baze podataka. Njegov ID filma je 18, pa skript u nastavku briลกe taj redak.
DELETE FROM `movies` WHERE `movie_id` = 18;
Izvrลกavanje gornje skripte u MySQL radni stol u odnosu na Myflix bazu podataka briลกe film s ID-om 18 iz tablice.
Sada provjerimo trenutno stanje tablice filmova.
SELECT * FROM `movies`;
| film_id | naslov | direktor | godina_izdana | kategorija_id |
|---|---|---|---|---|
| 1 | Pirati s Kariba 4 | Rob Marshall | 2011 | 1 |
| 2 | Zaboravljam Saru Marshal | Nicholas stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Ime Crno | Edgar Jimz | 2010 | NULL |
| 5 | Tatine djevojฤice | NULL | 2007 | 8 |
| 6 | Anฤeli i demoni | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67% kriv | NULL | 2012 | NULL |
| 19 | primjer filma | anoniman | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
NAPOMENA:
- Film s ID-om 18 viลกe se ne vraฤa u skupu rezultata upita.
- Ne moลพete izbrisati jedan stupac iz tablice pomoฤu naredbe DELETE. Naredba uklanja cijeli redak. Za brisanje jednog polja upotrijebite AลฝURIRANJE upita ลกto postavlja stupac na NULL.
Korak 3: Izbriลกite viลกe redaka s IN
Recimo da imamo popis filmova koje ลพelimo izbrisati. Umjesto izvoฤenja jedne naredbe po retku, moลพemo kombinirati klauzulu WHERE s operatorom IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Izvrลกavanje gornjeg skripta briลกe filmove s ID-ovima 20 i 21 iz naลกe tablice filmova u jednom prolazu.
IZBRIล I vs. SKRATI vs. UBACI MySQL
BRISANJE nije jedini naฤin za uklanjanje podataka iz MySQLPoฤetnici ฤesto poseลพu za njim kada bi im brลพa naredba bolje odgovarala, pa donja tablica usporeฤuje tri naredbe za uklanjanje.
| svojstvo | DELETE | SKRATITI | KAP |
|---|---|---|---|
| Vrsta naredbe | DML | DDL | DDL |
| WHERE klauzula | Podrลพano | Nije podrลพano | Nije podrลพano |
| ล to se uklanja | Odabrani retci | Svi retci | Redci i struktura tablice |
| povrat na staro | Moguฤe unutar transakcije | Nije moguฤe (implicitno potvrฤivanje) | Nije moguฤe (implicitno potvrฤivanje) |
| AUTO_INCREMENT | Brojaฤ je zadrลพan | Brojaฤ se resetira na poฤetnu vrijednost | Brojaฤ se uklanja sa stolom |
| Brzina na velikim stolovima | Polako (red po red) | Vrlo brzo | Vrlo brzo |
Koristite DELETE kada vam je potreban filter ili moguฤnost vraฤanja na prethodno stanje. Koristite TRAJNI STOL kada ลพelite brzo isprazniti tablicu i resetirati njen AUTO_INCREMENT brojaฤ. Koristite DROP samo kada sama tablica viลกe nije potrebna, jer uklanja definiciju zajedno s podacima.
