Accounts.sql Frage

  • Accounts.sql Frage

    Hallo Leute,
    Ich bin dabei immer mehr zu MySQL zu gehen wieso weshalb warum ist klar, meine Frage ist aber ich habe die Accounts.sql und habe da stehen:

    [pwn]SET FOREIGN_KEY_CHECKS=0;

    -- ----------------------------
    -- Table structure for `accounts`
    -- ----------------------------
    DROP TABLE IF EXISTS `accounts`;
    CREATE TABLE `accounts` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `Name` varchar(24) NOT NULL,
    `Passwort` varchar(128) NOT NULL,
    `Level` int(11) NOT NULL DEFAULT '1',
    `Geld` int(11) NOT NULL DEFAULT '12000',
    `Kills` int(11) NOT NULL DEFAULT '0',
    `Tode` int(11) NOT NULL DEFAULT '0',
    `Health` float NOT NULL DEFAULT '100',
    `Adminlevel` int(5) NOT NULL,
    `Fraktion` int(3) NOT NULL,
    `Erfahrungspunkte` int(6) NOT NULL '5',
    `Ban` int(2) NOT NULL,
    `Rank` int(6) NOT NULL,
    `Leader` int(2) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=223 DEFAULT CHARSET=latin1;[/pwn]

    Frage ist nun was bedeutet:
    `Level` int(11) NOT NULL DEFAULT '1', z.b also wofür ist die 11 die eins weis ich aber wofür ist die 11?.oder wieso steht bei Level NOT NULL DEFAULT und bei Leader NOT NULL was bedeutet es genau wenn mir jemand dabei hilft richtig nett und würde mich sehr weiter helfen.



    Mit freundlichen Grüßen
    T_Pain
    1. siehe zwei Beiträge später
    2. NOT NULL heißt, dass NULL nicht möglich ist, der standertwert bei der Erstellung eines neuen Eintrag in der Tabelle von Level ist dann 1 (wie angegeben).
    3. NULL ist ein unbekannter Wert, vergleichbar mit 0.
    4. Es wurde bei der Erstellung der Datenbank bei manchen Feldern ein Standertwert, bei den anderen widerrum nicht gesetzt.
    #edit: Punkt 4 + edit hinzugefügt *grins*
    #edit²: Punkt 1 bearbeitet (Verweis auf den unteren Beitrag)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Douq ()

  • Douq schrieb:

    1. In den Klammern ist die Länge der jeweiligen Spalten angegeben.
    2. NOT NULL heißt, dass NULL nicht möglich ist, der standertwert bei der Erstellung eines neuen Eintrag in der Tabelle von Level ist dann 1 (wie angegeben).
    3. NULL ist ein unbekannter Wert, vergleichbar mit 0.
    4. Es wurde bei der Erstellung der Datenbank bei manchen Feldern ein Standertwert, bei den anderen widerrum nicht gesetzt.
    #edit: Punkt 4 + edit hinzugefügt *grins*
    ah okay aber wie meinst du es genau bei 1: welche Länge?
  • Douq schrieb:

    Tut mir leid, hatte nicht aufmerksam gelesen - Bei dem handelt es sich, sofern der Datentyp ein INT ist, um eine optinale Angabe die die Darstellung in der Tabelle lediglich beeinflusst.
    Meinst du z.b das `Adminlevel` int(5) NOT NULL, es nicht höher als 5 geht? und bei `id` int(11) NOT NULL AUTO_INCREMENT, die ID nicht höher als 11 geht? wenn ich es falsch verstehe bitte nochmal erklären, danke!

    MFG
  • DIe Zahl hinter dem INT hat nur mit der Darstellung zu tun. Der Datentyp INT kann nur zahlen von -2147483648 bis 2147483647 halten. Die Zahl dahinter in Klammern bestimmt die Anzeigebreite. Um das zu erklären mal ein kleines Beispiel:

    Folgendes ist gegeben:

    SQL-Abfrage

    1. `Level` int(11) NOT NULL DEFAULT '1',
    Speicherst du nun z.b die Zahl 5, wird die Zahl in der Tabelle so dargestellt (man beachte die Leerzeichen:

    Quellcode

    1. 5

    Optional könnte man hier noch das Erweiterungsattribut ZEROFILL nutzen, das würde dann anstelle der Leerzeichen nullen einfügen, was dann so aussieht:

    Quellcode

    1. 00000000005


    Bei Float oder Double werten ist das aber wiederrum etwas anderes. Dort können (nicht müssen!) 2 Zahlen in die Klammer. Die erste besagt die Stellen die Insgesamt angezeigt werden, und die zweite die Stellen nach dem Komma.

    Bei varchar gibt die Zahl nach dem Komma die länge des Strings an, also wie bei PAWN. So kann eine Spalte die mit varchar(128) deklariert wurde, nur einen String mit Maximal 128 zeichen aufnehmen.

    Für mehr Informationen dazu rate ich dir, das hier mal durchzulesen: Numerische Datentypen & String-Typen.