Inne działy

 

 

Ćwiczymy z sqlite3

Teraz gdy mamy już utworzone przykładowe bazy danych możemy przystąpić do ćwiczeń z konsolowym programem sqlite3.

Na ekranie terminala, widzimy następujący monit narzędzia sqlite3.

$ sqlite3 test.db

SQLite version 3.5.9
Enter ".help" for instructions
sqlite>

Polecenie .help jest wewnętrznym poleceniem narzędzia sqlite3 powoduję wyświetlenie  listy poleceń występujących w sqlite. Plecenia .exit i .quit powodują wyście z programu. Polecenie .databases wyświetla załączone bazy danych. Polecenie .table wyświetla listę tabel zawartych w bazie danych.

Teraz poznamy kilka poleceń programu narzędziowego sqlite3

sqlite> .tables
Books Customers Log Orders Testing
Cars Friends Names Reservations

 polecenie .tables pokazuje tabele jakie zawiera baza danych.

sqlite> SELECT * FROM Names;
1|Tom
2|Lucy
3|Frank
4|Jane
5|Robert


Powyżej mamy wyświetlony wynik prostego zapytania SELECT. Domyślnym trybem wyświetlania jest linia i separator |

sqlite> .separator :
sqlite> SELECT * FROM Names;
1:Tom
2:Lucy
3:Frank
4:Jane
5:Robert

 Powyżej mamy przykład jak zastosować inny separator tu użyliśmy dwukropka.

 Istnieją jeszcze inne tryby wyświetlania danych. Poniżej  dane są wyświetlone w trybie kolumnowym.

sqlite> .mode column
sqlite> .headers on
sqlite> SELECT * FROM Names;
Id Name
---------- ----------
1 Tom
2 Lucy
3 Frank
4 Jane
5 Robert

W tym przykładzie mamy nasze dane w trybie kolumnowym. Plus pokazujemy nagłówki kolumn za pomocą polecenia .headers. Domyślnie nagłówki są ukryte.

 

Polecenie .width dostosowuje rozmiar kolumn

sqlite> SELECT Title, Author FROM Books;
Title Author
------------- -----------
War and Peace Leo Tolstoy
The Brothers Fyodor Dost
Crime and Pun Fyodor Dost

Na przykładzie powyżej widzimy, że szerokości kolumn nie są wystarczające szerokie, aby wyświetlić poprawnie wszystkie dane.

sqlite> .width 23, 19
sqlite> SELECT Title, Author FROM Books;
Title Author
---------------------- ------------------
War and Peace Leo Tolstoy
The Brothers Karamazov Fyodor Dostoyevsky
Crime and Punishment Fyodor Dostoyevsky

 W związku z tym zmieniliśmy szerokość kolumn. Dla pierwszej kolumny zastosowaliśmy szerokość 23, a dla drugiej 19.

 

sqlite> .show
echo: off
explain: off
headers: on
mode: column
nullvalue: ""
output: stdout
separator: "|"
stats:off
width: 23

Polecenie .show wyświetla różne ustawienia. Możemy sprawdzić w jakim trybie są wyświetlane dane, szerokość kolumn, jaki jest używany separator, czy jest wyświetlany nagłówek.

 

sqlite> .schema Cars
CREATE TABLE Cars(Id integer primary key, Name text, Cost integer);

 Polecenie .schema pokazuję strukturę tabeli. Wyświetla po prostu zapytanie DDL SQL, którym utworzyliśmy tablę.

 

Wykonywanie zapytania SQL z wiersza poleceń

 

Możemy wykonywać polecenia SQL bezpośrednio z powłoki.

$ sqlite3 test.db "SELECT * FROM Cars;"
Id Name Cost
---------- ---------- ----------
1 Audi 52642
2 Mercedes 57127
3 Skoda 9000
4 Volvo 29000
5 Bentley 350000
6 Citroen 21000
7 Hummer 41400
8 Volkswagen 21600

Powyżej mamy przykład bezpośredniego zapytania SQL z powłoki. Wybraliśmy wszystkie samochody z tabeli Cars.

Rzutowanie tabeli

Można również wykonać zrzucenie tabeli w formacie SQL w postaci pliku na dysk twardy. W ten sposób możemy łatwo zapisać strukturę oraz dane z tabeli bazy danych.

Poniżej mamy wyświetloną zawartość z danymi z tabeli Cars

$ sqlite3 test.db "SELECT * FROM Cars;"
Id Name Cost
---------- ---------- ----------
1 Audi 52642
2 Mercedes 57127
3 Skoda 9000
4 Volvo 29000
5 Bentley 350000
6 Citroen 21000
7 Hummer 41400
8 Volkswagen 21600

Teraz możemy użyć polecenia .dump aby wyświetlić strukturę tabeli.

 

