Tässä on kaksi tapaa palauttaa luettelo SQLite-tietokannan kaikkien liitettyjen tietokantojen taulukoista.
Ensimmäinen menetelmä palauttaa kaikkien liitettyjen tietokantojen kaikki taulut ja näkymät.
Toisen menetelmän avulla voit palauttaa sekä taulut että näkymät tai vain taulut, mutta vain ensisijaisen tietokannan osalta.
Komento .tables
Helpoisin tapa palauttaa luettelo taulukoista SQLiten komentorivin komentokuorta käytettäessä on käyttää komentoa .tables
.
Tätä komentoa voidaan käyttää argumentin kanssa tai ilman. Jos käytät sitä ilman argumenttia, se palauttaa kaikkien liitettyjen tietokantojen kaikki taulukot (ja näkymät).
Esimerkki:
.tables
Tulos:
Album Employee InvoiceLine PlaylistTrackArtist Genre MediaType Track Customer Invoice Playlist
Tapauksessani on vain yksi liitetty tietokanta (Chinook-tietokannan esimerkkitietokanta), ja kaikki tämän tietokannan taulukot palautetaan.
Kuten mainittiin, komennolle voi antaa myös argumentin. Tällaisella argumentilla voidaan rajoittaa komennon palauttamia taulukoita. Voit esimerkiksi nimetä tietyn taulukon tai käyttää kuvion täsmäytystä palauttaaksesi vain tietyn kuvion mukaiset taulukot.
Esimerkki:
.tables a%
Tulos:
Album Artist
Tässä tapauksessa palautetaan vain taulukot, jotka alkavat kirjaimella ”a”.
Yksi asia, joka on syytä muistaa, on se, että komento .tables
palauttaa sekä taulukot että näkymät. Jos haluat sulkea näkymät pois tuloksista, voit käyttää mallien täsmäytystä näkymien poissulkemiseen. Tämä toimii vain, jos näkymät käyttävät nimeämiskäytäntöä, joka erottaa ne taulukoista ja muista objekteista.
Toinen tapa sulkea näkymät pois tuloksista on kysyä suoraan sqlite_master-taulusta. Vaikka tämäkin taulukko sisältää näkymiä, voit tarvittaessa sulkea ne SQL:n avulla pois tuloksista.
Sqlite_master-taulu
Jokaiseen SQLite-tietokantaan kuuluu sqlite_master-taulu, joka määrittelee tietokannan skeeman. Voit käyttää tätä taulukkoa palauttaaksesi luettelon tietokantasi taulukoista.
Käyttäessäsi komentoa .tables
se muistuttaa tämän tekemistä:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'ORDER BY 1;
Mutta eroa on.
Ero on siinä, että tämä menetelmä palauttaa tuloksia vain ensisijaisesta tietokannasta (komento .tables
palauttaa tuloksia kaikista liitetyistä tietokannoista).
Ylläolevan kyselyn suorittaminen palauttaa seuraavan tuloksen:
AlbumArtistCustomerEmployeeGenreInvoiceInvoiceLineMediaTypePlaylistPlaylistTrackTrack
Tämä kysely palauttaa sekä tauluja että näkymiä (aivan kuten komento .tables
tekee).
Tapauksessani ei ole näkymiä, mutta jos haluat sulkea näkymät pois tuloksista, käytä tätä:
SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'ORDER BY 1;
Tulos:
AlbumArtistCustomerEmployeeGenreInvoiceInvoiceLineMediaTypePlaylistPlaylistTrackTrack
Exclude Views
Täydellisyyden vuoksi tässä on nopea esimerkki, joka käyttää tietokantaa, jossa on näkymä. Tämä tietokanta sisältää yhden taulun (nimeltään Tuotteet) ja yhden näkymän (nimeltään vTuotteet).
Kytke yhteys SQLiteen/tietokantaan:
sqlite3 Store.db
Suorita komento .tables
:
.tables
Tulos:
Products vProducts
Kysy sqlite_master-taulusta tauluja ja näkymiä:
SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'ORDER BY 1;
Tulos:
ProductsvProducts
Kysy nyt sqlite_master-taulusta vain tauluja:
SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'ORDER BY 1;
Tulos:
Products
Väliaikaiset taulukot
Tulos:
Products
Väliaikaiset taulukot
Tulos:
Products
.table-komento palauttaa sekä pysyviä että väliaikaisia taulukoita. sqlite_master-taulu sisältää vain pysyviä tauluja. Jos haluat palauttaa vain väliaikaiset taulukot, voit tehdä kyselyn sqlite_temp_master.
Palauttaaksesi sekä pysyvät taulukot että väliaikaiset taulukot voit käyttää tällaista kyselyä:
SELECT name FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master)WHERE type='table'ORDER BY name;