SQLite jest opensource’ową, relacyjną bazą danych, która nie potrzebuje serwera zewnętrznego do działania. Wszystkie dane są przechowywane lokalnie a biblioteka obsługująca bazę to niewielki pojedyńczy plik. Aby zacząć z tej bazy korzystać wystarczy skorzystać z tego pojedyńczego pliku.
SQLite nie jest nowym projektem, jednak wraz ze wzrostem popularności aplikacji mobilnych zainteresowanie tą bazą także rośnie. Dzieje się tak dlatego, że najbardziej popularne platformy mobilne (Android i IOS) natywnie wspierają ten slinik.
SQLite nie bezpodstawnie ma opinię bardzo łatwej w użytkowaniu, wydajnej bazie danych.
Jeżeli potrzebujecie także do swojego projektu małej wbudowanej bazy danych to SQLite jest godny sprawdzenia.
Zaczynamy:
1. Instalacja.
Wszystkie niezbędne pliki znajdziemy na stronie SQLite Download Page
MacOSX:
Nie trzeba nic instalować, SQLite
już jest w systemie.
Linux:
Aby zainstalować w systemie Linux
możemy skorzystać z linku powyżej aby pobrać odpowiedni plik, ale większość dystrybucji ma SQLite
w swoich dystrybucjach gotowe do zaisntalowania. Np.:
1 2 3 4 5 6 |
/* Debian lub Ubuntu */ sudo apt-get install sqlite3 sqlite3-dev /* RedHat, CentOS, Fedora */ yum install SQLite3 sqlite3-dev |
Windows
Tu nie ma tak prostych metod jak powyższe. W przypadku tej platformy musimy skorzystać z powyższego linku, pobrać tam odpowiednie pliki i umieścić je w obrębie zmiennej PATH
(lub też ustawić PATH
aby wskazywało na folder z bazą). Niestety nie posiadam Windows nie więc dla bardziej szczegółowych instrukcji proszę udać się na stronę SQLite
2. Tworzymy pierwszą bazę
Gdy mamy zainstalowane pliki binarne SQLite jesteśmy gotowi do utworzenia swojej pierwszej bazy.
Aby utworzyć nową bazę nazwaną test.db
wpisujemy w lini komend:
1 2 |
sqlite3 test.db |
Aby teraz utworzyć tabelę w naszej bazie wpisujemy:
1 2 |
sqlite> create table firsttable(id integer primary key, value text); |
Została utworzona tabla firsttable
z dwoma kolumnami. Pierwsza id
jako Klucz Główny która ma możliwość autogenerowania wartości, oraz druga kolumna value
która przechowuje wartości tekstowe.
Musimy tu pamiętać o dwóch rzeczach:
1. Wszystkie komendy muszą kończyć się znakiem średnika ;
2. komendy systemowe zaczynają się od znaku kropki .
, np. .help .quit
3. baza danych NIE zostanie zapisana na dysku dopóki nie utworzymy conajmniej jednej tablicy.
Czas na dodanie trochę danych do naszej tablicy:
1 2 3 4 5 |
sqlite> insert into firsttable(id, value) values(1, 'Stefan'); sqlite> insert into firsttable(id, value) values(2, 'Maria'); sqlite> insert into firsttable(value) values('Franek'); sqlite> insert into firsttable(value) values('Krysia'); |
Sprawdzamy czy wszystko się zapisało:
1 2 3 4 5 6 |
sqlite> select* from firsttable; 1|Stefan 2|Maria 3|Franek 4|Krysia |
Nie do końca czytelnie, możemy trochę przeformatować wyświetlanie:
1 2 |
sqlite> .mode column |
Wyświetli dane w postaci kolumnowej
1 2 |
sqlite> .header on |
Pokaże nagłówki tabeli.
Pamiętajmy jednak, że w przeciwieństwie do komend sql
, komendy systemowe nie mogą kończyć się znakiem średnika ;
Pobieramy dane jeszcze raz:
1 2 3 4 5 6 7 8 |
sqlite> select * from firsttable; id value ---------- ---------- 1 Stefan 2 Maria 3 Franek 4 Krysia |
Aby dodać dodatkową kolumnę do naszej tableli:
1 2 |
sqlite> alter table firsttable add column email text not null default '' collate nocase; |
Dodaliśmy kolumnę email, która nie może mieć wartości NULL
domyślnie pusty string, podczas sortowania wiekość znaków nie ma znaczenia.
Tworzenie widoków jest tak samo proste:
1 2 |
sqlite> create view firstview as select * from firsttable; |
Tak samo proste jest tworzenie indeksów:
1 2 |
sqlite> create index first_idx on firsttable(value); |
3. Kilka przydatnych komend systemowych:
Przede wszystkim .help
chyba wiadomo po co ? ;)
Sprawdzenie struktury bazy:
1 2 |
sqlite> .schema |
Albo struktury tabeli (lub widoku)
1 2 |
sqlite> .schema firsttable |
Lista tablic i widoków:
1 2 |
sqlite> .tables |
Lista indeksów:
1 2 |
sqlite> .indices |
Export bazy danych do pliku SQL:
1 2 3 4 |
sqlite> .output nazwa_pliku.sql sqlite> .dump sqlite> .output sdtout |
Import danych z pliku SQL:
1 2 |
sqlite> .read nazwa_pliku.sql |
Export wyników zapytania do pliku CSV:
1 2 3 4 5 |
sqlite> .mode csv sqlite> .output nazwa_pliku.csv sqlite> select * from firsttable; sqlite> .output stdout |
Import danych z pliku CSV (dane rozdzielone przecinkiem) do tablicy:
1 2 3 4 |
sqlite> create table secondtable(id integer primary key, value text); sqlite> .separator , sqlite> .import dane_w_pliku.csv secondtable; |
Zrzut całej bazy:
1 2 3 |
/* Formuła: sqlite3 [nazwa_bazy] .dump > [nazwa_pliku] */ sqlite3 test.db .dump > backup.sql |
Import całej bazy:
1 2 3 |
/* Formuła: sqlite3 [baza] < [plik] */ sqlite3 test.db < backup.sql |
4. Koniec.
To tylko preludium możliwości tej małej bazy danych, mam nadzieję, że zachęciłem do używania.
.