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

时间:2011-01-11 06:16:06

标签: sqlite

如何在SQLite中看到desc中表格的结构?{/ p>}

8 个答案:

答案 0 :(得分:357)

PRAGMA table_info(table_name);

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

更多详细信息和示例的链接。谢谢 SQLite Pragma Command

答案 1 :(得分:299)

在数据库文件上调用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);

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

答案 2 :(得分:35)

您可以查询sqlite_master

SELECT sql FROM sqlite_master WHERE name='foo';

将返回create table SQL语句,例如:

$ 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

答案 3 :(得分:15)

.schema TableName

其中TableName是表的名称

答案 4 :(得分:12)

您应该可以通过运行

来查看架构
.schema <table>

答案 5 :(得分:11)

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

.schema <tableName>

答案 6 :(得分:4)

如果你使用PHP,你可以这样做:

<?php
    $dbname = 'base.db';
    $db = new SQLite3($dbname);
    $sturturequery = $db->query("SELECT sql FROM sqlite_master WHERE name='foo'");

    $table = $sturturequery->fetchArray();
    echo '<pre>' . $table['sql'] . '</pre>';

    $db->close();
?>

答案 7 :(得分:0)

您可以使用名为SQLite Manager的Firefox插件清楚地查看数据库的结构。