SQL Unterschied (var)char, int und double

Cyda

Lieutenant
Registriert
Jan. 2011
Beiträge
951
Hallo, ich beschäftige mich derzeit mit sql.
Derzeit hänge ich bei varchar, char, int und double fest. Habe schon verschiedene Anleitungen gelesen aber es will mir nicht einleuchten. :(

Char kann max. 30 Zeichen lang sein und varchar 255. Warum nocht gleich immer varchar? Und double ist für Zahlen. Könnt ihr mir die Unterschiede vielleicht erklären?
 
int = ganze Zahlen.
double = Fließkommazahlen.
 
Aus Speichergründen wählt man andere Deklarationen. Aber in Zeiten von Terrabyte ist das bei kleinen Datensätzen egal.
 
int: ganze Zahlen, also ohne Komma
double: Kommazahlen

Und wenn char reicht, was die Anzahl der Zeichen angeht, sollte man das auch nehmen, um den Festplatten- und Arbeitsspeicher zu schonen. Es kommt hier natürlich auf die Größe des Projekts an, ob man darauf überhaupt achten muss.
 
Du solltest dir angewöhnen immer das kleinste zu nehmen was nötig ist, zumindest lernen ich es so
 
Zusätzlich zur Reduzierung des Arbeitsaufwandes der Datenbank durch kleinere Datentypen bringen sie noch den Vorteil der Eingabevalidierung. Größere Daten können gar nicht erst in den Feldern abgelegt werden, da sie z. B. als character deklariert sind. Bringt ein bisschen mehr Sicherheit.
 
Es kommt immer auf den Verwendungszweck einer Variable an. Char hat Vor- und Nachteile gegenüber Varchar, größter Unterschied neben der max. Speicherlänge ist zB auch die Art der Speicherung, da eine kleinere Zeichenkette bei Char durch Leerfelder aufgefüllt wird, bis sie die deklarierte Länge hat... Somit verbraucht Char einen fest definierten Speicherplatz, während varchar variabel ist (Variable Character Field ;).
Den genauen Unterschied kannst du aber auch hier nachlesen MySQL.

Hier kannst du die anderen Datentypen nachlesen: Data Types

Heutzutage sind manche mehr oder weniger überflüssig da man nicht mehr so auf Speicherplatz achten muß, trotzdem haben alle ihre Vor- und Nachteile. Um sauber zu programmieren und Fehler zu vermeiden sollte man schon versuchen für jede Variable sich vorher klar zu machen, welche Daten zulässig sind und dem entsprechend den Datentyp aussuchen...
 
Viele gute Hinweise und Quellen sind schon dabei gewesen.
Anwendungsbeispiele und konkrete Beantwortung deiner Frage fehlen aber noch.

Warum nicht gleich immer varchar?
Ja, varchar hat den Vorteil nur soviel Speicherplatz zu nutzten, wie tatsächlich benötigt wird.
Nützlich ist dies bei stark variierenden Zeichenlängen wie es bei Kommentaren/Beschreibungen.
Da die Speichergröße jedoch Zelle für Zelle individuell bestimmt werden muss, ist der Speicher- und Lesevorgang relativ aufwendig und es wird mehr Zeit benötigt.

Deshalb sollte char immer genutzt werden, wenn die gespeicherten Zeichen (fast) immer gleich lang sind.
Dies ist z.B. bei Autokennzeichen, Ausweis- oder Kundennummern der Fall.

int (Ganzzahlen) sind bswp. für PLZ, HausNr und double(Kommazahl) Preise geeignet.
 
Cyda schrieb:
Char kann max. 30 Zeichen lang sein und varchar 255. Warum nocht gleich immer varchar? Und double ist für Zahlen. Könnt ihr mir die Unterschiede vielleicht erklären?

Stimmt nicht; Char kann maximal 255 Zeichen lang sein, VARCHAR sogar 65.535 (2^16-1). Es kommt darauf an, wie du ihn deklarierst: CHAR(30) ist 30 Zeichen lang, VARCHAR(1000) eben 1000 Zeichen usw.

Der andere Unterschied zwischen CHAR und VARCHAR ist, daß bei CHAR alle Felder intern genau die angegebene Länge haben, auch wenn der tatsächliche Inhalt kürzer ist. Bei VARCHAR werden nur die tatsächlich vorhandenen Zeichen gespeichert. Also belegt ein String der Länge 10, gespeichert als VARCHAR(1000), 10 Byte, als CHAR(255) aber 255.

In der Regel ist VARCHAR also platzsparender als CHAR. Andererseits muß bei VARCHAR-Feldern die Länge des Inhalts jeweils mit abgespeichert werden, was pro Zeile 1-2 Bytes Overhead verursacht. Wenn also die genaue Länge der Inhalte einer bestimmten Spalte im voraus bekannt ist (Hashwerte z. B.), dann bietet sich CHAR dafür an.
 
Zurück
Oben