7. 如何列出所有的表和索引 命令行下,使用.tables,列出所有表名 .schema,则会列出有表和索引的元信息。它们还可以带like子句 在应用程里,你可以访问表sqlite_master得到你要的信息。 其结构如下: CREATE TABLE sqlite_master ( type TEXT, name TEXT, tbl_name TEXT, rootpage INTEGER, sql TEXT ); type字段,总是'table',name字段存储表名。获取表的列表: SELECT name FROM sqlite_master WHERE type='table' ORDER BY name; 获取索引信息: type值为'index', name字段为索引表,tbl_name为创建了索引的表名,sql字段存储的是索引的原始创建语句。对于自动创建(隐含创建,如primary key等)的索引,sql值为NULL. sqlite_master表是只读表,你不能通过CUD语句对其进行修改。DDL语句会自动触发对该表的读写。 临时表不会出现在SQLITE_MASTER表当中。如果想列出所有的表,包括临时表,可用下面的SQL语句: SELECT name FROM (SELECT * FROM sqlite_master UNION ALL SELECT * FROM sqlite_temp_master) WHERE type='table' ORDER BY name;
BEGIN TRANSACTION; CREATE TEMPORARY TABLE t1_backup(a,b); INSERT INTO t1_backup SELECT a,b FROM t1; DROP TABLE t1; CREATE TABLE t1(a,b); INSERT INTO t1 SELECT a,b FROM t1_backup; DROP TABLE t1_backup; COMMIT;