如何在SQLite中看到表的结构?

Ali*_*Ali 242 sqlite

如何查看表的结构中的SQLite作为desc在甲骨文?

Ano*_*eek 371

PRAGMA table_info(table_name);
Run Code Online (Sandbox Code Playgroud)

这将适用于:命令行和针对连接的数据库执行时.

链接了解更多详情和示例.谢谢 SQLite Pragma Command

  • 执行上面的命令之前执行`.header on`.您可以查看包含数据的列. (4认同)
  • 这应该是公认的答案。.tables和.schema仅显示“原始CREATE TABLE和CREATE INDEX语句”。随后的任何更改都不会反映出来。 (2认同)
  • 如果要获取附加数据库'foo'的表信息,请运行`PRAGMA foo.table_info(table_name);` (2认同)

met*_*att 316

sqlite3在数据库文件上调用该实用程序,并使用其特殊的点命令:

  • .tables 将列出表格
  • .schema [tablename] 将显示一个或多个表的CREATE语句

还有许多其他有用的内置点命令 - 请参阅http://www.sqlite.org/sqlite.html上的文档,sqlite3的特殊命令部分.

例:

sqlite> entropy:~/Library/Mail>sqlite3 Envelope\ Index
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
addresses              ews_folders            subjects
alarms                 feeds                  threads
associations           mailboxes              todo_notes
attachments            messages               todos
calendars              properties             todos_deleted_log
events                 recipients             todos_server_snapshot
sqlite> .schema alarms
CREATE TABLE alarms (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, alarm_id,
                     todo INTEGER, flags INTEGER, offset_days INTEGER,
                     reminder_date INTEGER, time INTEGER, argument,
                     unrecognized_data BLOB);
CREATE INDEX alarm_id_index ON alarms(alarm_id);
CREATE INDEX alarm_todo_index ON alarms(todo);
Run Code Online (Sandbox Code Playgroud)

另请注意,SQLite在名为sqlite_master的魔术表中保存模式以及有关数据库本身中表的所有信息,并且还可以对该表执行常规SQL查询.例如,上面的文档链接显示了如何使用常规SQL命令派生.schema.tables命令的行为(请参阅:查询数据库模式一节).

  • 这里的一个常见错误是将这些实用程序函数与sql语句混淆.前者不需要命令末尾的`;`,后者就是这样. (14认同)
  • .tables和.schema只显示"原始的CREATE TABLE和CREATE INDEX语句".任何后续更改都不会反映出来.您应该使用PRAGMA table_info(table_name). (6认同)
  • 即使我在两列上有一个主键,也不会向我显示索引 (2认同)

Mic*_*ann 38

你可以查询 sqlite_master

SELECT sql FROM sqlite_master WHERE name='foo';
Run Code Online (Sandbox Code Playgroud)

这将返回一个create tableSQL语句,例如:

$ sqlite3 mydb.sqlite
sqlite> create table foo (id int primary key, name varchar(10));
sqlite> select sql from sqlite_master where name='foo';
CREATE TABLE foo (id int primary key, name varchar(10))

sqlite> .schema foo
CREATE TABLE foo (id int primary key, name varchar(10));

sqlite> pragma table_info(foo)
0|id|int|0||1
1|name|varchar(10)|0||0
Run Code Online (Sandbox Code Playgroud)


Abi*_*Abi 15

.schema TableName

其中TableName是表的名称


小智 13

您应该能够通过运行来查看架构

.schema <table>
Run Code Online (Sandbox Code Playgroud)


aTJ*_*aTJ 11

您将通过键入命令获得结构:

.schema <tableName>
Run Code Online (Sandbox Code Playgroud)