Simon Riedl: mysql: Eintrag ändern

Hallo!
Ich hätte mal zwei Fragen zu mysql:
Ich möchte einen vorhandenen Datensatz ändern.
Natürlich könnte ich den Eintrag erst löschen und dann wieder einen neuen hinzufügen - das möchte ich aber nicht.
Ich bin leider nicht fündig geworden in meinen php-Buch, vielleicht kann mir jemand die Syntax sagen, die der entsprechende Befehl hat?

Und die zweite Frage:
Meine Tabelle hat eine id-Spalte mit auto_increment und primary key. Wenn ich aus dieser Tabelle einen Eintrag lösche, ist dann sozusagen eine Lücke in der Nummernfolge? Und bleibt diese Lücke auch, wenn ich danach einen neuen Eintrag hinzufüge, oder wird diese Nummernlücke dann ausgefüllt?

Danke für eure Hilfe.
Simon

  1. Hallo Simon,

    Ich möchte einen vorhandenen Datensatz ändern.
    Natürlich könnte ich den Eintrag erst löschen und dann wieder einen neuen hinzufügen - das möchte ich aber nicht.

    benutze:
    UPDATE tablle
    SET spalte1 = wert1
      , spalte2 = wert2
      , ...
    WHERE  id = ...

    Meine Tabelle hat eine id-Spalte mit auto_increment und primary key. Wenn ich aus dieser Tabelle einen Eintrag lösche, ist dann sozusagen eine Lücke in der Nummernfolge? Und bleibt diese Lücke auch, wenn ich danach einen neuen Eintrag hinzufüge, oder wird diese Nummernlücke dann ausgefüllt?

    die Luecke bleibt, es sei denn, du fuellst sie selbst.

    Viele Gruesse
     Kess

    1. benutze:
      UPDATE tablle
      SET spalte1 = wert1
        , spalte2 = wert2
        , ...
      WHERE  id = ...

      Danke!

      Simon

  2. Hallo!

    Und die zweite Frage:

    Meine Tabelle hat eine id-Spalte mit auto_increment und primary key. Wenn ich aus dieser Tabelle einen Eintrag lösche, ist dann sozusagen eine Lücke in der Nummernfolge?

    Ja! Aber das ist eigentlich egal! Du hast den Datensatz, z.B. mit der id=10 gelöscht. Du hast diesen Datensatz also nicht mehr benötigt. Die id's Deiner Tabellen sollten Dir eigentlich egal sein. mySQL kümmert sich um die richtige Vergabe, was Du mySQL mit AUTO_INCREMENT ja gesagt hast.

    Löse Dich von diesem Ordnungsprinzip, das keine Zahl/ID fehlen darf. Deine Scripte sollten wohl so geschrieben sein, daß es egal ist welche id's in der Tabelle vorkommen.

    Und bleibt diese Lücke auch, wenn ich danach einen neuen Eintrag hinzufüge, oder wird diese Nummernlücke dann ausgefüllt?

    IMHO Nein. mySQL kümmert sich um das Füllen der Lücken. Nicht mit der selben bzw. gelöschten id, aber mit einer neuen.

    SELECT * FROM name;

    id name

    1  André

    2  Laugks

    3  Simone

    4  Riedl

    DELETE FROM name WHERE id=2;

    SELECT * FROM name;

    1  André

    3  Simone

    4  Riedl

    INSERT INTO namen (name) VALUES ('Kess');

    SELECT * FROM name;

    1  André

    5  Kess

    3  Simone

    4  Riedl

    So sieht es auf der Shell aus. Die id's sind nicht in der Reihenfolge, aber das kannst Du ja mit SQL-Sortieroptionen lösen.

    MfG, André Laugks

    1. Ja! Aber das ist eigentlich egal! Du hast den Datensatz, z.B. mit der id=10 gelöscht. Du hast diesen Datensatz also nicht mehr benötigt. Die id's Deiner Tabellen sollten Dir eigentlich egal sein. mySQL kümmert sich um die richtige Vergabe, was Du mySQL mit AUTO_INCREMENT ja gesagt hast.

      IMHO Nein. mySQL kümmert sich um das Füllen der Lücken. Nicht mit der selben bzw. gelöschten id, aber mit einer neuen.

      Danke! Dann ist es ja genau richtig. :D