Zurück zur Artikelliste Artikel
7 Leseminuten

Wie man nur die ersten 10 Zeilen in SQL aktualisiert

Datenbanken in der realen Welt erfordern kontinuierliche Aktualisierungen. Oft müssen Sie bestimmte Datensätze aktualisieren; vielleicht möchten Sie sogar nur die erste Zeile oder die ersten 10, 100 oder 1000 Zeilen aktualisieren. Im Folgenden erfahren Sie, wie Sie Zeilen für eine bestimmte Menge von oben nach unten in SQL aktualisieren können.

Was ist ein SQL UPDATE?

In SQL werden mit einer UPDATE-Anweisung bestehende Datensätze einer Tabelle geändert. Sie können entweder ganze Spalten aktualisieren oder mit einer WHERE-Anweisung gefilterte Zeilen aktualisieren. Wie wir in diesem Artikel sehen werden, können Sie auch Zeilen für eine bestimmte Menge vom Anfang Ihrer Tabelle aus aktualisieren.

Datenbanken auf dem neuesten Stand zu halten, ist eine der wichtigsten Aufgaben von Dateningenieuren, Datenadministratoren und allen, die mit Datenbanken arbeiten. In diesem ausführlichen Leitfaden finden Sie Erklärungen und anfängerfreundliche Beispiele für SQL UPDATE.

Um alle Grundlagen der Änderung von Datenbanken zu erlernen, besuchen Sie unseren interaktiven Kurs Wie man Daten in einer Datenbank in SQL ändert. In 52 interaktiven SQL-Übungen lernen Sie, wie Sie mit der Datenmanipulationssprache SQL (DML) Daten abrufen, speichern, ändern, löschen, einfügen und aktualisieren können. Wenn Sie mit SQL noch nicht vertraut sind, empfehle ich Ihnen den SQL für Anfänger interaktiven Kurs zu besuchen, bevor Sie sich mit der Datenmanipulationssprache beschäftigen.

Wie man nur eine Zeile in SQL aktualisiert

Der beste Weg, um zu verstehen, wie SQL UPDATE funktioniert, ist, es in Aktion zu sehen. Lassen Sie uns also mit einem Beispiel beginnen.

Wir haben eine Tabelle mit unseren Lieferanten, die die Firmen-ID, den Firmennamen, den Namen der Kontaktperson und das Volumen der gelieferten Produkte und Dienstleistungen im Jahr 2021 (in USD) enthält.

suppliers
idcompany_namecontact_namevolume_2021
1Dunder MifflinMichael Scott456388.40
2Eco FocusRobert California203459.30
3Max EnergyRoy Anderson1403958.80
4Apples and OrangesTodd Packer2303479.50
5Top SecurityJo Bennett105000.10
6InnovatorsAndy Bernard567980.00
7Big Data CorpOscar Martinez345678.90
8Miami and partnersStanley Hudson1205978.80
9Lots of FunPhyllis Vance490345.40
10Repair IncDarryl Philbin53673.30
11Best AccountantsKevin Malone534512.20
12Time & MoneyMeredith Palmer78905.20
13Two BossesJim Halpert250350.10
14Epic AdventureRyan Howard87078.00
15Schrute MarketingDwight Schrute3450250.50

Halten wir es einfach und beginnen mit der Aktualisierung nur einer Zeile der Tabelle. Nehmen wir an, wir haben gerade erfahren, dass die Kontaktperson für "Lots of Fun" von Phyllis Vance zu Pam Beesly gewechselt hat. Wir möchten den Kontaktnamen für das Unternehmen mit der ID 9 aktualisieren. Hier ist eine Abfrage, die wir verwenden können:

UPDATE suppliers
SET contact_name = 'Pam Beesly'
WHERE id = 9;

Die Syntax ist ganz einfach. Nach dem Schlüsselwort UPDATE geben wir den Namen der Tabelle an, die wir aktualisieren wollen. Dann geben wir mit dem Schlüsselwort SET an, welche Spalte (d. h. contact_name) mit welchem Wert (d. h. Pam Beesley) aktualisiert werden soll. Schließlich legen wir mit dem Schlüsselwort WHERE fest, dass nur der Datensatz mit der Unternehmens-ID 9 aktualisiert werden soll.

Hier sehen Sie die aktualisierte Tabelle. Wie Sie sehen, haben wir jetzt eine neue Kontaktperson für "Lots of Fun":

