sqlite元数据

Posted weiyinfu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlite元数据相关的知识,希望对你有一定的参考价值。

sqlite数据库每个文件都是一个database,因此同一个文件内部不再划分database。sqlite没有提供像mysql那样的show tables;desc 表名类似的语句。许多数据库的元数据也是存储在一个表里面,mysql是这样,sqlite也是这样。在sqlite中,这个表的名字叫sql_master。

查看表的内容

select * from sqlite_master

查看表的每列

sqlite> pragma table_info(sqlite_master);
0|type|text|0||0
1|name|text|0||0
2|tbl_name|text|0||0
3|rootpage|integer|0||0
4|sql|text|0||0

sqlite_master表有5列:

  • type :可取值包括table,view,index
  • name:表名,视图名,索引名
  • tbl_name:表名,如果是索引,表示索引所对应的表
  • rootpage
  • sql : 创建数据库对象时的语句

不管是表或视图还是索引,sql 字段是原先用 CREATE TABLE 、CREATE VIEW 或 CREATE INDEX 语句创建它们时的命令文本。对于自动创建的索引(用来实现 PRIMARY KEY 或 UNIQUE 约束),sql字段为NULL。

SQLITE_MASTER 表是只读的。不能对它使用 UPDATE、INSERT 或 DELETE。 它会被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自动更新。

关于sqlite的数据库元信息,知道sqlmaster和pragma table_info这两点就已经足够了。最后,来记忆一下sqlite常用语句。

新增一列

命令:ALTER? TABLE?? table-name?ADD COLUMN? column-namecolumn-type
例如:在student表中添加一列名为name,类型为varchar:
alter table student add column name varchar;
alter table catalog add column xxx1 char(20) default ‘‘;

删除一列

sqlite不支持删除列,所以只能用另一种方式来实现删除列:先把想要的列复制到新表,然后把旧表删除,最后把新表重命名为旧表。
create table B asselect y,z from A
drop table ifexists A
alter table Brename to A

重命名一列

sqlite不支持重命名列,所以只能用类似删除一列的方式:数据转移。

参考资料

https://blog.csdn.net/runtime233/article/details/52439881

以上是关于sqlite元数据的主要内容,如果未能解决你的问题,请参考以下文章

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

如果我想从另一个片段中添加书签,为啥我的书签单词没有保存到 sqlite 数据库?

这个 SQLite 查询可以更快吗?

无法从片段中的 SQLite 获取数据