SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

2 Cara Membuat Daftar Tabel dalam Database SQLite

Berikut adalah dua cara untuk mengembalikan daftar tabel di semua database terlampir di SQLite.

Metode pertama mengembalikan semua tabel dan tampilan untuk semua database terlampir.

Metode kedua memberi Anda opsi untuk mengembalikan tabel dan tampilan, atau hanya tabel, tetapi hanya untuk database utama.

Perbarui Des 2021 :Sejak menulis artikel ini, SQLite telah memperkenalkan opsi lain, yang saya cantumkan sebagai opsi bonus ketiga di akhir artikel ini.

Perintah .tables

Cara termudah untuk mengembalikan daftar tabel saat menggunakan shell baris perintah SQLite adalah dengan menggunakan .tables memerintah.

Perintah ini dapat digunakan dengan atau tanpa argumen. Jika Anda menggunakannya tanpa memberikan argumen, ia mengembalikan semua tabel (dan tampilan) untuk semua database yang dilampirkan.

Contoh:

.tables

Hasil:

Album          Employee       InvoiceLine    PlaylistTrack
Artist         Genre          MediaType      Track        
Customer       Invoice        Playlist     

Dalam kasus saya, hanya ada satu database terlampir (database sampel Chinook), dan semua tabel database ini dikembalikan.

Seperti yang disebutkan, Anda juga dapat memberikan argumen untuk perintah ini. Argumen seperti itu dapat digunakan untuk membatasi tabel yang dikembalikan oleh perintah. Misalnya, Anda bisa memberi nama tabel tertentu, atau Anda bisa menggunakan pencocokan pola untuk mengembalikan hanya tabel yang cocok dengan pola tertentu.

Contoh:

.tables a%

Hasil:

Album   Artist

Dalam hal ini hanya tabel yang dimulai dengan huruf “a” yang dikembalikan.

Satu hal yang harus diperhatikan adalah bahwa .tables perintah mengembalikan kedua tabel dan dilihat. Jika Anda ingin mengecualikan tampilan dari hasil Anda, Anda dapat menggunakan pencocokan pola untuk mengecualikan tampilan. Ini hanya akan berfungsi jika tampilan Anda menggunakan konvensi penamaan yang membedakannya dari tabel dan objek lain.

Cara lain untuk mengecualikan tampilan dari hasil Anda adalah dengan menanyakan sqlite_schema meja secara langsung. Meskipun tabel ini juga berisi tampilan, Anda dapat menggunakan SQL untuk mengecualikannya dari hasil Anda jika perlu.

Tabel sqlite_schema

Setiap database SQLite memiliki sqlite_schema tabel yang mendefinisikan skema untuk database. Anda dapat menggunakan tabel ini untuk mengembalikan daftar tabel di database Anda.

Saat Anda menggunakan .tables perintah, ini mirip dengan melakukan ini:

SELECT name FROM sqlite_schema 
WHERE type IN ('table','view') 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Namun, ada perbedaan.

Perbedaannya adalah metode ini hanya mengembalikan hasil untuk utama database (.tables perintah mengembalikan hasil untuk semua database terlampir).

Menjalankan kueri di atas akan mengembalikan hasil berikut:

Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
Track

Kueri itu mengembalikan kedua tabel dan tampilan (seperti .tables perintah tidak).

Dalam kasus saya tidak ada tampilan, tetapi jika Anda ingin mengecualikan tampilan dalam hasil, gunakan ini:

SELECT name FROM sqlite_schema 
WHERE type = 'table' 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Hasil:

Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
Track

sqlite_schema tabel juga dapat diakses dengan menggunakan sqlite_master .

Kecualikan Tampilan

Demi kelengkapan, berikut adalah contoh cepat yang menggunakan database dengan tampilan. Basis data ini berisi satu tabel (disebut Produk ) dan satu tampilan (disebut vProducts ).

Hubungkan ke SQLite/database:

sqlite3 Store.db

Jalankan .tables perintah:

.tables

Hasil:

Products   vProducts

Buat kueri sqlite_schema tabel untuk tabel dan dilihat:

SELECT name FROM sqlite_schema 
WHERE type IN ('table','view') 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Hasil:

Products
vProducts

Sekarang kueri sqlite_schema untuk tabel hanya :

SELECT name FROM sqlite_schema 
WHERE type = 'table' 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Hasil:

Products

Tabel Sementara

.table perintah mengembalikan tabel permanen dan tabel sementara. sqlite_schema tabel hanya berisi tabel permanen. Jika Anda hanya perlu mengembalikan tabel sementara, Anda dapat meminta sqlite_temp_schema atau sinonimnya sqlite_temp_master .

Untuk mengembalikan tabel permanen dan tabel sementara, Anda dapat menggunakan kueri seperti ini:

SELECT name FROM 
   (SELECT * FROM sqlite_schema UNION ALL
    SELECT * FROM sqlite_temp_schema)
WHERE type='table'
ORDER BY name;

Bonus Opsi Ketiga:Pernyataan Pragma table_list

Sejak saya pertama kali menulis artikel ini, SQLite telah memperkenalkan table_list pernyataan pragma, yang mencantumkan tabel dan tampilan:

PRAGMA table_list;

Lihat PRAGMA table_list di SQLite untuk ikhtisar dan contoh.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batas SQLite

  2. Subkueri SQLite

  3. Lampirkan String dalam Kutipan Tunggal di Hasil Query SQLite

  4. UnsatisfiedLinkError dalam metode asli

  5. Ukuran Database SQLite Maksimum di Aplikasi Android