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.

  • ๐Ÿ—‘๏ธ Osnovna izjava: DELETE FROM `naziv_tablice` [WHERE uvjet] uklanja cijele retke i vraฤ‡a broj izbrisanih redaka.
  • โš ๏ธ Izostavljeno GDJE: Izostavljanjem klauzule WHERE briลกe se svaki redak u tablici, stoga uvijek filtrirajte prije izvrลกavanja.
  • ๐ŸŽฏ TargetUklanjanje: WHERE `movie_id` = 18 uklanja jedan zapis, dok WHERE `movie_id` IN (20,21) uklanja nekoliko zapisa jednom naredbom.
  • ๐Ÿ” Nepovratna akcija: Izbrisani podaci ne mogu se vratiti bez sigurnosne kopije, stoga napravite sigurnosnu kopiju baze podataka prije pokretanja naredbe DELETE.
  • ๐Ÿ“Š Opseg na razini retka: DELETE briลกe samo cijele retke; brisanje vrijednosti jednog stupca zahtijeva UPDATE s NULL.
  • โš–๏ธ BRISANJE vs. SKRACIVANJE vs. ISPUล TANJE: DELETE filtrira retke, TRUNCATE trenutno prazni tablicu, a DROP uklanja samu strukturu tablice.

ล 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.

Pitanja i odgovori

Samo unutar otvorene transakcije. Pokrenite START TRANSACTION, izvrลกite DELETE, a zatim ROLLBACK da biste to poniลกtili. Nakon COMMIT-a ili s omoguฤ‡enim autocommitom, retci nestaju i samo ih sigurnosna kopija moลพe vratiti.

Koristite DELETE za viลกe tablica s PRIDRUลฝITE, imenovanjem obje tablice prije kljuฤne rijeฤi FROM. Alternativno, definirajte strani kljuฤ s ON DELETE CASCADE tako da se podreฤ‘eni retci automatski uklanjaju kada se izbriลกe roditeljski redak.

Sigurno aลพuriranje je omoguฤ‡eno prema zadanim postavkama u MySQL Radna tezgaOdbacuje svako brisanje ฤija klauzula WHERE ne koristi kljuฤni stupac, sprjeฤavajuฤ‡i sluฤajno brisanje cijele tablice. Onemoguฤ‡ite ga pod Uredi > Postavke > SQL ureฤ‘ivaฤ.

Da. AI asistenti prevode zahtjev na obiฤnom engleskom jeziku u DELETE sintaksu i mogu objasniti WHERE klauzulu. Uvijek prvo provjerite generirani filtar u odnosu na SELECT, jer AI model ne moลพe vidjeti vaลกe podatke uลพivo.

Ne. Neka umjetna inteligencija napiลกe nacrt naredbe, ali je prvo sami izvrลกite na sigurnosnoj kopiji ili pripremnoj kopiji. Nedostajuฤ‡a WHERE klauzula briลกe svaki redak i nijedan AI alat ne moลพe to poniลกtiti nakon ลกto je transakcija potvrฤ‘ena.

Saลพmite ovu objavu uz: