MySQL type - Decimal, Smallint, ..?
Ralf Heumann
- datenbank
0 wahsaga0 Ralf Heumann0 wahsaga0 Ralf Heumann0 Ralf Heumann0 wahsaga0 Vinzenz Mai
Hallo,
ich möchte eine Datenbankstruktur für eine Produktsuche anlegen. Die Spalte 'pcmsizecode' kann Einträge von ungefähr 1 - 9000 beinhalten. Allerdings können auch etwa Werte wie z.B 22.5 auftauchen. Dann allerdings nur mit der Nachkommastelle .5
Es gibt auch Produkte die hier gar keinen Wert haben, sprich die Spalte leer ist. Daher soll das Feld auch als Standard leer bleiben.
Was nutze ich hier am besten für eine Einstellung beim Anlegen der Datenbank?
Vielen Dank für die Hilfe
Gruß Ralf
hi,
Die Spalte 'pcmsizecode' kann Einträge von ungefähr 1 - 9000 beinhalten. Allerdings können auch etwa Werte wie z.B 22.5 auftauchen. Dann allerdings nur mit der Nachkommastelle .5
Und für was steht der 'pcmsizecode'?
gruß,
wahsaga
Und für was steht der 'pcmsizecode'?
Was das genau aussagt weiß ich nicht. Ich habe die Daten von einer Excel-File übernommen, in welcher all diese Produktdaten stehen. Die Spalte nennt sich hier genauso. Es handelt sich dabei um eine Produktdatenbank für Kondensatoren.
Naja die Spalte möchte ich so einfach ebenfalls benennen.
Gruß Ralf
hi,
Und für was steht der 'pcmsizecode'?
Was das genau aussagt weiß ich nicht. Ich habe die Daten von einer Excel-File übernommen, in welcher all diese Produktdaten stehen. Die Spalte nennt sich hier genauso. Es handelt sich dabei um eine Produktdatenbank für Kondensatoren.
Gut, wenn der zu erwartende Wertbereich so ist, wie du schriebst - dann würde ich wohl zu einem DECIMAL(6,1) tendieren.
gruß,
wahsaga
Gut, wenn der zu erwartende Wertbereich so ist, wie du schriebst - dann würde ich wohl zu einem DECIMAL(6,1) tendieren.
hmm ich hatte es bereits einmal mit einem DECIMAL(6,2) ausprobiert. Allerdings nutzt er mir als Standardwert dann bei leereingaben immer "0.00"
Bei DECIMAL(6,1) dann also "0.0". Gibt es eine Möglichkeit, dass der Standardwert _leer_ ist? Ansonsten werden ja unnötig Daten in die DB geschrieben. Desweiteren müsste ich dann im Code noch den Wert "0.0" 'ausklammern'
Gruß Ralf
Müsste ich vielleicht NULL auf true setzen? Oder was macht "NULL" ? Habe jetzt noch nicht allzuoft Datenbanken aufgesetzt.
hi,
Müsste ich vielleicht NULL auf true setzen? Oder was macht "NULL" ?
pcmsizecode DECIMAL(6,1) NULL DEFAULT NULL
pcmsizecode DECIMAL(6,1) NULL
sollte eigentlich auch schon reichen, da MySQL dann als Default NULL annimmt.
gruß,
wahsaga
pcmsizecode DECIMAL(6,1) NULL
Yup das reicht aus. Jetzt haben wir es fast geschafft ;)
Beim Import der Daten aus der CSV Datei speichert er mir nun alles fein in der DB. Allerdings schreibt er trotzdem wieder bei pcmsizecode (obwohl in der CSV-Datei bei dieser Spalte nichts drinsteht - also 2 Semikolon nebeneinander) "0.0" in die Spalte..
Wenn ich einen neuen Wert per Hand eintrage ist das kein Problem. Muss ich nun per SQL alle 0.0 Werte in "NULL" ändern lassen oder geht das schon beim Import?
Noch eine letzte Frage: Das mit der MySQL collation Sort "latin1_swedish_ci" usw. kannte ich bisher noch gar nicht. Ich hatte das in meinen Spalten in "latin1_german1_ci" geändert. Allerdings gab es bei einer SQL-Query einen Fehler "Illegal mix of collations (irgendwas,IMPLICIT) and.." oder so ähnlich.
Ich habe es nun auf "utf8_general_ci" geändert? Ist das korrekt oder was muss ich hier tun?
Hallo Ralf,
Wenn ich einen neuen Wert per Hand eintrage ist das kein Problem. Muss ich nun per SQL alle 0.0 Werte in "NULL" ändern lassen oder geht das schon beim Import?
gibt es echte Werte 0.0? Wenn nein, sollte Dir
UPDATE tabelle SET spalte = NULL WHERE spalte = 0.0
weitere Arbeit abnehmen.
Freundliche Grüße
Vinzenz
gibt es echte Werte 0.0? Wenn nein, sollte Dir
UPDATE tabelle SET spalte = NULL WHERE spalte = 0.0
weitere Arbeit abnehmen.
Nein es gibt keine 0.0 Werte. Diese werden allerdings trotz leerem Feld in der CSV-Datei und NULL in der Spalte als 0.0 eingetragen (warum auch immer).
Per SQL Befehl habe ich diese 0.0 Felder auch schon mit Null ersetzt. Nur war die Frage ob das auch per CSV-Import schon geht?! Denn ich möchte dass der Kunde später selbst noch neue Produktdaten hier importieren kann, der keine SQL Kenntnisse hat.
Achja, vielen Dank für Eure Hilfe :))
Gruß Ralf