SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Typy danych SQLite

Podsumowanie :w tym samouczku poznasz system typów danych SQLite i związane z nim koncepcje, takie jak klasy pamięci, wpisywanie manifestów i powinowactwo typów.

Wprowadzenie do typów danych SQLite

Jeśli pochodzisz z innych systemów baz danych, takich jak MySQL i PostgreSQL, zauważysz, że używają one pisania statycznego . Oznacza to, że kiedy deklarujesz kolumnę z określonym typem danych, kolumna ta może przechowywać tylko dane o zadeklarowanym typie danych.

W odróżnieniu od innych systemów baz danych, SQLite używa systemu typów dynamicznych . Innymi słowy, wartość przechowywana w kolumnie określa jej typ danych, a nie typ danych kolumny.

Ponadto nie musisz deklarować określonego typu danych dla kolumny podczas tworzenia tabeli. Jeśli zadeklarujesz kolumnę z typem danych całkowitych, możesz przechowywać dowolne typy danych, takie jak tekst i BLOB, SQLite nie będzie na to narzekać.

SQLite udostępnia pięć prymitywnych typów danych, które są określane jako klasy pamięci.

Klasy pamięci opisują formaty, których SQLite używa do przechowywania danych na dysku. Klasa pamięci jest bardziej ogólna niż typ danych, np. INTEGER klasa pamięci zawiera 6 różnych typów liczb całkowitych. W większości przypadków można zamiennie używać klas pamięci i typów danych.

Poniższa tabela ilustruje 5 klas pamięci w SQLite:

Klasa pamięci Znaczenie
NULL Wartości NULL oznaczają brakujące informacje lub nieznane.
LICZBA CAŁKOWITA Wartości całkowite są liczbami całkowitymi (dodatnimi lub ujemnymi). Liczba całkowita może mieć różne rozmiary, takie jak 1, 2, 3, 4 lub 8 bajtów.
PRAWDZIWE Wartości rzeczywiste to liczby rzeczywiste z wartościami dziesiętnymi, które używają 8-bajtowych elementów zmiennoprzecinkowych.
TEKST TEKST służy do przechowywania danych znakowych. Maksymalna długość TEKSTU jest nieograniczona. SQLite obsługuje różne kodowania znaków.
BLOB BLOB oznacza duży obiekt binarny, który może przechowywać dowolne dane. Maksymalny rozmiar BLOB jest teoretycznie nieograniczony.

SQLite określa typ danych wartości na podstawie jej typu danych zgodnie z następującymi regułami:

  • Jeśli literał nie zawiera cudzysłowów i kropki dziesiętnej lub wykładnika, SQLite przypisuje klasę pamięci INTEGER.
  • Jeśli literał jest ujęty w pojedyncze lub podwójne cudzysłowy, SQLite przypisuje klasę przechowywania TEXT.
  • Jeśli literał nie zawiera cudzysłowu, kropki dziesiętnej ani wykładnika, SQLite przypisuje REAL klasę pamięci.
  • Jeśli literał ma wartość NULL bez cudzysłowów, przypisywana jest klasa pamięci NULL.
  • Jeśli literał ma X’ABCD’ lub x’abcd’, SQLite przypisał klasę przechowywania BLOB.

SQLite nie obsługuje wbudowanych klas przechowywania daty i czasu. Możesz jednak użyć TEKST, INT lub REAL do przechowywania wartości daty i godziny. Aby uzyskać szczegółowe informacje na temat obsługi wartości daty i czasu, zapoznaj się z samouczkiem dotyczącym daty i czasu SQLite.

SQLites zapewnia typeof() funkcja, która pozwala sprawdzić klasę przechowywania wartości na podstawie jej formatu. Zobacz następujący przykład:

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

Pojedyncza kolumna w SQLite może przechowywać różne typy danych. Zobacz poniższy przykład.

Najpierw utwórz nową tabelę o nazwie test_datatypes do testów.

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

Po drugie, wstaw dane do test_datatypes tabela.

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)

Po trzecie, użyj typeof() funkcja, aby uzyskać typ danych każdej wartości przechowywanej w val kolumna.

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

Możesz zapytać, jak SQLite sortuje dane w kolumnie z różnymi klasami przechowywania, takimi jak kolumna val powyżej.

Aby rozwiązać ten problem, SQLite zapewnia następujący zestaw reguł dotyczących sortowania:

  • NULL klasa pamięci ma najniższą wartość. Jest niższy niż jakiekolwiek inne wartości. Między wartościami NULL nie ma kolejności.
  • Następne wyższe klasy pamięci to INTEGER i REAL. SQLite porównuje liczbowo INTEGER i REAL.
  • Następną wyższą klasą pamięci jest TEKST. SQLite używa zestawienia wartości TEKSTOWYCH podczas porównywania wartości TEKSTOWYCH.
  • Najwyższa klasa pamięci to BLOB. SQLite używa funkcji C memcmp() do porównania wartości BLOB.

Kiedy używasz ORDER BY klauzula sortowania danych w kolumnie z różnymi klasami przechowywania, SQLite wykonuje następujące kroki:

  • Po pierwsze, grupuj wartości na podstawie klasy pamięci:NULL, INTEGER i REAL, TEXT i BLOB.
  • Po drugie, posortuj wartości w każdej grupie.

Poniższa instrukcja sortuje mieszane dane w val kolumna test_datatypes tabela:

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

Wpisywanie manifestu SQLite i powinowactwo typów

Inne ważne pojęcia związane z typami danych SQLite to wpisywanie manifestów i powinowactwo typów:

  • Wpisywanie manifestu oznacza, że ​​typ danych jest właściwością wartości przechowywanej w kolumnie, a nie właściwością kolumny, w której przechowywana jest wartość. SQLite używa wpisywania manifestu do przechowywania wartości dowolnego typu w kolumnie.
  • Powinowactwo typu kolumny jest zalecanym typem danych przechowywanych w tej kolumnie. Zwróć uwagę, że typ danych jest zalecany, a nie wymagany, dlatego kolumna może przechowywać dane dowolnego typu.

W tym samouczku poznałeś typy danych SQLite i kilka ważnych pojęć, w tym klasy pamięci, wpisywanie manifestów i powinowactwo typów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyjątek SQLite podczas próby usunięcia wiersza

  2. Utwórz kopię zapasową/przywróć bazę danych SQLlite do folderu aplikacji Dysk Google

  3. SQLite - Utwórz kopię zapasową bazy danych do pliku

  4. importuj już utworzoną bazę danych sqlite (xamarin)

  5. Baza danych pokoju Android nie wyeksportuje wszystkich danych