Skip to main content

SQLite描述表

通过SQLite命令行shell程序获取表的结构

要通过SQLite命令行shell程序了解表的结构,请执行以下步骤:

首先,通过SQLite命令行shell程序连接到数据库:

sqlite3 c:\sqlite\db\chinook.db

然后,发出以下命令:

.schema table_name

例如,以下命令显示了创建albums表的语句:

.schema albums

请注意,没有分号(;)在表名之后。如果添加分号(;),这个模式将考虑相册;作为表名,由于表相册而不返回任何内容;不存在。

以下是输出:

CREATE TABLE IF NOT EXISTS "albums"
(
[AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Title] NVARCHAR(160) NOT NULL,
[ArtistId] INTEGER NOT NULL,
FOREIGN KEY ([ArtistId]) REFERENCES "artists" ([ArtistId])
ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE INDEX [IFK_AlbumArtistId] ON "albums" ([ArtistId]);

显示表结构的另一种方法是使用PRAGMA命令。要执行此操作,请使用以下命令格式化输出:

.header on
.mode column

并按如下方式使用PRAGMA命令:

pragma table_info('albums');

下图显示了输出:

cid  name      type           notnull  dflt_value  pk
--- -------- ------------- ------- ---------- --
0 AlbumId INTEGER 1 1
1 Title NVARCHAR(160) 1 0
2 ArtistId INTEGER 1 0

使用SQL语句获取表的结构

通过从sqlite_schema表中查询表,可以找到表的结构,如下所示:

SELECT sql 
FROM sqlite_schema
WHERE name = 'albums';

以下是输出:

sql
------------
CREATE TABLE "albums"
(
[AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Title] NVARCHAR(160) NOT NULL,
[ArtistId] INTEGER NOT NULL,
FOREIGN KEY ([ArtistId]) REFERENCES "artists" ([ArtistId])
ON DELETE NO ACTION ON UPDATE NO ACTION
)

在本教程中,您学习了如何通过命令行shell程序或SQL语句在SQLite中显示表的结构。