Absolute n00b Frage...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Absolute n00b Frage...

    Also,das ist wohl wirklich die newbihafteste Frage,die ich jemals gestellt habe(und das von jemanden,der ein 1a Gästebuch programmiert hat ):
    Was ist der Unterschied zwischen int(1) und int(15) (zum Beispiel)?Ich kann mit int(1) genausoviele Zahlen wie mit int(15) speichern(bei (var)char gibt das ja immer an,wieviel Zeichen man benutzen kann).Also ich kann bei beidem Zahlen von -2147483648 - 2147483648 einsetzen.Genau wie ich bei Tinyint(1) und tinyint(15) Zahlen von -127 - 127 eintragen kann.Auch in meinem Gästebuch,habe ich mal alle int's auf int(1) gesetzt und es keinen Unterschied gebracht.Also,klärt einen Newbie mal auf...
    Zuletzt geändert von V 9 1 9 V; 29.07.2002, 09:23.

  • #2
    http://www.mysql.com/doc/C/o/Column_types.html

    Kommentar


    • #3
      Warum linken mich alle dahin?! Das hab ich selbst auf der Festplatte... Wenn ich was frage,dann frage ich nicht ohne mich vorher zu erkundigen oder es vorher probiert zu haben...
      Naja,egal,ich verstehs immernoch nicht und das nicht weil es englisch ist... Ich habs ja selbst getestet und kam zu keinem Unterschied... Jedenfalls merkte ich keinen... :P

      Kommentar


      • #4
        dann bekommst du die Beschreibung nochmal auf Deutsch!
        http://www.mysql.de/documentation/my...l#Column_types

        Ach ja, es steht übrigens drinne, für was diese Zahlen sind (übrigens optional laut Handbuch)

        gruss

        Kommentar


        • #5
          Das fass ich jetzt mal als Beleidigung auf,weil ich 1. das deutsche schon auf der Festplatte habe und 2. ich englisch mittlerweile genausogut kann wie deutsch...

          Also,dann frag ich halt mal konkreter:
          Wenn man int(15) hat und man würde eine Zahl,die mehr als 15 Ziffern hat ausgeben,dann würden nur die ersten 15 Ziffern gezeigt?
          *schweigen*
          Ich hab gesagt ich kapiers nicht,denn es werden ja auch alle Ziffer gespeichert... Zumal in meinem Guestbook bei int(1) auch alle Zahlen angezeigt wurden,die mehr als 1 Ziffer hatten...

          Kommentar


          • #6
            INT hat einen Wertebereich von -2147683648 bis +2147683648

            Die Wertebereiche der numerischen Spalten werden durch den Spaltentyp vorgegeben. Wenn versucht wird einen Wert einzutragen, der sich außerhalb des Wertebereiches befindet wird der Wert gekürzt. MySQL schneidet den Wert am entsprechenden Endpunkt ab.

            OK - Das war ja nicht Deine Frage.

            Die Wertkürzung ist nicht abhängig von der Anzeigenbreite. Eine Spalte mit dem Typ SMALLINT(3) besitzt eine Anzeigenbreite von 3 und der Wert reicht trotzdem von -32768 bis +32767. Der Wert 12345 ist breiter als die Anzeigenbreite (3), liegt aber innerhalb des Wertebereichs und deshalb wird 12345 eingetragen. Der Wert 99999 liegt sowohl außerhalb des Werte- als auch Anzeigenbereiches und der Inhalt wird auf +32767 gekürzt. Wird der Wert später wieder geladen, ergibt er sich als +32767.

            So nun hätten wir das.

            Ich empfehle Dir Spaltentypen so zu nehmen wie sie sind und nicht durch datenbankspezifische Möglichkeiten zu "verfeinern".
            Also verwende TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT ohne Schnörkel. Man handelt sich dadurch nur Troubles ein. Man weiß nie was Nachfolgeversionen bringen, oder was das für Folgen hat, wenn die Datenbank gewechselt werden soll, oder man über ODBC oder irgendein API auf die DB zugreifen will.

            Und wie Du selbst bemerkt hast, so 100ig funzt das mit der Anzeigebegrenzung nicht. Ich würde sogar sagen überhaupt nicht. Nachdem diese Anzeigenbegrenzung so unwichtig ist, ist es auch Schade Zeit zu investieren um der Ursache des Problems auf die Schliche zu kommen.

            Kommentar


            • #7
              Also ist das eigentlich absolut egal?Man,und ich mach mir tagelang nen' Kopp darum,wie ich die DB Struktur so mache,dass jede Millisekunde rausgekitzelt wird...
              Danke für die lange Antwort...
              Ach ja,dann hab ich gleich noch ne' Frage: ()
              Wieso wird dann in den Setup-Dateien der allermeisten Scripte die Anzeigebreite verwendet?

              Kommentar


              • #8
                Ich nehme an, daß das folgenden Grund hat:

                Wenn Du bein einem Create Table keine Anzeigenbreite definierst und danach DESCRIBE Table aufrufst, dann werden diese Anzeigenbreitendefinitionen angezeigt.

                Ich bastle mir meine Installationsskript mit Hilfe von mysqldumps zusammen und auch dort sieht man ebenfalls diese Definitionen.
                Code:
                mysql> create table aaa (feld int);
                Query OK, 0 rows affected (0.00 sec)
                
                mysql> describe aaa;
                +-------+---------+------+-----+---------+-------+
                | Field | Type    | Null | Key | Default | Extra |
                +-------+---------+------+-----+---------+-------+
                | feld  | int(11) | YES  |     | NULL    |       |
                +-------+---------+------+-----+---------+-------+
                1 row in set (0.00 sec)
                
                mysql>

                Kommentar


                • #9
                  Hmmm...Ich kenn den Befehl DESCRIBE TABLE nicht...
                  Wenn ich das richtig verstanden habe,wird damit die Struktur der Tabelle ausgegeben,oder?
                  Hmm...Wozu brauch man sowas?


                  P.S.:
                  Ich hab ja wohl noch einiges über MySQL zu lernen...
                  Naja,dann muss ich mir heute wohl oder übel das ganze MySQL Manual durchlesen(bis auf die Installation natürlich :P)...

                  Kommentar


                  • #10
                    Stimmt - zum Anschauen der Tabellenstruktur, mitunter hast Du auch mit fremden Datenbanken zu tun und mit Hilfe von DESCRIBE kannst Du mal rasch nachschauen.

                    Kommentar


                    • #11
                      Naja,wozu gibt es MySQL-Front?

                      Ich glaube sowas werd ich eher nicht brauchen und deshalb lass ich mal den Anzeigebereich raus in meinen zukünftigen Scripten.
                      Danke für die Hilfe!

                      Kommentar

                      Lädt...
                      X