Autor si vybral Free and Open Source Fund pro získání příspěvku v rámci programu Write for DOnations.
- Úvod
- Předpoklady
- Krok 1 – Instalace SQLite v Ubuntu 20.04.04
- Krok 2 – Vytvoření databáze SQLite
- Krok 3 – Vytvoření tabulky SQLite
- Vkládání hodnot do tabulek
- Krok 4 – Čtení tabulek v SQLite
- Krok 5 – Aktualizace tabulek v SQLite
- Přidávání sloupců do tabulek SQLite
- Aktualizace hodnot v tabulkách SQLite
- Krok 6 – Odstranění informací v SQLite
- Krok 7 – Spojování informací v SQLite
- Závěr
Úvod
SQLite je svobodný multiplatformní systém pro správu databází. Je oblíbený pro svou efektivitu a schopnost propojení s mnoha různými programovacími jazyky.
V tomto návodu nainstalujete SQLite v Ubuntu 20.04. Nainstalujete jej do systému Ubuntu. Poté vytvoříte databázi, budete z ní číst data, vkládat položky, mazat položky a spojovat položky ze samostatných tabulek.
Poznámka: Tento tutoriál obsahuje praktické pokyny pro instalaci a používání SQLite. Nezabývá se širšími koncepčními otázkami a produkčními problémy, například tím, kdy by se mělo nebo nemělo uvažovat o použití databáze SQLite. Vynikající přehled populárních relačních databází a jejich srovnání najdete v našem článku SQLite vs MySQL vs PostgreSQL:
Mnoho jazyků navíc udržuje integraci se systémem SQLite. Návod na použití SQLite uvnitř kódu Pythonu najdete v našem tutoriálu Jak používat modul sqlite3
v Pythonu 3.
Předpoklady
K dokončení tohoto tutoriálu budete potřebovat:
- Místní počítač nebo server s Ubuntu 20.04. Chcete-li nastavit server, včetně nekořenového uživatele sudo a brány firewall, můžete vytvořit Droplet DigitalOcean se systémem Ubuntu 20.04 a poté postupovat podle našeho průvodce počátečním nastavením serveru.
Krok 1 – Instalace SQLite v Ubuntu 20.04.04
Pro instalaci rozhraní příkazového řádku SQLite v Ubuntu nejprve aktualizujte seznam balíčků:
- sudo apt update
Nyní nainstalujte SQLite:
- sudo apt install sqlite3
Pro ověření instalace zkontrolujte verzi softwaru:
- sqlite --version
Obdržíte následující výstup:
Output3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
Po instalaci SQLite jste nyní připraveni vytvořit novou databázi.
Krok 2 – Vytvoření databáze SQLite
V tomto kroku vytvoříte databázi obsahující různé žraloky a jejich atributy. Pro vytvoření databáze otevřete terminál a spusťte tento příkaz sqlite3
:
- sqlite3 sharks.db
Tím vytvoříte novou databázi s názvem sharks
. Pokud soubor sharks.db
již existuje, SQLite k němu otevře spojení; pokud neexistuje, SQLite jej vytvoří.
Výstup se zobrazí takto:
OutputSQLite version 3.31.1 2020-01-27 19:55:54Enter ".help" for usage hints.
Po tomto příkazu se váš prompt změní. Nyní se objeví nová předpona sqlite>
:
Po vytvoření databáze Shark nyní vytvoříte novou tabulku a naplníte ji daty.
Krok 3 – Vytvoření tabulky SQLite
Databáze SQLite jsou uspořádány do tabulek. Tabulky uchovávají informace. Pro lepší představu si tabulku můžeme představit jako řádky a sloupce.
Zbytek tohoto návodu se bude řídit běžnou konvencí pro zadávání příkazů SQLite. Příkazy SQLite jsou psány velkými písmeny a uživatelské informace malými. Řádky musí končit středníkem.
Nyní vytvoříme tabulku a několik sloupců pro různá data:
- Identifikační číslo
- Jméno žraloka
- Typ žraloka
- Průměrná délka žraloka (v centimetrech)
Pro vytvoření tabulky použijte následující příkaz:
- CREATE TABLE sharks(id integer NOT NULL, name text NOT NULL, sharktype text NOT NULL, length integer NOT NULL);
Použitím NOT NULL
se toto pole stane povinným. Podrobněji se budeme NOT NULL
zabývat v následující části.
Po vytvoření tabulky se vrátí prázdná výzva. Nyní do ní vložíme nějaké hodnoty.
Vkládání hodnot do tabulek
V SQLite má příkaz pro vložení hodnot do tabulky tento obecný tvar:
- INSERT INTO tablename VALUES(values go here);
Kde tablename
je název vaší tabulky a values
jdou do závorek.
Nyní vložte do tabulky sharks
tři řádky VALUES
:
- INSERT INTO sharks VALUES (1, "Sammy", "Greenland Shark", 427);
- INSERT INTO sharks VALUES (2, "Alyoshka", "Great White Shark", 600);
- INSERT INTO sharks VALUES (3, "Himari", "Megaladon", 1800);
Protože jste dříve zadali NOT NULL
pro každou z proměnných v tabulce, musíte pro každou zadat hodnotu.
Zkuste například přidat dalšího žraloka, aniž byste nastavili jeho délku:
- INSERT INTO sharks VALUES (4, "Faiza", "Hammerhead Shark");
Obdržíte tuto chybu:
OutputError: table sharks has 4 columns but 3 values were supplied
V tomto kroku jste vytvořili tabulku a vložili do ní hodnoty. V dalším kroku budete z tabulky v databázi číst.
Krok 4 – Čtení tabulek v SQLite
V tomto kroku se zaměříme na nejzákladnější metody čtení dat z tabulky. Uvědomte si, že SQLite poskytuje specifičtější metody pro zobrazení dat v tabulkách.
Pro zobrazení tabulky se všemi vloženými hodnotami použijte příkaz SELECT
:
- SELECT * FROM sharks;
Uvidíte dříve vložené položky:
Output1|Sammy|Greenland Shark|4272|Alyoshka|Great White Shark|6003|Himari|Megaladon|1800
Chcete-li zobrazit záznam na základě jeho id
(hodnoty, kterou jsme nastavili ručně), přidejte do dotazu příkaz WHERE
:
- SELECT * FROM sharks WHERE id IS 1;
Vrátí se žralok, jehož id
se rovná 1
:
Output1|Sammy|Greenland Shark|427
Podívejme se na tento příkaz blíže.
- Nejprve
SELECT
všechny (*
) hodnoty z naší databáze,sharks
. - Poté se podíváme na všechny hodnoty
id
. - Poté vrátíme všechny záznamy tabulky, kde se
id
rovná1
.
Doteď jste vytvořili tabulku, vložili do ní data a dotazovali se na tato uložená data. Nyní budete existující tabulku aktualizovat.
Krok 5 – Aktualizace tabulek v SQLite
V následujících dvou částech nejprve přidáte do existující tabulky nový sloupec a poté aktualizujete stávající hodnoty v tabulce.
Přidávání sloupců do tabulek SQLite
SQLite umožňuje měnit tabulku pomocí příkazu ALTER TABLE
. To znamená, že můžete vytvářet nové řádky a sloupce nebo upravovat stávající řádky a sloupce.
Příkazem ALTER TABLE
vytvoříte nový sloupec. Tento nový sloupec bude sledovat věk každého žraloka v letech:
- ALTER TABLE sharks ADD COLUMN age integer;
Máte nyní pátý sloupec, age
.
Aktualizace hodnot v tabulkách SQLite
Pomocí příkazu UPDATE
přidejte nové hodnoty age
pro každého z vašich žraloků:
- UPDATE sharks SET age = 272 WHERE id=1;
- UPDATE sharks SET age = 70 WHERE id=2;
- UPDATE sharks SET age = 40 WHERE id=3;
Output1|Sammy|Greenland Shark|427|2722|Alyoshka|Great White Shark|600|703|Himari|Megaladon|1800|40
V tomto kroku jste změnili složení vaší tabulky a poté aktualizovali hodnoty uvnitř tabulky. V dalším kroku odstraníte informace z tabulky:
Krok 6 – Odstranění informací v SQLite
V tomto kroku odstraníte záznamy ve své tabulce na základě vyhodnocení argumentu.
V následujícím příkazu se dotazujete na databázi a požadujete, aby vymazala všechny žraloky v tabulce sharks
, jejichž věk je nižší než 200 let:
- DELETE FROM sharks WHERE age <= 200;
Vyplněním příkazu SELECT * FROM sharks;
ověříte, že Alyoshka
a Himari
, kteří byli každý mladší než 200 let, byli vymazáni. Zůstal pouze Sammy
žralok grónský:
Output1|Sammy|Greenland Shark|427|272
Krok 7 – Spojování informací v SQLite
Představme si, že bychom měli dvě tabulky: naši současnou tabulku sharks
a tabulku endangered
. Co kdyby nyní tabulka endangered
měla hodnotu id
, která by se mapovala na id
ve vaší tabulce sharks
, a měla také hodnotu status
, která by označovala stav zachování každého žraloka?
Pokud byste se chtěli dotazovat na data z obou tabulek, mohli byste použít jeden ze čtyř příkazů SQLite pro spojení:
INNER JOIN
OUTER JOIN
LEFT JOIN
CROSS JOIN
Vytvořme tuto druhou tabulku a pak použijme INNER JOIN
pro spojení některých dat.
Nejprve vytvořte tabulku endangered
:
- CREATE TABLE endangered (id integer NOT NULL, status text NOT NULL);
- INSERT INTO endangered VALUES (1, "near threatened");
Nyní spojte tabulky:
- SELECT * FROM sharks INNER JOIN endangered on sharks.id = endangered.id;`
Váš výstup bude vypadat takto:
Output1|Sammy|Greenland Shark|427|272|1|near threatened
Všimněte si, že výstup obsahuje také hodnotu id
z endangered
. Požadovaný výstup můžete zadat explicitnějším příkazem:
- SELECT sharks.id, sharks.name, sharks.sharktype, sharks.length, sharks.age, endangered.status FROM sharks INNER JOIN endangered on sharks.id = endangered.id;
Tentokrát výstup vyloučí druhou hodnotu id
:
Output1|Sammy|Greenland Shark|427|272|near threatened
Tímto jste úspěšně spojili informace z více tabulek.
Závěr
SQLite je užitečný nástroj pro správu databáze. Lze v něm rychle vytvořit databázi a manipulovat s ní pomocí různých příkazů. Po absolvování tohoto kurzu jste nyní získali základní znalosti o systému SQLite a jste připraveni ponořit se hlouběji do tohoto systému správy databází.
Vynikající přehled relačních databázových systémů a jejich srovnání najdete v našem článku SQLite vs MySQL vs PostgreSQL:
Mnoho jazyků navíc udržuje integraci se systémem SQLite. Návod na použití SQLite uvnitř kódu Pythonu najdete v našem tutoriálu Jak používat modul sqlite3
v Pythonu 3.
.