如何在SQLite中查看表的结构?[重复]

3hvapo4f  于 2023-03-23  发布在  SQLite
关注(0)|答案(8)|浏览(187)

此问题在此处已有答案

Is there an SQLite equivalent to MySQL's DESCRIBE [table]?(7个答案)
七年前就关门了。
如何在SQLite中看到表的结构,就像在Oracle中看到desc一样?

xmjla07d

xmjla07d1#

PRAGMA table_info(table_name);

这将对两者都起作用:命令行和对连接的数据库执行时。
更多细节和示例的链接。谢谢SQLite Pragma Command

62o28rlo

62o28rlo2#

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

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

还有许多其他有用的内置点命令--请参阅http://www.sqlite.org/sqlite.html的文档,sectionSpecial commands to 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命令的行为(请参见第节:查询数据库模式)。

ldioqlga

ldioqlga3#

您可以查询sqlite_schema(以前称为sqlite_master)。

SELECT sql FROM sqlite_schema 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_schema 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
pqwbnv8z

pqwbnv8z4#

您应该能够通过运行

.schema <table>
kupeojn6

kupeojn65#

.schema TableName
其中TableName是表的名称

f3temu5u

f3temu5u6#

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

.schema <tableName>
swvgeqrz

swvgeqrz7#

如果你使用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();
?>
rdlzhqv9

rdlzhqv98#

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

相关问题