dummy: Apache Datenbank

Guten Tag liebe Programmierer/Designer,

ich bin in sachen Datenbanken ein ziemlicher "newbie".
Ich bin zwar in der lage mit PHP etwas in die DB zuschreiben und auszulesen aber eines verstehe ich nicht ganz so recht.

Was heißt wenn man eine neue Tabelle erstellt:

  • Kollation ?

Man kann das ja bei PHPMyAdmin sehr viel auswählen aber was hat das zu bedeuten?

Und meine 2 frage:
was hat das Attribute mit den einstellungen:
-Unsigned
-Unsigned Zerofill
-On Update Current Timestamp

zu bedeuten?

Ich hoffe mir bei euch Hilfreiche Antworten einzuholen und bedanke mich im vorraus!

  1. Hello,

    mal eine Frage: Wie kommst du auf "Apache Datenbank"? Na ja, egal, PHPMyAdmin, d.h. wir reden über MySQL. Das Handbuch dazu findest du unter http://www.mysql.com, da stehen auch die Begriffe drin, nach denen du hier fragst.

    • Kollation ?

    Das dürfte der verwendete Zeichensatz sein.

    Und meine 2 frage:
    was hat das Attribute mit den einstellungen:
    -Unsigned

    Soll die Zahl mit Vorzeichen oder ohne Vorzeichen gespeichert werden (Größe des Wertebereichs bleibt, verschiebt sich aber bei Vorzeichen zu Richtung negative Zahlen)

    -Unsigned Zerofill

    Fülle die eingegebene Zahl nach vorne mit 0 auf, bis eine bestimmte Zahl von Stellen erreicht ist.

    -On Update Current Timestamp

    Ich nehme an "wenn ein Satz eingefügt wird, dann schreibe den aktuellen Zeitstempel rein" - also sowas wie ein automatischer last-modified-Stempel.

    MfG
    Rouven

    --
    -------------------
    Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
    1. Ich grüsse den Cosmos,

      -On Update Current Timestamp
      Ich nehme an "wenn ein Satz eingefügt wird, dann schreibe den aktuellen Zeitstempel rein" - also sowas wie ein automatischer last-modified-Stempel.

      Ich lese das eher als "Bei jeder Änderung den Zeitstempel aktualisieren", und wenn ich es richtig im Kopf hab, funktioniert das bei mir auch so unter MySQL 5 ;)

      Möge das "Self" mit euch sein

      --
      Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
  2. Moin!

    Was heißt wenn man eine neue Tabelle erstellt:

    • Kollation ?

    Das ist die Sortierreihenfolge des Alphabets. Und jede Kollation definiert ihrerseits auch eindeutig die nutzbare Zeichencodierung.

    Soll heißen: Wenn du ISO-8859-1 (also Latin 1) codieren willst, hast du für die deutsche Sprache zwei Sortierreihenfolgen zur Auswahl:
    1. Die Umlaute äöü werden sortiert wie aou.
    2. Die Umlaute werden sortiert wie ae, oe, ue.

    Im Fall 1 wäre ein "Müller" identisch wie "Muller" einsortiert, im Fall 2 wäre es wie "Mueller" einsortiert.

    Das gleiche gilt im Prinzip gilt auch bei den utf8-Kollationen. Die Zeichencodierung ist hierbei dann immer UTF-8, und die Sortierung (für deutsche Sprache), die relevant ist, wäre utf8_general oder utf8_unicode. Unterschied zwischen beiden ist, dass einmal das "ß" als "s", das anderemal als "ss" sortiert wird.

    Und meine 2 frage:
    was hat das Attribute mit den einstellungen:
    -Unsigned
    -Unsigned Zerofill

    Zahlenfelder sind standardmäßig mit Vorzeichen versehen, die 0 liegt dann in der Mitte des erlaubten Zahlenbereichs (Tinyint geht z.B. von -128 bis +127). Unsigned wird das Vorzeichen weggelassen, dadurch erweitert sich der Zahlenbereich im positiven, weil die 0 jetzt der kleinste Wert ist (unsigned Tinyint geht von 0 bis 255). Für Anwendungen, die keine negativen Zahlen benötigen, z.B. Datensatz-IDs, ist unsigned eine simple Methode, den nutzbaren Wertebereich zu verdoppeln.

    Zerofill füllt mit führenden Nullen auf.

    -On Update Current Timestamp

    Das ist nur im Zusammenhang mit TIMESTAMP-Feldern relevant. TIMESTAMP-Felder haben unter Umständen die magische Eigenschaft, bei Veränderung irgendeines Feldes in ihrem Datensatz den Zeitpunkt dieser Änderung zu speichern, auch ohne dass man das explizit im SQL-Statement einfügt.

    Ich habe allerdings mit MySQL 4.1 damit mal etwas experimentiert und rate dir, dieses Feature als Anfänger erstmal nicht zu nutzen. Lege, wenn du sowas machen willst, ein DATETIME-Feld an und fülle es explizit mit dem Funktionswert NOW(), wenn dorthinein eine aktuelle Zeit geschrieben werden soll.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."