idcompany_namecontact_namevolume_2021
1Dunder MifflinMichael Scott456388.40
2Eco FocusRobert California203459.30
3Max EnergyRoy Anderson1403958.80
4Apples and OrangesTodd Packer2303479.50
5Top SecurityJo Bennett105000.10
6InnovatorsAndy Bernard567980.00
7Big Data CorpOscar Martinez345678.90
8Miami and partnersStanley Hudson1205978.80
9Lots of FunPam Beesley490345.40
10Repair IncDarryl Philbin53673.30
11Best AccountantsKevin Malone534512.20
12Time & MoneyMeredith Palmer78905.20
13Two BossesJim Halpert250350.10
14Epic AdventureRyan Howard87078.00
15Schrute MarketingDwight Schrute3450250.50

Gehen wir nun zu einem komplexeren Fall über, in dem wir mehrere Zeilen aktualisieren.

Wie man eine bestimmte Anzahl von Zeilen aktualisiert

Es gibt viele verschiedene Szenarien, in denen Sie mehrere Zeilen aktualisieren müssen. In den meisten Fällen wählen Sie die zu aktualisierenden Zeilen mithilfe von Filterbedingungen in einer WHERE -Anweisung aus.

Hier konzentrieren wir uns jedoch auf den Fall, in dem Sie Zeilen für eine bestimmte Menge von oben nach unten aktualisieren möchten, z. B. die ersten 10 Datensätze.

Wir fahren mit unserem ersten Beispiel fort, allerdings mit einigen Aktualisierungen. Nehmen wir an, wir wollen eine weitere Spalte, top_supplier, zu unserer suppliers Tabelle hinzufügen. In dieser Spalte wollen wir sehen:

  • "Ja", wenn der Lieferant zu den ersten 10 nach dem Betrag gehört, den wir dem Unternehmen im letzten Jahr gezahlt haben, oder
  • "Nein" für alle anderen Lieferanten.

Ich schlage vor, dies in drei Schritten zu tun:

  1. Fügen Sie eine neue Spalte top_supplier hinzu.
  2. Setzen Sie den Wert dieser Spalte für alle Datensätze auf "Nein".
  3. Aktualisieren Sie den Wert dieser Spalte für die 10 wichtigsten Lieferanten auf "Ja".

So können wir die ersten beiden Schritte durchführen:

ALTER TABLE suppliers
ADD top_supplier varchar(32);

UPDATE suppliers
SET top_supplier = 'No';

Und hier ist die resultierende Tabelle:

<
suppliers
idcompany_namecontact_namevolume_2021top_supplier
1Dunder MifflinMichael Scott456388.40No
2Eco FocusRobert California203459.30No
3Max EnergyRoy Anderson1403958.80No
4Apples and OrangesTodd Packer2303479.50No
5Top SecurityJo Bennett105000.10No
6InnovatorsAndy Bernard567980.00No
7Big Data CorpOscar Martinez345678.90No
8Miami and partnersStanley Hudson1205978.80No
9Lots of FunPhyllis Vance490345.40No
10Repair IncDarryl Philbin53673.30No
11Best AccountantsKevin Malone534512.20No
12Time & MoneyMeredith Palmer78905.20No
13Two BossesJim Halpert250350.10No
14Epic AdventureRyan Howard87078.00No
15Schrute MarketingDwight Schrute3450250.50No

Jetzt kommt der interessanteste Teil: die Aktualisierung der Spalte top_supplier für die ersten 10 Zeilen, nachdem wir die Tabelle nach der Spalte volume_2021 geordnet haben. Die Syntax der Abfrage für diesen dritten Schritt hängt vom Datenbankmanagementsystem ab (z. B. MySQL, SQL Server, Oracle oder PostgreSQL). Im Folgenden zeige ich Ihnen funktionierende Abfragen für einige der gängigsten Datenbankmanagementsysteme.

MySQL

In MySQL können wir das Schlüsselwort LIMIT verwenden, das die Anzahl der auszugebenden oder zu aktualisierenden Datensätze begrenzt:

UPDATE suppliers
SET top_supplier = 'Yes'
ORDER BY volume_2021 DESC
LIMIT 10;

Mit dieser Abfrage aktualisieren wir die suppliers Tabelle, indem wir den Wert der Spalte top_supplier auf "Ja" setzen. Diese Aktualisierungen sollen jedoch nur für die 10 wichtigsten Lieferanten gelten. Also ordnen wir die Tabelle nach der Spalte volume_2021 (in absteigender Reihenfolge) und beschränken die Anzahl der zu aktualisierenden Zeilen auf 10. Wenn Sie Ihr Wissen über ORDER BY auffrischen möchten, lesen Sie diesen ausführlichen Artikel.

Hier ist die aktualisierte Tabelle, geordnet nach volume_2021. Wie Sie sehen, haben nur die 10 wichtigsten Lieferanten "Ja" in der letzten Spalte. Verwenden Sie dieselbe Syntax, um nur die erste Zeile oder die ersten 5, 20, 100 oder eine beliebige Anzahl von Zeilen zu aktualisieren, indem Sie einfach die Zahl nach dem Schlüsselwort LIMIT ändern.

