SQLite
 sql >> база данни >  >> RDS >> SQLite

Типове данни на SQLite

Резюме :в този урок ще научите за системата за типове данни на SQLite и свързаните с нея концепции като класове за съхранение, въвеждане на манифест и афинитет на типа.

Въведение в типовете данни на SQLite

Ако идвате от други системи за бази данни като MySQL и PostgreSQL, забелязвате, че те използват статично въвеждане . Това означава, че когато декларирате колона с конкретен тип данни, тази колона може да съхранява само данни от декларирания тип данни.

За разлика от другите системи за бази данни, SQLite използва система с динамични типове . С други думи, стойност, съхранена в колона, определя нейния тип данни, а не типа данни на колоната.

Освен това не е нужно да декларирате конкретен тип данни за колона, когато създавате таблица. В случай, че декларирате колона с целочислен тип данни, можете да съхранявате всякакви типове данни като текст и BLOB, SQLite няма да се оплаче от това.

SQLite предоставя пет примитивни типа данни, които се наричат ​​класове за съхранение.

Класовете за съхранение описват форматите, които SQLite използва за съхраняване на данни на диск. Класът за съхранение е по-общ от тип данни, например INTEGER клас за съхранение включва 6 различни типа цели числа. В повечето случаи можете да използвате класове за съхранение и типове данни взаимозаменяемо.

Следната таблица илюстрира 5 класа за съхранение в SQLite:

Клас за съхранение Значение
NULL NULL стойности означават липсваща информация или неизвестна.
ЦЯЛО ЧИСЛО Целочислените стойности са цели числа (положителни или отрицателни). Едно цяло число може да има променливи размери, като 1, 2, 3, 4 или 8 байта.
ИСТИНСКИ Реалните стойности са реални числа с десетични стойности, които използват 8-байтови плаващи числа.
ТЕКСТ TEXT се използва за съхраняване на символни данни. Максималната дължина на TEXT е неограничена. SQLite поддържа различни кодировки на знаци.
BLOB BLOB означава двоичен голям обект, който може да съхранява всякакъв вид данни. Максималният размер на BLOB теоретично е неограничен.

SQLite определя типа данни на стойност въз основа на нейния тип данни съгласно следните правила:

  • Ако литералът няма ограждащи кавички и десетична запетая или степен, SQLite присвоява класа за съхранение INTEGER.
  • Ако литерал е затворен в единични или двойни кавички, SQLite присвоява класа за съхранение TEXT.
  • Ако литералът няма кавички, десетична запетая или експонента, SQLite присвоява REAL клас за съхранение.
  • Ако литералът е NULL без кавички, той присвоява NULL клас за съхранение.
  • Ако литерал има X’ABCD’ или x ‘abcd’, SQLite присвоява BLOB клас за съхранение.

SQLite не поддържа вградени класове за съхранение на дата и час. Въпреки това, можете да използвате TEXT, INT или REAL, за да съхранявате стойности за дата и час. За подробна информация как да обработвате стойности за дата и час, вижте урока за дата и час на SQLite.

SQLites предоставя typeof() функция, която ви позволява да проверите класа на съхранение на стойност въз основа на нейния формат. Вижте следния пример:

SELECT
	typeof(100),
	typeof(10.0),
	typeof('100'),
	typeof(x'1000'),
	typeof(NULL);Code language: SQL (Structured Query Language) (sql)

Една колона в SQLite може да съхранява смесени типове данни. Вижте следния пример.

Първо създайте нова таблица с име test_datatypes за тестване.

CREATE TABLE test_datatypes (
	id INTEGER PRIMARY KEY,
	val
);Code language: SQL (Structured Query Language) (sql)

Второ, вмъкнете данни в test_datatypes таблица.

INSERT INTO test_datatypes (val)
VALUES
	(1),
	(2),
	(10.1),
	(20.5),
	('A'),
	('B'),
	(NULL),
	(x'0010'),
	(x'0011');Code language: SQL (Structured Query Language) (sql)

Трето, използвайте typeof() функция, за да получите типа данни на всяка стойност, съхранена в val колона.

SELECT
	id,
	val,
	typeof(val)
FROM
	test_datatypes;Code language: SQL (Structured Query Language) (sql)

Можете да попитате как SQLite сортира данни в колона с различни класове за съхранение, като колона val по-горе.

За да разреши това, SQLite предоставя следния набор от правила, когато става въпрос за сортиране:

  • Класът за съхранение NULL има най-ниската стойност. Тя е по-ниска от всички други стойности. Между стойностите NULL няма ред.
  • Следващите по-високи класове за съхранение са INTEGER и REAL. SQLite сравнява числово INTEGER и REAL.
  • Следващият по-висок клас за съхранение е TEXT. SQLite използва съпоставянето на стойностите TEXT, когато сравнява стойностите на TEXT.
  • Най-високият клас за съхранение е BLOB. SQLite използва функцията C memcmp() за да сравните BLOB стойности.

Когато използвате ORDER BY клауза за сортиране на данните в колона с различни класове за съхранение, SQLite изпълнява следните стъпки:

  • Първо, групирайте стойностите въз основа на клас за съхранение:NULL, INTEGER и REAL, TEXT и BLOB.
  • Второ, сортирайте стойностите във всяка група.

Следното изявление сортира смесените данни в val колона на test_datatypes таблица:

SELECT
	id,
	val,
	typeof(val)
FROM
	test_datatypes
ORDER BY val;Code language: SQL (Structured Query Language) (sql)

Въвеждане в манифест на SQLite и афинитет на типа

Други важни концепции, свързани с типовете данни на SQLite, са въвеждането на манифест и афинитет на типа:

  • Въвеждането на манифест означава, че типът данни е свойство на стойност, съхранена в колона, а не свойство на колоната, в която се съхранява стойността. SQLite използва въвеждане на манифест, за да съхранява стойности от всякакъв тип в колона.
  • Типовият афинитет на колона е препоръчителният тип за данни, съхранявани в тази колона. Имайте предвид, че типът данни е препоръчителен, а не задължителен, следователно колона може да съхранява всеки тип данни.

В този урок научихте за типовете данни на SQLite и някои важни концепции, включително класове за съхранение, въвеждане в манифест и афинитет на типа.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite Python

  2. Грешка на SQLiteConstraintException се показва след стартиране на всяка дейност

  3. Изтриване на елемент от ListView и база данни с OnItemClickListener

  4. Върнете края на месеца в SQLite

  5. Как да изберете данни между две дати от sqlite db във формат dd-mm-yyyy?