Ce face .tables
.tables este primul lucru pe care îl scrii când deschizi o bază necunoscută: listează tabelele și vederile (VIEW), în ordine alfabetică, pe mai multe coloane. Indexurile și declanșatorii nu apar; pentru indexuri există .indexes.
Cu un argument, .tables păstrează doar numele care se potrivesc cu tiparul, după regulile lui LIKE: % înseamnă „orice șir”, _ înseamnă „un caracter”.
Comenzile cu punct (dot-commands) nu sunt SQL: sunt interpretate de utilitarul sqlite3, nu de baza de date. Se scriu singure pe un rând, încep cu punct și nu au nevoie de punct și virgulă la final. Merg la fel în modul interactiv și când trimiți un fișier: sqlite3 magazin.db < script.sql.
Parametri
| Parametru | Descriere |
|---|---|
TIPAR |
Opțional. Un tipar LIKE, de exemplu com% pentru tot ce începe cu „com”. |
Ce returnează
Numele tabelelor și vederilor, ca text (nu ca rezultat SQL).
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (id INTEGER PRIMARY KEY, nume TEXT NOT NULL, oras TEXT);
CREATE TABLE comenzi (id INTEGER PRIMARY KEY, client_id INTEGER REFERENCES clienti(id), total INTEGER);
CREATE INDEX idx_comenzi_client ON comenzi(client_id);
CREATE VIEW comenzi_mari AS SELECT * FROM comenzi WHERE total > 100;
INSERT INTO clienti (nume, oras) VALUES ('Ana', 'Iași'), ('Mihai', 'Cluj'), ('Ioana', NULL);
INSERT INTO comenzi (client_id, total) VALUES (1, 250), (2, 80), (1, 40);
Exemplul 1: Toate tabelele și vederile
Vederea comenzi_mari apare lângă tabele; indexul idx_comenzi_client nu apare.
.tables
Rezultat
clienti comenzi comenzi_mari
Exemplul 2: Doar numele care încep cu „comenzi”
.tables comenzi%
Rezultat
comenzi comenzi_mari
Exemplul 3: Aceeași listă, cu SQL
Dintr-un program (Python, PHP) nu poți folosi comenzi cu punct. Acolo citești tabelul intern sqlite_schema, care ține definiția fiecărui obiect din bază. Filtrul pe sqlite_% ascunde tabelele interne ale SQLite.
SELECT name, type
FROM sqlite_schema
WHERE type IN ('table', 'view') AND name NOT LIKE 'sqlite_%'
ORDER BY name;
Rezultat
╭──────────────┬───────╮
│ name │ type │
╞══════════════╪═══════╡
│ clienti │ table │
│ comenzi │ table │
│ comenzi_mari │ view │
╰──────────────┴───────╯
Greșeli frecvente
- Pui punct și virgulă sau scrii comanda în mijlocul unui rând SQL. Comenzile cu punct trebuie să fie singure pe rând și să înceapă cu punct, la începutul rândului.
- Folosești
.tablessauSHOW TABLESdin cod.SHOW TABLESeste sintaxă MySQL, iar.tablesexistă doar în utilitarulsqlite3; din aplicații interoghezisqlite_schema. - Te aștepți să vezi tabelele unei baze atașate cu
ATTACHfără prefix..tablesle afișează cu numele schemei în față, de exempluarhiva.facturi.
Comenzi înrudite
.schema: Afișează instrucțiunile CREATE pentru tabelele, indexurile, vederile și declanșatorii din bază, exact cum au fost scrise..open: Închide baza curentă și deschide (sau creează) alt fișier de bază de date, fără să ieși din sqlite3.ATTACH DATABASE: Deschide încă o bază de date în aceeași conexiune, ca să interoghezi sau să copiezi date între fișiere cu SQL obișnuit.PRAGMA table_info: Afișează coloanele unui tabel: poziția, numele, tipul declarat, NOT NULL, valoarea implicită și cheia primară.