w3resource

How to show all tables in an SQLite Database?


SQLite: How to show all Tables in a Database

SQLite databases store data in tables, and it's common to need a list of all tables in a database. SQLite doesn't have a dedicated command to display all tables, but you can query the sqlite_master system table, which contains metadata about the database schema, including tables, views, and indexes.


Syntax for Listing All Tables in SQLite

To fetch the list of all tables in a database, use the following query:

SELECT name 
FROM sqlite_master 
WHERE type='table' 
ORDER BY name;
  • sqlite_master: A system table containing schema information.
  • type='table': Filters the results to show only tables.
  • ORDER BY name: Sorts the table names alphabetically.

Examples to List All Tables in SQLite

Example 1: Basic Query to Show All Tables

Code:

-- Query to display all tables in the database
SELECT name                      -- Select the table name
FROM sqlite_master               -- From the system table that stores schema info
WHERE type='table'               -- Filter only table entries
ORDER BY name;                   -- Sort the results alphabetically

Explanation:

  • This query fetches all rows from sqlite_master where the type is table, ensuring only user-defined tables are listed.

Output:

For a database containing tables like students, courses, and grades, the output might look like:

name
-------------
courses
grades
students

Example 2: Using a SQLite Shell Command

If you're using the SQLite CLI (Command Line Interface), you can also use:

Code:

.tables

Explanation:

  • The .tables command is a shortcut in the SQLite shell to display all tables in the current database.

Example 3: Filtering Tables by Name Pattern

Code:

-- Query to show tables with names starting with 'stu'
SELECT name                      -- Select the table name
FROM sqlite_master               -- From the system table
WHERE type='table' AND name LIKE 'stu%' 
ORDER BY name;

Explanation:

  • The LIKE operator is used to filter tables whose names match a specific pattern (e.g., starting with stu).

Output:

For tables named students, student_details, and courses, this query would return:

name
-------------
student_details
students

Example 4: Including System Tables

Code:

-- Query to show all entries, including SQLite system tables
SELECT name, type 
FROM sqlite_master 
ORDER BY type, name;

Explanation:

  • This query lists all objects in the database, such as tables, indexes, and views, by not filtering with WHERE.

Additional Tips

1. Temporary Tables:

To view temporary tables, query sqlite_temp_master instead of sqlite_master.

Code:

SELECT name 
FROM sqlite_temp_master 
WHERE type='table';

2. Debugging Schema:

2. Debugging Schema:

To inspect the structure of a specific table, use:

Code:

PRAGMA table_info('table_name');

3. Combining Metadata Queries:

For a complete overview of the database schema, including views and indexes, use:

Code:

SELECT name, type 
FROM sqlite_master 
ORDER BY type, name;

Common Errors and Solutions

  • No Output from Query:
    Ensure you're connected to the correct database. Use .open database_name in the SQLite CLI if needed.
  • Tables Not Found:
    If you're querying a newly created database, remember that an empty database will not have user-defined tables.

Conclusion

Listing all tables in an SQLite database is a straightforward task using either SQL queries or SQLite shell commands. By querying the sqlite_master table, you gain access to comprehensive metadata about the database's schema.

Practical Guides to SQLite Snippets and Examples.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/sqlite/snippets/sqlite-show-all-tables.php