idcompany_namecontact_namevolume_2021top_supplier
15Schrute MarketingDwight Schrute3450250.50Yes
4Apples and OrangesTodd Packer2303479.50Yes
3Max EnergyRoy Anderson1403958.80Yes
8Miami and partnersStanley Hudson1205978.80Yes
6InnovatorsAndy Bernard567980.00Yes
11Best AccountantsKevin Malone534512.20Yes
9Lots of FunPhyllis Vance490345.40Yes
1Dunder MifflinMichael Scott456388.40Yes
7Big Data CorpOscar Martinez345678.90Yes
13Two BossesJim Halpert250350.10Yes
2Eco FocusRobert California203459.30No
5Top SecurityJo Bennett105000.10No
14Epic AdventureRyan Howard87078.00No
12Time & MoneyMeredith Palmer78905.20No
10Repair IncDarryl Philbin53673.30No

SQL-Server

Im Gegensatz zu MySQL gibt es in SQL Server das Schlüsselwort LIMIT nicht. Stattdessen gibt es TOP. Verwenden Sie dieses Schlüsselwort in einer Unterabfrage, um die IDs der 10 wichtigsten Lieferanten zu erhalten:

UPDATE suppliers
SET top_supplier = 'Yes'
WHERE id IN(
        SELECT TOP (10) id
        FROM suppliers
        ORDER BY volume_2021 DESC);

Dann aktualisieren wir die Spalte top_supplier für die Datensätze, deren entsprechende IDs in der durch die Unterabfrage erstellten Liste gefunden werden.

PostgreSQL und Oracle

PostgreSQL und Oracle schließlich bieten eine andere Möglichkeit, die Anzahl der zu aktualisierenden Zeilen zu begrenzen. Ähnlich wie bei der vorherigen Abfrage verwenden wir eine Unterabfrage. Mit dieser Unterabfrage ordnen wir die suppliers Tabelle nach dem gezahlten Betrag und beschränken dann die Ausgabe auf 10 Datensätze, indem wir die Schlüsselwörter FETCH FIRST 10 ROWS ONLY verwenden:

UPDATE suppliers
SET top_supplier = 'Yes'
WHERE id IN(
        SELECT id
        FROM suppliers
        ORDER BY volume_2021 DESC
        FETCH FIRST 10 ROWS ONLY);

Wie Sie sehen, aktualisieren wir nur die entsprechenden Datensätze in der Hauptabfrage.

Weitere Beispiele für Unterabfragen für die Anweisung UPDATE finden Sie in diesem ausführlichen Artikel. Sehen Sie auch weitere Beispiele mit INSERT, UPDATE und DELETE hier.

Zeit zum Üben mit Online-SQL-Kursen!

SQL ist ein leistungsfähiges Analysewerkzeug, das in der Regel Excel an Effektivität und Effizienz übertrifft. Es ist auch eine der modernen Programmiersprachen, die sich durchsetzen werden. SQL ist nicht schwer zu erlernen, aber oft gibt es mehrere Möglichkeiten, dieselbe Aufgabe zu erledigen. Außerdem gibt es gewisse Syntaxunterschiede zwischen den verschiedenen Datenbankmanagementsystemen.

Die effektivste Methode, um ein umfassendes Verständnis von SQL zu erlangen, ist die Teilnahme an SQL-Onlinekursen. Wenn Sie keine Erfahrung mit SQL haben, empfehle ich Ihnen, mit dem SQL für Anfänger Kurs zu beginnen. Er enthält 129 interaktive SQL-Übungen, die alle Grundlagen abdecken, die Sie zum Abrufen von Daten aus einer Datenbank benötigen.

Wenn Sie auch wissen wollen, wie Sie Ihre Datenbank ändern können, sollten Sie sich den Kurs Wie man Daten in einer Datenbank in SQL ändert. Dieser interaktive Kurs deckt die Grundlagen der Datenmanipulationssprache ab, damit Sie Ihre Datenbank bei Bedarf erweitern und aktualisieren können.

Wenn Sie bereit sind, über einzelne Kurse hinauszugehen und sich ein umfassendes Wissen über die Möglichkeiten von SQL anzueignen, besuchen Sie unsere Lernkurse:

  • SQL von A bis Z sich mit grundlegenden und fortgeschrittenen SQL-Konzepten wie Fensterfunktionen, rekursiven Abfragen und GROUP BY vertraut zu machen
  • Erstellen von Datenbankstrukturen, um zu lernen, wie man Tabellen, Ansichten und Indizes in gängigen relationalen Datenbankmanagementsystemen wie MySQL, SQL Server, Oracle und PostgreSQL erstellt und verwaltet.

Vielen Dank fürs Lesen und viel Spaß beim Lernen!