mysql delete statement delete command syntax
Ten samouczek wyjaśnia, jak używać instrukcji MySQL DELETE do usuwania danych z tabeli lub usuwania całej tabeli i różnic między poleceniami obcinania i usuwania:
Jak wiemy, w MySQL DELETE jest językiem manipulacji danymi lub DML.
Jak sama nazwa wskazuje, polecenie służy do usuwania wierszy z tabeli. Za pomocą tego polecenia możemy usunąć jeden lub więcej niechcianych wierszy w jednej transakcji. Istnieje wiele sposobów usuwania rekordów z tabeli za pomocą polecenia DELETE.
pytania do rozmowy kwalifikacyjnej testowania ręcznego za 3 lata doświadczenia
W tym samouczku omówimy je szczegółowo wraz z prostymi przykładami.
Czego się nauczysz:
- Polecenie MySQL DELETE
- Różnica między instrukcjami TRUNCATE i DELETE
- Więzy integralności i jej wpływ na DELETE
- Często zadawane pytania i odpowiedzi
- Wniosek
Polecenie MySQL DELETE
Jest ważny czynnik, o którym należy pamiętać, zanim przejdziemy dalej. Żaden wiersz lub wiele wierszy, które usuwamy za pomocą polecenia DELETE, nigdy nie może zostać odzyskane.
Dlatego, aby uniknąć scenariuszy, w których wiersz jest usuwany przez pomyłkę, zaleca się wykonanie kopii zapasowej tabeli przed wykonaniem instrukcji DELETE. Możemy później użyć tej kopii zapasowej do przywrócenia tabeli w przypadku jakichkolwiek błędów.
Uwaga: Używamy MySQL w wersji 8.0. Możesz go pobrać z tutaj .
Składnia usuwania MySQL:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tablename[.*] [, tablename[.*]] [WHERE condition] [ORDER BY] [LIMIT row_count] ;
Objaśnienie składni:
- Składnia rozpoczyna się od słowa kluczowego „DELETE FROM”, informując w ten sposób serwer MySQL o rodzaju wykonywanej czynności. To jest obowiązkowe słowo kluczowe i nie można go pominąć.
- Następnie pojawia się nazwa tabeli, w której ma zostać wykonana operacja DELETE. Jest to również obowiązkowe i nie można go pominąć. Możemy tu wymienić jedną lub więcej nazw tabel.
- Następnie możemy wspomnieć o dowolnym warunku, który kontroluje kwalifikowalność wierszy do usunięcia. To jest klauzula opcjonalna. Słowo kluczowe to GDZIE.
- Po klauzuli WHERE następuje klauzula ORDER BY, która wymusza wiersze do usunięcia w określonej kolejności, rosnąco lub malejąco, w kolumnie (kolumnach). To jest klauzula opcjonalna.
- Klauzula LIMIT następuje po klauzuli ORDER BY. Ogranicza liczbę wierszy, które instrukcja DELETE może usunąć z tabeli.
Modyfikatory w instrukcji DELETE
# 1) LOW_PRIORITY:
Ten modyfikator informuje MySQL Engine, aby opóźnił wykonanie instrukcji DELETE do czasu, gdy nie ma żadnych połączeń odczytujących z tabeli, z której próbujemy usunąć.
Pomaga to w osiągnięciu spójności we wszystkich innych operacjach, które będą wykonywane na tej tabeli. Pomaga to również w unikaniu problemów z blokowaniem tabel.
# 2) SZYBKO:
Za każdym razem, gdy usuwamy wiersz, usuwany jest również odpowiedni indeks. Odzyskanie miejsca w czasie wykonywania instrukcji DELETE pochłania czas procesora. Jeśli użyjemy słowa kluczowego QUICK, to odpowiadająca mu przestrzeń indeksu pozostaje niewykorzystana i może być wykorzystana, gdy zostaną wstawione nowe rekordy pasujące do zakresu indeksów, który został wcześniej usunięty.
Na przykład, rozważ tabelę pracowników, w której indeksem jest identyfikator pracownika. Za każdym razem, gdy pracownik opuszcza organizację, musimy usunąć odpowiedni rekord. Jeśli użyjemy klauzuli QUICK, odpowiednia przestrzeń indeksów pozostanie niewykorzystana.
Kiedy dołączy nowy pracownik, otrzyma nowy numer pracownika, a nie ten sam numer osoby, która odeszła. W takich przykładach nie zaleca się używania QUICK.
Przykład MYSQL DELETE
Poniżej podano przykładową tabelę utworzoną w MYSQL.
Nazwa schematu: Pacyfik
Nazwa tabeli: pracowników
Nazwy kolumn:
empNum; Przechowuje wartości całkowite dla numeru pracownika.
nazwisko: Przechowuje wartości varchar dla nazwiska pracownika.
Imię: Przechowuje wartości varchar dla imienia pracownika.
e-mail: Przechowuje wartości varchar dla identyfikatora e-mail pracownika.
deptNum; Przechowuje varchar dla identyfikatora działu, do którego należy pracownik.
wynagrodzenie: Przechowuje wartości dziesiętne wynagrodzenia każdego pracownika.
Data rozpoczęcia: Przechowuje wartości dat dla daty dołączenia pracownika.
Nazwa schematu: Pacyfik
Nazwa tabeli: historia_pracowników
Nazwy kolumn:
empNum; Zawiera wartości całkowite dla numeru pracownika.
nazwisko: Przechowuje wartości varchar dla nazwiska pracownika.
Imię: Przechowuje wartości varchar dla imienia pracownika.
e-mail: Przechowuje wartości varchar dla identyfikatora e-mail pracownika.
deptNum; Przechowuje varchar dla identyfikatora działu, do którego należy pracownik.
wynagrodzenie: Przechowuje wartości dziesiętne wynagrodzenia każdego pracownika.
Data rozpoczęcia: Przechowuje wartości dat dla daty dołączenia pracownika.
Nazwa schematu: Pacyfik
Nazwa tabeli: działy
Nazwy kolumn:
deptNum; Przechowuje varchar dla identyfikatora działu w organizacji.
Miasto: Zawiera nazwę miasta, w którym pracują departamenty.
kraj: Zawiera nazwę kraju odpowiadającego miastu.
premia: Zawiera procentową wartość premii.
MySQL Usuń jeden wiersz
Pierwszy i łatwiejszy sposób usuwania rekordów z tabeli w usuwaniu rekordów jeden po drugim, przy użyciu bardzo silnej klauzuli WHERE, która zapewnia, że usuwany jest tylko jeden odpowiedni rekord. Można to później wykorzystać do usunięcia zestawu podobnych rodzajów wierszy z tabeli.
Przyjrzyjmy się szczegółowo instrukcji delete i jej wykonaniu.
Tutaj spróbujemy usunąć pracownika o nazwisku „Chris Nolan” z numerem pracownika 1013.
Jak pokazano na powyższym rysunku, instrukcja DELETE została wykonana pomyślnie i usunięto jeden wiersz z tabeli pracownika.
Plik wynik Poniższa instrukcja przedstawia czas wykonania instrukcji, instrukcję MySQL, która została wykonana oraz liczbę wierszy, na które miało to wpływ.
Upewnij się, że chodzi o klauzulę WHERE tutaj. Jeśli klauzula WHERE jest niepoprawna lub jeśli przegapisz klauzulę WHERE, może to spowodować utratę danych. Aby uniknąć takich sytuacji, w produkcji praktykuje się okresowe tworzenie kopii zapasowych lub rozładowywanie danych.
Aby zweryfikować wynik tej instrukcji DELETE, wykonajmy instrukcję SELECT w tej tabeli z empNum równym 1013.
Wyniki wyjściowe pokazują wartość NULL dla wszystkich kolumn, co oznacza, że nie istnieje żaden rekord dla takiego empNum. Wynik poniższego zapytania pokazuje, że zwrócono 0 wierszy, co oznacza, że rekord został usunięty przez wykonanie powyższej instrukcji DELETE.
Pytanie:
DELETE FROM employees WHERE empNum = 1013 ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | |
---|---|---|---|---|---|
7 | Jest to stosunkowo wolniejsze niż TRUNCATE w porównaniu do usuwania całych danych z tabeli. | Jest to stosunkowo szybsze niż DELETE, w porównaniu do usuwania całych danych z tabeli. | |||
ZERO | ZERO | ZERO | ZERO | ZERO | ZERO |
MySQL DELETE przy użyciu klauzuli ORDER BY i LIMIT
ORDER BY i LIMIT to dwie klauzule, które omówiliśmy powyżej. Pierwsza z nich pomaga w podjęciu decyzji o kolejności, w jakiej rekordy powinny być czyszczone, albo usuń rekordy z empNum w kolejności rosnącej, albo usuń rekordy z wynagrodzeniem w porządku malejącym. Ta ostatnia pomaga w ograniczaniu liczby rekordów, które ta transakcja może usunąć.
Na przykład, jeśli chcemy usunąć tylko 2 pracowników z działu nr 4, którzy pobierają wysokie pensje. Następnie zapytanie składa się z trzech części.
- Pierwszy, musimy usunąć pracowników z działu numer 4. Będzie to obsługiwane przez klauzulę WHERE.
- Kolejny, musimy oczyścić pracowników, którzy zarabiają wysokie pensje. Służy do tego klauzula ORDER BY w kolumnie wynagrodzenia w porządku malejącym.
- W końcu, musimy zwolnić tylko dwóch pracowników. Będzie to obsługiwane przez klauzulę LIMIT.
Rzućmy okiem na zapytanie DELETE i zobaczmy wyniki. Zanim to zrobimy, najpierw określmy, jakie dokładnie rekordy chcemy usunąć. Użyjemy powyższych warunków z instrukcją SELECT, aby uzyskać rekordy, które chcemy usunąć, a następnie wykonamy to samo zapytanie, aby sprawdzić, czy te rekordy zostały usunięte, czy nie.
W powyższym zapytaniu SELECT spełniliśmy wszystkie trzy warunki, o których mówiliśmy powyżej, używając klauzuli WHERE, ORDER BY i LIMIT. Zapytanie dało nam 2 rekordy, jeden z empNum 1010, a drugi z 1007. Teraz wykonamy zapytanie DELETE, aby upewnić się, że te dwa rekordy zostały usunięte.
Jak pokazano na powyższym rysunku, instrukcja DELETE została wykonana pomyślnie i usunęła dwa wiersze z tabeli pracownika. Plik wynik Poniższa instrukcja przedstawia czas wykonania instrukcji, instrukcję MySQL, która została wykonana oraz liczbę wierszy, na które miało to wpływ.
Aby zweryfikować wynik tej instrukcji DELETE, wykonajmy SELECT dla empNum 1010 i 1007. Nie możemy użyć tego samego zapytania SELECT, co użyte powyżej, ponieważ pokazałoby to innych pracowników w dziale 4.
Wyniki wyjściowe pokazują wartość NULL dla wszystkich kolumn, co oznacza, że nie istnieje żaden rekord dla takich numerów pracowników. Plik Wynik poniższego zapytania pokazuje, że zwrócono 0 wierszy, co oznacza, że rekord został usunięty przez wykonanie powyższej instrukcji DELETE.
Pytanie:
DELETE FROM employees WHERE deptNum = 4 ORDER BY salary DESC LIMIT 2 ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | |
---|---|---|---|---|---|
ZERO | ZERO | ZERO | ZERO | ZERO | ZERO |
MySQL DELETE za pomocą klauzuli Select
Następnie przejdziemy przez użycie klauzuli SELECT podczas usuwania rekordów z jednej tabeli.
Rozważ następujący scenariusz:
Mamy dwa zestawy tabel: pracowników i działów. DeptNum jest jak klucz podstawowy w tabeli działu i klucz obcy w tabeli pracownika. Oznacza to, że jeśli pracownikowi jest przypisany dział, to musi on pochodzić z jednego z działów w tabeli działów.
Teraz musimy usunąć te rekordy z tabeli działu, do której dotychczas nie przypisano żadnego pracownika. Możemy to zrobić, mając klauzulę SELECT w zapytaniu podrzędnym zapytania DELETE.
Najpierw zidentyfikujmy rekordy, które chcemy usunąć:
Powyższe zapytanie SELECT zawiera podzapytanie.
Działanie zapytania jest następujące:
Zapytanie pobiera wszystkie rekordy z tabeli działu, w której numer działu nie istnieje w tabeli pracownika. Łączenie jest wykonywane w zapytaniu podrzędnym w dziale nr dwóch tabel.
Teraz uruchommy zapytanie DELETE i zobaczmy, czy możemy usunąć te dwa rekordy z tabeli działu, ponieważ żaden pracownik nie jest przypisany do tych działów.
Jak pokazano na powyższym rysunku, instrukcja delete usunęła 2 wiersze z tabel działów, do których nie przypisano żadnego pracownika.
Aby zweryfikować wynik tej instrukcji DELETE, wykonajmy SELECT w tabeli i zobaczmy, co mamy w wynikach.
Komunikat wyjściowy powyższego zapytania weryfikacyjnego mówi „Zwrócono 0 wierszy”. Oznacza to, że wiersze z numerami działu 6 i 7 zostały usunięte. Dane wyjściowe również pokazują brak rekordów zamiast wartości NULL, ponieważ rekordy zostały usunięte.
Pytanie:
DELETE FROM departments WHERE NOT EXISTS (SELECT deptNum FROM employees WHERE departments.deptNum = employees.deptNum ) ;
MySQL USUŃ całe dane z tabeli
Następnie przyjrzymy się scenariuszowi, w którym musimy usunąć wszystkie wiersze lub rekordy z tabeli.
W sytuacji produkcyjnej możesz nigdy nie spotkać się z taką sytuacją. Ale tego rodzaju rzeczy byłyby wymagane w obszarze programowania, w którym musisz przetestować swój kod w wielu różnych scenariuszach i możesz chcieć ponownie utworzyć nowy zestaw danych testowych, usuwając rekordy istniejące w tabeli.
Najpierw przyjrzyjmy się danym, które zamierzamy usunąć. Spróbujemy usunąć dane z tabeli workers_history.
Poniżej podano aktualnie istniejące dane w tabeli.
Tutaj mamy 18 wierszy w tabeli workers_history. Przejdźmy teraz dalej i usuńmy to wszystko w jednej transakcji. Zapytanie jest prawie podobne do tego, które omówiliśmy w pierwszej sekcji. Jedyna zmiana polega na tym, że musimy usunąć klauzulę WHERE z zapytania, aby nie było ograniczeń co do liczby wierszy, które chcemy usunąć.
Jak pokazano na powyższym obrazku, instrukcja usuwania została wykonana pomyślnie i usunęła wszystkie 18 wierszy z tabeli workers_history. Poniższa instrukcja wyjściowa przedstawia czas wykonania instrukcji, instrukcję MySQL, która została wykonana oraz liczbę wierszy, na które miało to wpływ.
jak wyodrębnić plik torrentowany
Aby zweryfikować wynik tej instrukcji DELETE, wykonajmy SELECT w tabeli i zobaczmy, co mamy w wynikach.
Wyniki wyjściowe pokazują wartość NULL dla wszystkich kolumn, co oznacza, że nie istnieje żaden rekord dla takich numerów pracowników. Wynik poniższego zapytania pokazuje, że zwrócono 0 wierszy, co oznacza, że wszystkie rekordy zostały usunięte przez wykonanie powyższej instrukcji DELETE.
Pytanie:
DELETE FROM employees_history ;
Migawka tabeli po:
empNum | nazwisko | Imię | deptNum | Wynagrodzenie | |
---|---|---|---|---|---|
ZERO | ZERO | ZERO | ZERO | ZERO | ZERO |
MySQL USUŃ całą tabelę
Teraz przyjrzymy się scenariuszowi, w którym musimy usunąć samą tabelę. W języku SQL nazywamy to DROP the table. Nie ma znaczenia, czy tabela zawiera dane, czy nie. Po prostu usunie tabelę wraz z danymi, jeśli takie istnieją.
W powyższej sekcji usunęliśmy dane z tabeli workers_history. W tej sekcji usuniemy samą tabelę workers_history.
Poniżej znajduje się polecenie wraz z jego danymi wyjściowymi:
Jak pokazano na powyższym obrazku, instrukcja DROP została wykonana pomyślnie i usunęła tabelę workers_history z katalogu systemowego bazy danych MySQL.
Jeśli spojrzysz na wiadomość, zobaczysz „0 dotkniętych wierszy”. Dzieje się tak, ponieważ usunęliśmy wszystkie 18 wierszy w poprzedniej sekcji. Gdyby ta tabela zawierała jakiekolwiek wiersze, wpłynęłoby to na te liczby wierszy, co oznacza usunięcie.
Aby zweryfikować wynik tej instrukcji DROP, wykonajmy SELECT na tabeli i zobaczmy, co mamy w wynikach.
Komunikat wyjściowy powyższego zapytania weryfikacyjnego mówi, że tabela nie istnieje. To potwierdza nasze wykonanie powyższej instrukcji DROP w celu usunięcia tabeli.
Pytanie:
DROP TABLE employees_history ;
Polecenie obcinania MySQL
Omówiliśmy już usuwanie wszystkich rekordów z tabeli za pomocą polecenia DELETE. To samo można osiągnąć również za pomocą instrukcji TRUNCATE.
W tym przykładzie ponownie utwórzmy tabelę workers_history i ponownie wypełnijmy ją danymi. T Poniżej znajdują się dwa zapytania, które zostały wykonane w celu ponownego utworzenia tabeli i ponownego jej wypełnienia:
Pytanie:
CREATE TABLE employees_history LIKE employees ; INSERT INTO employees_history (SELECT * FROM employees) ;
Tak wygląda teraz tabela workers_history z danymi.
Następnie usuniemy wszystkie rekordy z tej tabeli za pomocą instrukcji TRUNCATE.
Jak pokazano na rysunku, zapytanie zostało wykonane pomyślnie. Jeśli przyjrzysz się bliżej części „Wiadomość”, zobaczysz, że jest tam napisane „0 dotkniętych wierszy”. Wiemy jednak, że ta tabela ma 15 wierszy. Dlaczego więc pokazuje zero?
Powód: Instrukcja Truncate nie bierze pod uwagę liczby wierszy, na które ma wpływ jej wykonanie. Po prostu opróżnia stół. Jest to jedna z istotnych różnic między instrukcjami DELETE i TRUNCATE.
Sprawdźmy wykonanie instrukcji TRUNCATE, wykonując zapytanie SELECT w tabeli workers_history.
Jak pokazano na powyższym rysunku, zapytanie nie zwróciło żadnych wierszy, a także wszystkie kolumny pokazują wartości NULL, co oznacza, że instrukcja TRUNCATE, którą wykonaliśmy wcześniej, usunęła wszystkie rekordy z tabeli.
Pytanie:
TRUNCATE TABLE employees_history ;
Różnica między instrukcjami TRUNCATE i DELETE
Pan Nie | KASOWAĆ | ŚCIĘTY |
---|---|---|
1 | To język DML (język manipulacji danymi). | To jest DDL (język definicji danych). |
dwa | Każdy wyzwalacz AFTER DELETE w tabeli zostanie aktywowany, gdy użyjemy polecenia DELETE. | Żaden wyzwalacz AFTER DELETE na stole nie zostanie aktywowany, gdy użyjemy polecenia TRUNCATE. |
3 | Rekord można usunąć, nawet jeśli istnieją ograniczenia związane z kluczem obcym. | Rekordy z tabeli nie mogą zostać obcięte, jeśli istnieją ograniczenia związane z kluczem obcym. |
4 | Ponowna inicjalizacja tabeli nie nastąpi. | Stół zostanie ponownie zainicjowany. |
5 | Można użyć klauzuli WHERE. | Nie można użyć klauzuli WHERE. |
6 | Spowoduje to usunięcie jednego rekordu na raz i śledzi całkowitą liczbę usuniętych rekordów w dziennikach. | Czyści wszystkie rekordy na raz i nie śledzi liczby usuniętych rekordów. |
Więzy integralności i jej wpływ na DELETE
Zanim to nastąpi, zobaczmy czym jest integralność referencyjna lub RI lub ograniczenia klucza obcego?
Ograniczenia klucza obcego dotyczą ustanowienia relacji lub połączenia między tabelą nadrzędną i podrzędną. Pomaga to w tworzeniu odsyłaczy do danych w tabelach, które są ze sobą połączone. Jedna tabela nadrzędna może mieć wiele tabel podrzędnych i na odwrót.
Na przykład, dwie tabele, które do tej pory omawialiśmy, tj. pracownicy i działy, są ze sobą powiązane za pomocą ograniczenia klucza obcego. To ograniczenie jest ustanawiane przez utworzenie jednej kolumny, zwykle klucza podstawowego, jako kolumny kluczowej łączącej dwie tabele.
Kolumna DeptNum w tabeli działu została połączona z kolumną DeptNum w tabeli pracownika. W tym przypadku tabelą nadrzędną są działy, a tabelą podrzędną pracownicy.
Ale jak to wpływa na instrukcje DELETE?
W MySQL lub w dowolnej bazie danych istnieją pewne scenariusze, które należy obsłużyć podczas usuwania rekordów z tabel nadrzędnych lub podrzędnych.
Istnieje wiele opcji referencyjnych, które możemy omówić:
# 1) O USUNIĘCIU KASKADY: Reguła mówi, że nie możemy usunąć wiersza z tabeli nadrzędnej, jeśli ma on jakiekolwiek odniesienia lub ma odpowiadający wiersz w którejkolwiek z tabel podrzędnych. Jeśli jednak tabela nadrzędna ma sporo tabel podrzędnych, to żmudnym zadaniem jest najpierw usunięcie rekordów z każdej tabeli podrzędnej, a następnie z tabeli nadrzędnej.
W tym celu istnieje obejście o nazwie ON DELETE CASCADE. To jest jedna klauzula, która jest dodawana do instrukcji CREATE każdej z tabel podrzędnych. Tak więc, ilekroć mówimy o usunięciu wiersza z tabeli nadrzędnej, silnik MySQL najpierw zidentyfikuje odniesienia do tego wiersza w tabelach podrzędnych i usunie te rekordy, a na koniec usunie rekord z tabeli nadrzędnej.
# 2) BRAK DZIAŁANIA: To jest opcja domyślna. Jeśli wykonanie instrukcji DELETE usiłuje usunąć rekord, który ma odniesienia w którejkolwiek z tabel potomnych, to przy tej opcji wykonywanie instrukcji zostanie zatrzymane, a Transakcja MySQL zostanie cofnięty do ostatniego punktu zatwierdzenia.
# 3) OGRANICZENIE: Funkcjonowanie RESTRICT i NO ACTION jest takie samo. Zatrzyma wykonywanie i wyda wycofanie.
to klucz bezpieczeństwa sieci, taki sam jak hasło
# 4) SET NULL: Jeśli wykonanie instrukcji delete podejmie próbę usunięcia rekordu, który ma odniesienia w dowolnej tabeli podrzędnej, ta opcja zaktualizuje wartość kolumny we wszystkich tabelach podrzędnych na NULL i po zakończeniu usunie rekord z elementu nadrzędnego stół.
# 5) USTAW DOMYŚLNE: Jeśli wykonanie instrukcji DELETE usiłuje usunąć rekord, który ma odniesienia w którejkolwiek z tabel podrzędnych, ta opcja zaktualizuje wartości kolumn do wartości domyślnych, zgodnie z definicją w instrukcji CREATE tabeli.
Często zadawane pytania i odpowiedzi
Q # 1) Jak usunąć dane z tabeli w MySQL?
Odpowiedź: Poniżej podano składnię polecenia delete służącego do usuwania tylko wybranego wiersza danych.
DELETE FROM table_name WHERE condition;
Q # 2) Jak usunąć wszystkie dane z tabeli w MySQL?
Odpowiedź: Składnia polecenia DELETE do usunięcia wszystkich wierszy z tabeli jest następująca:
DELETE * FROM table_name;
Q # 3) Jak usunąć tabelę z bazy danych w MySQL?
Odpowiedź: Do usunięcia tabeli z bazy danych można użyć polecenia drop. Użytkownik może zamienić nazwę_tabeli na tabelę, którą należy usunąć.
DROP TABLE table_name;
Q # 4) Jak usunąć bazę danych w MySQL?
Odpowiedź: Do usunięcia bazy danych można użyć polecenia drop.
DROP Database db_name;
Użytkownicy mogą zastąpić nazwę db_name nazwą bazy danych, którą należy usunąć.
Q # 5) Co to jest ON DELETE CASCADE w MySQL?
Odpowiedź: Po usunięciu rekordu nadrzędnego funkcja ON DELETE CASCADE tworzy pasujący rekord podrzędny do usunięcia. W ten sposób efekt usunięcia jest przekazywany kaskadowo od rodzica do dziecka. Może to być przydatne przy usuwaniu wielu tabel.
P # 6) Dlaczego TRUNCATE jest traktowane jako instrukcja DDL?
Odpowiedź: Instrukcja TRUNCATE faktycznie porzuca i ponownie tworzy tabelę wraz z metadanymi tabeli. Zatem jest to instrukcja DDL.
P # 7) Czy TRUNCATE można cofnąć?
Odpowiedź: Nie, TRUNCATE jest instrukcją automatycznego zatwierdzania, jeśli jest wykonywana samodzielnie. Oznacza to, że nie można go wycofać, ponieważ zatwierdzenie jest również wykonywane razem z nim. Ale jeśli jest to część transakcji, można ją wycofać za pomocą plików dziennika SQL.
P # 8) Czy instrukcje DELETE można wycofać?
Odpowiedź: Tak, instrukcje DELETE można wycofać. Po prostu wykonaj polecenie ROLLBACK przed wykonaniem polecenia COMMIT.
P # 9) Czy kolumnę można usunąć za pomocą polecenia DELETE?
Odpowiedź: Dodanie lub usunięcie kolumny to polecenia DDL. W celu usunięcia kolumny z tabeli należy użyć instrukcji ALTER.
Wniosek
W tym samouczku poznaliśmy różne sposoby wykonywania instrukcji DELETE w MySQL.
Krótko mówiąc, widzieliśmy:
- MySQL Usuń jeden wiersz
- MySQL Usuń za pomocą klauzuli ORDER BY i Limit
- MySQL Usuń za pomocą klauzuli Select
- MySQL Usuń całą tabelę
- Obcięcie MySQL
- Różnica między instrukcjami TRUNCATE i DELETE
- Więzy integralności i jej wpływ na DELETE
Możemy użyć dowolnego z powyższych, w zależności od wymagań.
Miłego czytania !!
rekomendowane lektury
- Składnia poleceń Unix Cat, opcje z przykładami
- Polecenie sortowania Unix ze składnią, opcjami i przykładami
- MySQL Wstaw do tabeli - Wstaw składnię instrukcji i przykłady
- Aktualizuj MongoDB i usuń dokument z przykładami
- Polecenie Cut w systemie Unix z przykładami
- Nowe / Usuń operatory w C ++ z przykładami
- Instrukcja MySQL Update - składnia i przykłady aktualizacji zapytania
- Polecenie Ls w systemie Unix z przykładami