我如何能看到表的结构在SQLite的desc是在Oracle?
当前回答
调用数据库文件上的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命令的行为(请参阅“查询数据库模式”部分)。
其他回答
你可以通过输入命令来获得结构:
.schema <tableName>
. schema的表
哪里的TableName是表的名称
调用数据库文件上的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命令的行为(请参阅“查询数据库模式”部分)。
可以查询sqlite_master
SELECT sql FROM sqlite_master WHERE name='foo';
它将返回一个创建表的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
如果你正在使用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();
?>
推荐文章
- SQLite数据库文件使用什么扩展名重要吗?
- 无法加载DLL 'SQLite.Interop.dll'
- 快速简单的方法迁移SQLite3到MySQL?
- 在Ubuntu上安装sqlite3-ruby错误
- sqlite3。ProgrammingError:提供的绑定数量不正确。当前语句使用1,并提供了74个
- SQLite有。net / c#包装器吗?
- Android开发有什么好的ORM工具吗?
- 如何在SQLite中看到表的结构?
- Android中使用的SQLite版本?
- Core Data vs SQLite 3
- 如何在SQLITE中删除或添加列?
- 如何解锁SQLite数据库?
- 什么时候SQLiteOpenHelper onCreate() / onUpgrade()运行?
- 如何重命名SQLite数据库表中的列?
- 仅当表不存在时才在SQLite中创建表