PRAGMA table_list in SQLite

In SQLite, the table_list pragma returns information about the tables and views in the schema.

It was first introduced in SQLite version 3.37.0 (released on 2021-11-27).

Syntax

The table_list pragma can be used in any of the following ways:

PRAGMA table_list;
PRAGMA schema.table_list;
PRAGMA table_list(table-name);

Where schema is the name of a specific schema for which you’d like to list the tables and views.

And where table-name is the name of specific tables or views that you’d like to list.

Example

PRAGMA table_list;

Result:

schema  name                type   ncol  wr  strict
------  ------------------  -----  ----  --  ------
main    sqlite_schema       table  5     0   0     
temp    sqlite_temp_schema  table  5     0   0     
Store   Orders              table  2     0   1     
Store   Customers           table  4     1   1     
Store   Products            table  3     0   0     
Store   Types               table  3     0   0     
Store   Dogs                table  3     0   0     
Store   Cats                table  3     0   0     
Store   vProducts           view   3     0   0     
Store   sqlite_schema       table  5     0   0     
Pets    Events              table  4     0   0     
Pets    Pets                table  3     0   0     
Pets    Types               table  2     0   0     
Pets    Cats                table  2     0   0     
Pets    Dogs                table  2     0   0     
Pets    sqlite_schema       table  5     0   0     

We can see that the table and view names are listed in the name column. We can also see whether it’s a table or view by looking at the type column. And of course, the schema name is listed in the schema column.

The ncol column contains the number of columns in the table, including generated columns and hidden columns.

The wr column indicates whether or not the table has been defined with the WITHOUT ROWID option. In our example, we can see that the Customers table has been defined with WITHOUT ROWID.

The strict column indicates whether or not the table has been defined with the STRICT option. This option was introduced in SQLite version 3.37.0 (the same version that the table_list pragma was introduced). In our example, we can see that the Customers and Orders tables have been defined with the STRICT option.

Get All Tables in a Specific Database

We can include the schema name in order to return just the tables and views in a given database:

PRAGMA Store.table_list;

Result:

schema  name           type   ncol  wr  strict
------  -------------  -----  ----  --  ------
Store   Orders         table  2     0   1     
Store   Customers      table  4     1   1     
Store   Products       table  3     0   0     
Store   Types          table  3     0   0     
Store   Dogs           table  3     0   0     
Store   Cats           table  3     0   0     
Store   vProducts      view   3     0   0     
Store   sqlite_schema  table  5     0   0     

Get Tables by Name

We can provide the table/view name in order to return all tables/views with that name across all databases:

PRAGMA table_list('Dogs');

Result:

schema  name  type   ncol  wr  strict
------  ----  -----  ----  --  ------
Store   Dogs  table  3     0   0     
Pets    Dogs  table  2     0   0     

In this case we can see that both the Store and Pets schemas have a table called Dogs.