.tables în SQLite

Linia de comandă sqlite3 sqlite3 (toate versiunile 3.x)

Afișează numele tabelelor și vederilor din baza de date deschisă, eventual doar pe cele care se potrivesc cu un tipar LIKE.

Sintaxă
.tables
.tables TIPAR

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 .tables sau SHOW TABLES din cod. SHOW TABLES este sintaxă MySQL, iar .tables există doar în utilitarul sqlite3; din aplicații interoghezi sqlite_schema.
  • Te aștepți să vezi tabelele unei baze atașate cu ATTACH fără prefix. .tables le afișează cu numele schemei în față, de exemplu arhiva.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ă.