Database.Guide

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;

Vastaa

Sähköpostiosoitettasi ei julkaista.