[[oktatas:linux:adatbázis-kezelés|< Adatbázis-kezelés]]
====== SQLite adatbázisok ======
* **Szerző:** Sallai András
* Copyright (c) 2017, Sallai András
* Szerkesztve: 2017, 2018
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Bevezetés =====
Az SQLite egyszerű állomány alapú adatbázis-kezelési lehetőséget nyújt.
Egy adatbázis egy állomány. Nincs hálózati elérés, nincs jogosultság kezelés.
Ma már szinte minden programozási nyelvben támogatott, így használata jó
választás lehet. Nem sok típust támogat, kisebb projektek megfelelő
adattárolója lehet, az egyszerűség jellemzi.
===== Telepítés =====
apt install sqlite3
Telepíthető dokumentáció:
apt install sqlite3-doc
===== Használat =====
Parancssorba egyszerűen írjuk be az //sqlite3// parancsot.
A parancs indítása után:
janos@iskolazo:~$ sqlite3
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
A parancsok "." karakterrel kezdődnek.
Néhány parancs:
* .help -- segítség
* .quit -- kilépés
* .open fajlnev.db -- fájl megnyitása
Az SQLite fájlokat **.db** kiterjesztéssel szokás ellátni, bár ez nem kötelező.
Az sqlite3 indításakor az adatbázis megadható:
sqlite3 kekzrt.db
Ha az adatbázis nem létezik automatikusan nem jön létre.
A megnyitó parancs hatására viszont létrejön:
sqlite> .open kekzrt.db
Ezek után kiléphetünk és megnézhetjük az eredményt.
sqlite> .open kekzrt.db
sqlite> .quit
janos@iskolazo:~$ ls
A .show parancs megmutatja a megnyitott állományt és a hozzátartozó alapértékeket.
===== Az SQLite típusok =====
^ Típus ^ Leírás ^
| NULL | NULL érték |
| INTEGER | egész szám |
| REAL | valós számok |
| TEXT | szöveg a következő kódolással: UTF-8, UTF-16BE vagy UTF-16LE |
| BLOB | pontosan tárolt adatok |
Az SQLite persze elfogad int, varchar és hasonló típusokat, amelyeket átkonvertál.
Tehát írhatunk ilyen utasításokat is:
sqlite> create table t1(a int, b varchar(100));
===== Tábla létrehozása =====
sqlite> create table dolgozok (
...> id int primary key,
...> nev text,
...> telepules text);
sqlite>
Az utasítások több sorba is írhatók. Az utasítás végét mindig ";" karakterrel jelezzük.
A táblák megtekintése:
sqlite> .tables
dolgozok
sqlite>
A táblák felépítése:
sqlite> .schema
CREATE TABLE dolgozok (
id int primary key,
nev text,
telepules text);
sqlite>
Ha több táblánk is van, de csak a dolgozók táblát szeretnénk:
sqlite> .schema dolgozok
CREATE TABLE dolgozok (
id int primary key,
nev text,
telepules text);
sqlite>
Ha az azonosítót automatikusan emelni szeretnénk integer típust kell használnunk:
sqlite> create table dolgozok (
...> id integer primary key autoincrement,
...> nev text,
...> telepules text,
...> szuletes text);
sqlite>
===== SQL =====
SQL példák:
sqlite> insert into dolgozok values (1, "Nagy János", "Szolnok");
sqlite> select * from dolgozok;
Megadható az INSERT számára milyen mezőket adunk meg:
sqlite> insert into dolgozok (nev, telepules) values ("Nagy János", "Szolnok");
A SET kulcsszó itt nem használható.
Adatok módosítása:
sqlite> update dolgozok set telepules="Szeged" where id=2;
Rekord törlése:
sqlite> delete from dolgozok where id=2;
===== A kimenet formázása =====
A select parancs kimenetében az oszlopok pipe karakterrel vannak tagolva.
Ezen változtathatunk, a .mode column paranccsal:
sqlite> select * from dolgozok;
1|Nagy János|Szolnok
2|Poros Mária|Szeged
3|Fényes Gábor|Szolnok
sqlite> .mode column
sqlite> select * from dolgozok;
1 Nagy János Szolnok
2 Poros Mári Szeged
3 Fényes Gá Szolnok
sqlite>
Hátránya, hogy levágja azokat a karaktereket, amelyek nem férnek ki.
Természetesen beállítható az oszlop szélessége:
sqlite> .width 3 16 10
sqlite> select * from dolgozok;
1 Nagy János Szolnok
2 Poros Mária Szeged
3 Fényes Gábor Szolnok
sqlite>
Fejléc bekapcsolása:
sqlite> .header on
sqlite> select * from dolgozok;
id nev telepules
--- --------------- ------------
1 Nagy János Szolnok
2 Poros Mária Szeged
3 Fényes Gábor Szolnok
sqlite>
Fejléc kikapcsolása:
sqlite> .header off
Visszakapcsolás az eredeti módba:
sqlite> .mode list
A list módban beállítható a szeparátor a .separator paranccsal:
sqlite> .mode list
sqlite> select * from dolgozok;
1|Nagy János|Szolnok
2|Poros Mária|Szeged
3|Fényes Gábor|Szolnok
sqlite>
sqlite> .separator ", "
sqlite> select * from dolgozok;
1, Nagy János, Szolnok
2, Poros Mária, Szeged
3, Fényes Gábor, Szolnok
sqlite>
^ A .mode összes parancsa ^^
^ Parancs ^ Leírás ^
| ascii | mezők/sorok 0x1F és 0x1E szeparátorral |
| csv | vesszővel szeparált értékek |
| column | balra igazított mezők (lásd még a .width) |
| html | HTML