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.



Follow us on Facebook and Twitter for latest update.