Типовете данни в SQLite са различни в сравнение с друга система за управление на база данни. В SQLite можете да декларирате типове данни нормално, но все пак можете да съхранявате всяка стойност във всеки тип данни.
В този урок ще научите -
- Класове за съхранение
- Тип на афинитет
- Примери за съхраняване на типове данни в SQLite
SQLite се въвежда по-малко. Няма типове данни, можете да съхранявате всякакъв вид данни, които харесвате, във всяка колона. Това се нарича динамични типове.
В статичните типове, както и в други системи за управление на база данни, ако сте декларирали колона с цяло число от тип данни, можете да вмъквате само стойности на цяло число от тип данни. Въпреки това, при динамични типове като в SQLite, типът на колоната се определя от вмъкнатата стойност. И тогава SQLite съхранява тази стойност в зависимост от нейния тип.
Класове за съхранение на SQLite
В SQLite има различни методи за съхранение в зависимост от вида на стойността, тези различни методи за съхранение се наричат класове за съхранение в SQLite.
По-долу са наличните класове за съхранение в SQLite:
- NULL - този клас за съхранение се използва за съхраняване на всяка NULL стойност.
- INTEGER - всяка цифрова стойност се съхранява като подписана цяло число (може да съдържа както положителни, така и отрицателни цели числа). Стойностите INTEGER в SQLite се съхраняват в 1, 2, 3, 4, 6 или 8 байта съхранение в зависимост от стойността на числото.
- REAL - този клас за съхранение се използва за съхраняване на стойностите с плаваща запетая и те се съхраняват в 8-байтово хранилище.
- ТЕКСТ - съхранява текстови низове. Той също така поддържа различно кодиране като UTF-8, UTF-16 BE или UTF-26LE.
- BLOB - използва се за съхраняване на големи файлове, като изображения или текстови файлове. Стойността се съхранява като масив от байтове, същото като входната стойност.
Тип на афинитет на SQLite
Тип афинитет е препоръчителният тип данни, съхранявани в колона. Все пак можете да съхранявате какъвто и да е тип данни, както желаете, препоръчва се тези типове да не се изискват.
Тези типове бяха въведени в SQLite, за да максимизират съвместимостта между SQLite и друга система за управление на база данни.
На всяка колона, декларирана в база данни на SQLite, се присвоява афинитет на типа в зависимост от декларирания тип данни. Ето лифта на афинитетите на типа в SQLite:
- ТЕКСТ.
- ЧИСЛЕНО.
- ИНТЕГЪР.
- ИСТИНСКИ.
- BLOB.
Ето как SQLite определя афинитета на колоната от декларирания й тип данни:
- INTEGER афинитет се присвоява, ако декларираният тип съдържа низ " INT ".
- Афинитет на TEXT се присвоява, ако колоната съдържа в своя тип данни един от следните низове „ TEXT “, „ CHAR или„ CLOB ". Например на типа VARCHAR ще бъде присвоен афинитет TEXT.
- BLOB афинитет се присвоява, ако в колоната няма определен тип или типът данни е BLOB.
- РЕАЛЕН афинитет се присвоява, ако типът съдържа един от следните низове „ DOUB “, „ REAL или„ FLOAT “.
- NUMERIC афинитет се присвоява за всеки друг тип данни.
На същата страница има и таблица, показваща някои примери за картографиране между типовете данни на SQLite и техните афинитети, определени от тези правила:
Примери за съхранение на типове данни в SQLite:
Съхраняване на номер с SQLite цяло число:
Всяка колона от тип данни съдържа думата "INT", ще й бъде присвоена афинитет на тип INTEGER. Той ще се съхранява в клас за съхранение INTEGER.
Всички следните типове данни се присвояват като афинитет на тип INTEGER:
- INT, INTEGER, BIGINT.
- INT2, INT4, INT8.
- TINYINT, SMALLINT, СРЕДЕН INT.
Афинитетът на INTEGER тип в SQLite може да съдържа всяко присвоено цяло число (положително или отрицателно) от 1 байт до максимум 8 байта.
Съхраняване на номера с SQLite REAL:
ИСТИНСКИТЕ числа са числото с двойна точност с плаваща запетая. SQLite съхранява реални числа като масив от 8 байта. Ето списъка с типовете данни в SQLite, които можете да използвате за съхраняване на РЕАЛНИ номера:
- ИСТИНСКИ.
- ДВОЙНА.
- ДВОЙНА ТОЧНОСТ.
- ПЛАВА.
Съхраняване на големи данни с SQLite BLOB:
Има само един начин за съхраняване на големи файлове в база данни на SQLite и той използва типа данни BLOB. Този тип данни се използва за съхраняване на големи файлове като изображения, файлове (от всякакъв тип) и т.н. Файлът се преобразува в масив от байтове и след това се съхранява в същия размер като входния файл.
Съхраняване на SQLite Booleans:
SQLite няма отделен клас за съхранение BOOLEAN. Стойностите на BOOLEAN обаче се съхраняват като INTEGERS със стойности 0 (като false) или 1 (като true).
Съхраняване на дати и часове на SQLite:
Можете да декларирате дата или време в SQLite, като използвате един от следните типове данни:
- ДАТА
- ВРЕМЕ ЗА СРЕЩА
- TIMESTAMP
- ВРЕМЕ
Имайте предвид, че в SQLite няма отделен клас за съхранение на DATE или DATETIME. Вместо това всички стойности, декларирани с един от предишните типове данни, се съхраняват в клас на съхранение в зависимост от формата на датата на вмъкнатата стойност, както следва:
- ТЕКСТ - ако сте въвели стойността на датата във формата на низа ISO8601 („ГГГГ-ММ-ДД ЧЧ: ММ: SS.SSS“).
- ИСТИНСКИ - ако сте вмъкнали стойността на датата в числата на джулианските дни, броят дни от обяд в Гринуич на 24 ноември 4714 г. пр. Н. Е. Тогава стойността на датата ще се съхранява като РЕАЛНА.
- INTEGER като Unix Time, броят на секундите от 1970-01-01 00:00:00 UTC.
Резюме:
SQLite поддържа широк спектър от типове данни. Но в същото време е много гъвкав по отношение на типовете данни. Можете да поставите всеки тип стойност във всеки тип данни. SQLite също така въведе някои нови концепции в типовете данни като афинитет на типа и класове за съхранение, за разлика от други системи за управление на бази данни.