sqlite> .dump Cars
BEGIN TRANSACTION;
CREATE TABLE Cars(Id integer primary key, Name text, Cost integer);
INSERT INTO "Cars" VALUES(1,'Audi',52642);
INSERT INTO "Cars" VALUES(2,'Mercedes',57127);
INSERT INTO "Cars" VALUES(3,'Skoda',9000);
INSERT INTO "Cars" VALUES(4,'Volvo',29000);
INSERT INTO "Cars" VALUES(5,'Bentley',350000);
INSERT INTO "Cars" VALUES(6,'Citroen',21000);
INSERT INTO "Cars" VALUES(7,'Hummer',41400);
INSERT INTO "Cars" VALUES(8,'Volkswagen',21600);
COMMIT;

 Polecenie .dump wyświetla nam polecenie SQL konieczne do odtworzenia tabeli.

 

sqlite> .output cars.sql
sqlite> .dump Cars

Możemy także przekierować wyjście do pliku. Polecenie .output może przekierować wyjście do pliku cars.sql

$ cat cars.sql
BEGIN TRANSACTION;
CREATE TABLE Cars(Id integer primary key, Name text, Cost integer);
INSERT INTO "Cars" VALUES(1,'Audi',52642);
...

 Powyższy przykład w systemie Linuks wyświetla zawartość pliku cars.sql. W systemie Windows w konsoli możemy użyć polecenia edit cars.sql

Wczytywanie zapytania SQL

Możemy wczytać zapytanie SQL z pliku za pomocą polecenia .read

 

sqlite> .tables Cars
Cars
sqlite> DROP TABLE CARS;
sqlite> .tables Cars
sqlite> .read cars.sql
sqlite> .tables Cars
Cars
sqlite> SELECT * FROM Cars WHERE id=1;
Id Name Cost
---------- ---------- ----------
1 Audi 52642

W powyższym przykładzie zrealizowaliśmy serię poleceń. Usunęliśmy  tabelę a następnie ją odtworzyliśmy za pomocą wcześnie utworzonego pliku cars.sql.

 

Plik zasobów

Narzędzię sqlite3 posiada plik zasobów o nazwie sqliterc. Plik ten znajduję się w katalogu domowym bazy danych. Jeśli plik nie istnieje to możemy go po prostu utworzyć. Możemy w nim umieścić wewnętrzne polecenia programu sqlite3 takie jak zapytania SQL. Należy jednak unikać używania poleceń SQL w pliku zasobów.

 

$ cat .sqliterc 
.mode column
.header on
.nullvalue NULL

Oto prosty przykład zastosowania plików zasobów. W pliku tym mamy trzy wewnętrzne plecenia. Korzystając z plików zasobów nie musimy wykonywać za każdym razem osobnych pleceń. Uruchamiając sqlite3 z plikiem zasobów nie musimy wszystkich poleceń wykonywać ręcznie za każdym razem oddzielnie.  Wykonując polecenia z zewnętrznego pliku będą one wykonywane automatycznie na początku gdy wywołamy to narzędzie.

 

$ sqlite3 test.db 
-- Loading resources from /home/vronskij/.sqliterc
SQLite version 3.5.9
Enter ".help" for instructions

Powyżej mamy przykład mówiący o tym, że został załadowany plik zasobów przy uruchamianiu narzędzia sqlite3.

 Opcje wiersza poleceń

Narzędzie to posiada wiele opcji wiersza poleceń. Plik zasobów zastępuję wiele wewnętrznych poleceń sqlite3. Polecenia wydawane bezpośrednio w linii poleceń zastępuję polecenia znajdujące się w pliku zasobów wewnętrznych.

$ sqlite3 -version
-- Loading resources from /home/tomaszek/.sqliterc
3.5.9

Dostosowujemy narzędzie sqlite3

 

$ sqlite3 -html test.db 
-- Loading resources from /home/vronskij/.sqliterc
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> SELECT * FROM Cars LIMIT 2;
<TR><TH>Id</TH><TH>Name</TH><TH>Cost</TH></TR>
<TR><TD>1</TD>
<TD>Audi</TD>
<TD>52642</TD>
</TR>
<TR><TD>2</TD>
<TD>Mercedes</TD>
<TD>57127</TD>
</TR>

Opcja -html powoduje, że wyniki mogą być wydrukowane za pomocą prostych tabel HTML


W tej części kursu SQlite, pracowaliśmy z narzędziem wiersza poleceń sqlite3. Zostały opisane różne wewnętrzne polecenia programu sqlite3. Pokazaliśmy jak zrzucić tabele, jak czytać polecenia SQL z plików opisane zostały polecenia związane z plikiem zasobów SQLite.

Zobacz nasze wszystkie kursy

WWW


HTML
HTML - Znaczniki
CSS - Tutorial
CSS - Selektory
PHP
JavaScript

XML

XSLT

Bazy danych


SQL
SQLite
MySQL
PostgreSQL

 

 

Programowanie


C
C++
C#
Java
VisualBasic
Python

Linux


Podstawy Linuxa
Bash
Linuks artykuły

Windows


Excel funkcje
Windows wskazówki
Outlook

Pozotałe działy


Programy
Rozrywka

 

 

 

This email address is being protected from spambots. You need JavaScript enabled to view it.