Reputation: 29246
I'm just getting started learning SQLite. It would be nice to be able to see the details for a table, like MySQL's DESCRIBE [table]
. PRAGMA table_info [table]
isn't good enough, as it only has basic information (for example, it doesn't show if a column is a field of some sort or not). Does SQLite have a way to do this?
Upvotes: 514
Views: 274001
Reputation: 760
.schema user_meta
didn't work for me.
but .schema
did show me all the tables.
I was able to see user_meta table using this command:
sqlite> SELECT * FROM sqlite_master WHERE type='table' AND name='user_meta';
table|user_meta|user_meta|7|CREATE TABLE user_meta (
id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
first_name VARCHAR(10),
last_name VARCHAR(10),
PRIMARY KEY (id),
CONSTRAINT fk_user_id FOREIGN KEY(user_id) REFERENCES user (id),
UNIQUE (user_id)
)
Upvotes: 1
Reputation: 3481
For example, I have these tables in my Django SQLite database:
sqlite3 db.sqlite3
Then
.tables
In order to describe and see the SQL statements for shop_product table, you can run the following command:
.schema shop_product
Upvotes: 0
Reputation: 1
".schema" can show more details of tables including Table Constraints than "PRAGMA".
This command below shows the details of all tables:
.schema
This command below shows the details of all tables in a well-formatted way:
.schema --indent
This command below shows the details of one table:
.schema <table_name>
These commands below show the details of one table in a well-formatted way:
.schema --indent <table_name>
Or:
.schema <table_name> --indent
In addition, these commands below show the details about ".schema":
.help .schema
Or:
.help schema
Then, this is how it looks like below:
sqlite> .help .schema
.schema ?PATTERN? Show the CREATE statements matching PATTERN
Options:
--indent Try to pretty-print the schema
--nosys Omit objects whose names start with "sqlite_"
Upvotes: 7
Reputation: 375912
The SQLite command line utility has a .schema TABLENAME
command that shows you the create statements.
Upvotes: 624
Reputation: 258388
Are you looking for the SQL used to generate a table? For that, you can query the sqlite_schema
table:
sqlite> CREATE TABLE foo (bar INT, quux TEXT);
sqlite> SELECT * FROM sqlite_schema;
table|foo|foo|2|CREATE TABLE foo (bar INT, quux TEXT)
sqlite> SELECT sql FROM sqlite_schema WHERE name = 'foo';
CREATE TABLE foo (bar INT, quux TEXT)
Alternative Names
The schema table can always be referenced using the name
sqlite_schema
, especially if qualifed by the schema name likemain.sqlite_schema
ortemp.sqlite_schema
. But for historical compatibility, some alternative names are also recognized, including:
sqlite_master
sqlite_temp_schema
sqlite_temp_master
Alternatives (2) and (3) only work for the TEMP database associated with each database connection, but alternative (1) works anywhere.
Upvotes: 134
Reputation: 2731
If you're using a graphical tool. It shows you the schema right next to the table name. In case of DB Browser For Sqlite, click to open the database(top right corner), navigate and open your database, you'll see the information populated in the table as below.
right click on the record/table_name, click on copy create statement and there you have it.
Hope it helped some beginner who failed to work with the commandline.
Upvotes: 2
Reputation: 121
To prevent that people are mislead by some of the comments to the other answers:
.schema
or query from sqlite_master
not gives any output, it indicates a non-existent tablename
, e.g. this may also be caused by a ;
semicolon at the end for .schema
, .tables
, ... Or just because the table really not exists.
That .schema
just doesn't work is very unlikely and then a bug report should be filed at the sqlite project.... .schema can only be used from a command line; the above commands > can be run as a query through a library (Python, C#, etc.). – Mark Rushakoff Jul 25 '10 at 21:09
sqlite
, is more likely to be supported than that the language provides a wrapper
/library
for every program (which not only is prone to incompleteness by the very nature of the masses of programs out there, but also is counter acting single-source principle
, complicating maintenance
, furthering the chaos of data in the world).Upvotes: 9
Reputation: 1975
To see all tables:
.tables
To see a particular table:
.schema [tablename]
Upvotes: 62