SQLite-Datentypen
- Bedeutung von Datentypen
- Datentypen in SQLite
- Affinitätstypen in SQLite
- Verwenden Sie SQLite-Datentypen
Um mit der Erstellung komplexer Abfragen durch Prozeduren und Funktionen in SQLite zu beginnen, müssen wir die verschiedenen Datentypen kennen, um Verluste oder falsche Datenmanipulationen zu vermeiden.
Bedeutung von Datentypen
Datentypen sind direkt mit den Variablen verknüpft, die zum Definieren bestimmter Datensätze innerhalb einer Prozedur oder Funktion benötigt werden. Der Hauptzweck eines Datentyps besteht darin, dem System mitzuteilen, welche Art von Daten in einer Variablen gespeichert werden.
Dies ist von entscheidender Bedeutung, da die Manipulation von Daten auf den gespeicherten Daten basiert. Wenn Sie beispielsweise Text in einer Variablen speichern, würde das Hinzufügen einer bestimmten Zahl den ASCII-Wert des Zeichens erhöhen und einen neuen zurückgeben.
Wenn Sie den Buchstaben A
als Zeichen speichern und ihm eine 1
hinzufügen, wird der ASCII-Wert erhöht und B
zurückgegeben. Wenn Sie auf die gleiche Weise die Zahl 65
in einer Zeichenvariablen speichern würden, würde A
gespeichert, und das Hinzufügen von Eins würde den Wert 66
ergeben, der dem Buchstaben B
entspricht.
Dies zeigt die Bedeutung von Datentypen beim Erstellen von Funktionen oder sogar innerhalb von Spalten einer Tabelle. Wenn Sie eine Zahl in einem Textdatentyp gespeichert haben und Zahlen hinzufügen wollten, würden Sie am Ende Zeichen erhalten und umgekehrt.
Daher ist ein gutes Verständnis der Datentypen in SQLite und ihrer korrekten Verwendung von entscheidender Bedeutung.
Datentypen in SQLite
Es gibt mehrere Datentypen, die Sie in SQLite finden werden. Um es richtig zu speichern und zu bearbeiten, sollten Sie mit jedem der folgenden Punkte vertraut sein:
Blob
: Die in einem Blob gespeicherten Daten können als dynamisch betrachtet werden. Es wird so gespeichert, wie es ohne Änderungen eingegeben wurde.Null
: Wie der Name schon sagt, ist dies für Nullwerte gedacht. Es ist am besten, sich für null zu entscheiden, wenn Sie nichts speichern möchten, da Leerzeichen oder Wagenrückläufe alle ihre ASCII-Werte haben und vom System als unabhängige Zeichen betrachtet werden.Text
: Dies wird für alle Zeichenketten verwendet, die gespeichert werden müssen; diese können beliebig lang sein, solange sie innerhalb der maximalen Speicherkapazität liegen, die von Ihrer Version von SQLite vorgesehen ist. In den meisten Fällen werden Zeichenfolgen mit gängigen Datenbankcodierungen wie UTF-8, UTF-16BE oder UTF-16LE gespeichert.Integer
: Wird für alle Integer-Werte verwendet. Alle positiven und negativen ganzen Zahlen können gespeichert werden, einschließlich Null. Die Anzahl der zum Speichern von Daten verwendeten Bytes hängt davon ab, wie groß der Wert ist.Real
: Der Integer-Datentyp berücksichtigt nur ganze Zahlen, daher wird derReal
-Datentyp für Fließkommawerte verwendet. Dies sind sowohl positive als auch negative Zahlen, die auch Dezimalwerte haben.
Affinitätstypen in SQLite
Es lohnt sich, Affinitätstypen zu diskutieren, während wir Datentypen diskutieren. Die oben erwähnten Datentypen können auch als Speicherklassen bezeichnet werden.
Eine Unterteilung davon sind Affinitätstypen, eine bevorzugte Speicherklasse, die für eine Spalte entwickelt wurde. Der Hauptzweck besteht darin, die Kompatibilität zwischen SQLite und anderen Datenbanken zu maximieren.
Zu den Affinitätstypen in SQLite gehören:
Text
: Hier werden Daten gespeichert, die Null-, Text- oder Blob-Werte enthalten.Numerisch
: Dies ist großartig, wenn Sie einen Affinitätstyp suchen, der alle fünf Speicherklassen speichern kann.Integer
: Funktioniert sehr ähnlich wieNumeric
, aber durch den Cast-Ausdruck ergeben sich Unterschiede.Real
: Dies ist ähnlich wie Ganzzahlen, außer dass es reguläre Ganzzahlen in Gleitkommawerte umwandelt.None
: Wenn SieNone
verwenden, hat keine Speicherklasse Vorrang. Daher wird es keine Versuche geben, einen Datentyp in einen anderen zu konvertieren, und er wird so bleiben, wie er ist.
Reelle vs. numerische Datentypen
Da sich reale
und numerische
Datentypen ziemlich überschneiden, ist es am besten, einige Klarstellungen anzubieten, damit sie richtig verwendet werden können. Im Wesentlichen wird real
für numerische Daten mit einer Dezimalkomponente verwendet, wie z. B. Gleitkommazahlen.
Andere Zahlen ohne Dezimalstellen werden oft mit der Ganzzahl verwendet. Das ist ziemlich einfach, aber die Affinitäten machen es etwas schwierig zu verstehen.
Numerisch ist eine Affinität, die eingeführt wurde, um mit den folgenden Datentypen verbunden zu werden:
Numeric
Decimal (10,5)
Boolean
Date
Datetime
Da real
in dieser Liste kein Bestandteil ist, kann geschlussfolgert werden, dass alle Arten von Gleitkommazahlen in einem numeric
-Typ nicht berücksichtigt werden. Wenn Sie also vorhaben, eine reguläre Ganzzahl oder eine Dezimalzahl (10,5) zu speichern, funktioniert numerisch
.
Für alle anderen Fließkommazahlen ist numerisch die beste Option.
Denken Sie daran, dass der Zweck von Affinitäten darin besteht, die Kompatibilität zwischen SQLite und anderen Datenbanken zu verbessern. Daher sind einige Zugehörigkeiten zu bestimmten Affinitäten möglicherweise nicht direkt in SQLite verfügbar.
Verwenden Sie SQLite-Datentypen
Nachdem Sie nun ein detailliertes Verständnis der verschiedenen Datentypen in SQLite haben, sollten Sie wissen, wie man sie verwendet.
Verwenden Sie SQLite-Datentypen in Tabellen
Sie können Datentypen direkt in Spalten verwenden, während Sie Tabellen erstellen. Dies kann wie folgt erfolgen:
CREATE TABLE table_name(a INT, b TEXT, c REAL);
Dadurch wird eine Tabelle mit drei Spalten unterschiedlicher Datentypen erstellt.
Hinweis: Stellen Sie sicher, dass Sie beim Erstellen der Tabelle die richtigen Datentypen auswählen. Sie können geändert werden, dies erfordert jedoch eine komplexe Abfrage, oder die vorhandene Tabelle muss gelöscht und neu erstellt werden.
Verwenden Sie SQLite-Datentypen in Funktionen oder Prozeduren
Das Erstellen einer Variablen mit Datentypen auf SQLite ist etwas schwierig. Sie müssen zuerst eine temporäre Memory-Map-Tabelle erstellen, um Werte korrekt in den Variablen zu speichern.
Hier ist ein Beispiel:
BEGIN
PRAGMA temp_store = 2;
CREATE TEMP TABLE table_name(Name TEXT, Age INTEGER);
INSERT INTO table_name (Name) VALUES ('abc');
END
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub