MySQL
AKTUALIZACJA
Szukaj…
Składnia
UPDATE [LOW_PRIORITY] [IGNORE] tableName SET kolumna1 = wyrażenie1, kolumna2 = wyrażenie2, ... [GDZIE warunki]; // Prosta aktualizacja pojedynczej tabeli
AKTUALIZACJA [LOW_PRIORITY] [IGNORE] nazwa tabeli SET kolumna1 = wyrażenie1, kolumna2 = wyrażenie2, ... [GDZIE warunki] [ZAMÓWIENIE PO wyrażeniu [ASC | DESC]] [LIMIT liczba_wierszy]; // Aktualizacja z zamówieniem i limitem
UPDATE [LOW_PRIORITY] [IGNORE] table1, table2, ... SET kolumna1 = wyrażenie1, kolumna2 = wyrażenie2, ... [GDZIE warunki]; // Aktualizacja wielu tabel
Podstawowa aktualizacja
Aktualizowanie jednego wiersza
UPDATE customers SET email='[email protected]' WHERE id=1
To zapytanie aktualizuje treść email w tabeli customers do ciągu [email protected] gdzie wartość id jest równa 1. Stara i nowa zawartość tabeli bazy danych są przedstawione odpowiednio po lewej i prawej stronie:
Aktualizowanie wszystkich wierszy
UPDATE customers SET lastname='smith'
To zapytanie aktualizuje zawartość lastname dla każdego wpisu w tabeli customers . Stara i nowa zawartość tabeli bazy danych są przedstawione odpowiednio po lewej i prawej stronie:
Uwaga: Konieczne jest użycie klauzul warunkowych (GDZIE) w zapytaniu UPDATE. Jeśli nie użyjesz żadnej klauzuli warunkowej, wszystkie rekordy atrybutu tej tabeli zostaną zaktualizowane. W powyższym przykładzie nowa wartość (Smith) nazwiska w tabeli klientów ustawiona na wszystkie wiersze.
Zaktualizuj za pomocą Połącz wzór
Rozważmy stołowego produkcja nazwie questions_mysql i stół iwtQuestions (importowany stół) reprezentujących ostatnią partię importowanych danych CSV z pomocą LOAD DATA INFILE . Stół roboczy jest obcinany przed importem, dane są importowane, a proces ten nie jest tutaj pokazywany.
Zaktualizuj nasze dane produkcyjne, używając sprzężenia z naszymi importowanymi danymi stołu roboczego.
UPDATE questions_mysql q -- our real table for production
join iwtQuestions i -- imported worktable
ON i.qId = q.qId
SET q.closeVotes = i.closeVotes,
q.votes = i.votes,
q.answers = i.answers,
q.views = i.views;
Aliasy q i są używane do skracania odwołań do tabeli. Ułatwia to rozwój i czytelność.
qId , klucz podstawowy, reprezentuje identyfikator pytania qId . Zaktualizowano cztery kolumny w celu dopasowania wierszy z połączenia.
AKTUALIZACJA z ORDER BY i LIMIT
Jeśli w instrukcji SQL aktualizacji podano klauzulę ORDER BY , wiersze są aktualizowane w określonej kolejności.
Jeśli w instrukcji SQL podano klauzulę LIMIT , ogranicza to liczbę wierszy, które można zaktualizować. Nie ma limitu, jeśli nie określono klauzuli LIMIT .
ORDER BY i LIMIT nie mogą być używane do aktualizacji wielu tabel.
Składnia UPDATE MySQL z ORDER BY i LIMIT to:
UPDATE [ LOW_PRIORITY ] [ IGNORE ]
tableName
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT row_count];
---> Example
UPDATE employees SET isConfirmed=1 ORDER BY joiningDate LIMIT 10
W powyższym przykładzie 10 wierszy zostanie zaktualizowanych zgodnie z kolejnością pracowników joiningDate .
AKTUALIZACJA Wiele tabel
W UPDATE wielu tabel aktualizuje wiersze w każdej określonej tabeli, która spełnia warunki. Każdy pasujący wiersz jest aktualizowany jeden raz, nawet jeśli wielokrotnie spełnia warunki.
W wielu tabelach UPDATE , ORDER BY i LIMIT nie mogą być używane.
Składnia UPDATE dla wielu tabel to:
UPDATE [LOW_PRIORITY] [IGNORE]
table1, table2, ...
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions]
Weźmy na przykład dwie tabele, products i salesOrders . W przypadku zmniejszamy ilość konkretnego produktu ze złożonego już zamówienia sprzedaży. Następnie musimy również zwiększyć tę ilość w tabeli zapasów w kolumnie products . Można to zrobić za pomocą pojedynczej instrukcji aktualizacji SQL, jak poniżej.
UPDATE products, salesOrders
SET salesOrders.Quantity = salesOrders.Quantity - 5,
products.availableStock = products.availableStock + 5
WHERE products.productId = salesOrders.productId
AND salesOrders.orderId = 100 AND salesOrders.productId = 20;
W powyższym przykładzie ilość „5” zostanie zmniejszona z tabeli salesOrders a to samo zostanie zwiększone w tabeli products zgodnie z warunkami WHERE .
Zbiorcza aktualizacja
Podczas aktualizowania wielu wierszy o różnych wartościach znacznie szybciej jest użyć aktualizacji zbiorczej.
UPDATE people
SET name =
(CASE id WHEN 1 THEN 'Karl'
WHEN 2 THEN 'Tom'
WHEN 3 THEN 'Mary'
END)
WHERE id IN (1,2,3);
Dzięki aktualizacji zbiorczej na serwer można wysłać tylko jedno zapytanie zamiast jednego zapytania dla każdego wiersza do aktualizacji. Sprawy powinny zawierać wszystkie możliwe parametry sprawdzone w klauzuli WHERE .

