SQL - Cursors: Ein Anfängerleitfaden

Hallo da draußen, zukünftige Datenbank-Zauberer! ? Heute machen wir uns auf eine aufregende Reise in die Welt der SQL-Cursors. Keine Sorge, wenn Sie noch nie von ihnen gehört haben – bis zum Ende dieses Tutorials werden Sie durch Ihre Daten wie ein Profi navigieren! Lassen Sie uns eintauchen!

SQL - Cursors

Cursors in SQL

Stellen Sie sich vor, Sie sind an einem Buffet (mmm, Essen ?). Sie haben einen Teller (Ihr Cursor), und Sie bewegen sich entlang der Theke, nehmen immer ein einzelnes Gericht. Das ist im Grunde, was ein Cursor in SQL macht – er ermöglicht es Ihnen, Zeilen aus einem Ergebnissebnis einzeln zu verarbeiten, anstatt alles auf einmal.

In technischeren Begriffen ist ein Cursor ein Datenbankobjekt, das es Ihnen ermöglicht, durch die Zeilen eines Ergebnissebnisses zu navigieren, eine Zeile nach der anderen. Es ist wie ein Zeiger, der verfolgt, wo Sie sich im Ergebnissebnis befinden.

Warum Cursor verwenden?

Vielleicht fragen Sie sich, "Warum kann ich nicht einfach eine SELECT-Anweisung verwenden?" Nun, manchmal müssen Sie auf jede Zeile einzeln operationen durchführen, oder Sie müssen ein großes Ergebnissebnis in kleineren Teilen verarbeiten, um Speicher zu sparen. Das ist, wo Cursor praktisch werden!

Eigenschaften von Cursor

Cursor haben mehrere Eigenschaften, die ihr Verhalten definieren. Sehen wir uns die wichtigsten an:

Eigenschaft Beschreibung
Scrollbarkeit Bestimmt, ob der Cursor nur vorwärts oder sowohl vorwärts als auch rückwärts bewegt werden kann
Sensitivität Definiert, ob der Cursor Änderungen an den zugrunde liegenden Daten widerspiegelt
Aktualisierbarkeit Spezifiziert, ob der Cursor zum Aktualisieren oder Löschen von Zeilen verwendet werden kann
Transaktionsverhalten Bestimmt, ob der Cursor von Transaktionsgrenzen betroffen ist

Keine Sorge, wenn diese derzeit etwas abstrakt erscheinen. Wir werden sie gleich in Aktion sehen!

Lebenszyklus des Cursors

Das Leben eines Cursors ist wie ein kleines Abenteuer mit vier Hauptphasen:

  1. Deklaration
  2. Öffnen
  3. Abrufen
  4. Schließen

Lassen Sie uns diese Phasen mit einigen Codebeispielen erkunden.

Cursor-Deklarationsanweisung

Zuerst müssen wir unseren Cursor deklarieren. Das ist so, als würde man SQL sagen: "Hey, ich möchte einen Cursor erstellen, der mit dieser spezifischen Abfrage arbeitet."

So deklarieren Sie einen Cursor:

DECLARE employee_cursor CURSOR FOR
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 10;

In diesem Beispiel deklarieren wir einen Cursor namens employee_cursor, der Mitarbeiterdetails aus der employees-Tabelle für Abteilung 10 abruft.

Cursor-Öffnungsanweisung

Sobald wir unseren Cursor deklariert haben, müssen wir ihn öffnen. Das ist so, als würden wir sagen: "Okay, lasst uns unsere Reise durch das Ergebnissebnis beginnen!"

OPEN employee_cursor;

Diese Anweisung führt die mit dem Cursor verbundene SELECT-Abfrage aus und bereitet ihn für das Abrufen vor.

Cursor-Abrufanweisung

Nun kommt der spaßige Teil – das Abrufen von Daten! Dies ist der Moment, in dem wir actually Zeilen einzeln abrufen.

DECLARE @employee_id INT, @first_name VARCHAR(50), @last_name VARCHAR(50);

FETCH NEXT FROM employee_cursor
INTO @employee_id, @first_name, @last_name;

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Mitarbeiter: ' + @first_name + ' ' + @last_name;

FETCH NEXT FROM employee_cursor
INTO @employee_id, @first_name, @last_name;
END

Lassen Sie uns das durcharbeiten:

  1. Wir deklarieren Variablen, um die abgerufenen Daten zu speichern.
  2. Wir verwenden FETCH NEXT, um die nächste Zeile vom Cursor abzurufen.
  3. Wir verwenden eine WHILE-Schleife, um alle Zeilen zu verarbeiten. @@FETCH_STATUS = 0 bedeutet, dass der Abruf erfolgreich war.
  4. Innerhalb der Schleife drucken wir den Namen des Mitarbeiters und rufen die nächste Zeile ab.

Das ist wie das Abwärtsgehen an der Buffettheke, immer ein einzelnes Gericht aufzunehmen und etwas damit zu tun (in diesem Fall, es auszudrucken).

Cursor-Schließanweisung

Wenn wir mit unserem Cursor fertig sind, ist es höflich, ihn zu schließen. Das gibt Ressourcen frei und ist generally eine gute Praxis.

CLOSE employee_cursor;
DEALLOCATE employee_cursor;

Wir schließen den Cursor mit CLOSE und dann DEALLOCATE, um ihn vollständig aus dem Speicher zu entfernen.

Und daar haben Sie es! Sie haben gerade den gesamten Lebenszyklus eines Cursors durchlaufen. ?

Ein Wort der Warnung

Obwohl Cursor mächtig sind, können sie bei falscher Verwendung ressourcenintensiv sein. Es ist wie das Entleeren eines Schwimmbads mit einem Löffel – es funktioniert, aber es gibt möglicherweise bessere Werkzeuge für den Job. Überlegen Sie immer set-basierte Operationen zuerst und verwenden Sie Cursor nur, wenn Sie wirklich zeilenweises Processing benötigen.

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben gerade Ihre ersten Schritte in die Welt der SQL-Cursors gemacht. Erinnern Sie sich daran, dass Übung den Meister macht,also haben Sie keine Angst, mit verschiedenen Abfragen und Cursor-Eigenschaften zu experimentieren.

Während Sie Ihre SQL-Reise fortsetzen, werden Sie viele aufregende Funktionen entdecken. Aber für jetzt, gratulieren Sie sich selbst – Sie sind kein Cursor-Newbie mehr! ??

Frohes Coden und möge Ihre Abfragen stets die erwarteten Ergebnisse liefern! ?

Credits: Image by storyset