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学习笔记(十)&&加密
随着移动互联网的发展,手机使用越来越广泛,sqlite作为手机端存储的一种解决方案,使用也非常普遍.但是sqlite本身安全特性却比较弱,比如不支持用户权限,只要能获取到数据库文件就能进行访问:另外也 ...
- 由一个bug引发的SQLite缓存一致性探索
问题 我们在生产环境中使用SQLite时中发现建表报“table xxx already exists”错误,但DB文件中并没有该表.后面才发现这个是SQLite在实现过程中的一个bug,而这个bug ...
- SQLite剖析之存储模型
前言 SQLite作为嵌入式数据库,通常针对的应用的数据量相对于DBMS的数据量小.所以它的存储模型设计得非常简单,总的来说,SQLite把一个数据文件分成若干大小相等的页面,然后以B树的形式来组织这 ...
- Sqlite使用
安装命令行工具从http://www.sqlite.org/download.html下载Precompiled Binaries for Windows下的sqlite-tools-win32-x8 ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- SQLite学习笔记(八)&&sqlite实现架构
该系列的前面一些文章我重点讲了sqlite的核心功能,比如封锁机制,共享缓存,以及事务管理等.但对于sqlite的整体没有作一个全面的介绍,本文将从实现的层面,整体介绍sqlite的框架.各个核心模块 ...
- SQLite学习笔记(七)&&事务处理
说到事务一定会提到ACID,所谓事务的原子性,一致性,隔离性和持久性.对于一个数据库而言,通常通过并发控制和故障恢复手段来保证事务在正常和异常情况下的ACID特性.sqlite也不例外,虽然简单,依然 ...
- SQLite XXTea加密学习
这几天优化数据库读写,移植了xxtea加密到最新的数据库sqlite 3.12.2里,一些好文章放在这里.移植后,数据库读写性能异常优秀! 这几天又发现,数据库还是发生了无法写入情况,数据库崩溃掉了. ...
- Sqlite学习笔记(一)&&编译安装
Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...
随机推荐
- android linux 内核层
Android依赖于Linux2.6内核提高的高核心系统服务,例如安全,内存管理,进程管理,网络斎等等方面内容.内核作为一个抽象层,存在与硬件层和软件层之间.android对Linux下面内容做了增强 ...
- ubuntu14.04-64位机配置android开发环境,ADT,sdk,eclipsea
这是一篇没有图的好文章,对于学习android的非常实用 1.首先到orcale官网 http://www.oracle.com/technetwork/java/javase/download ...
- Oracle整形转字符串to_char()
使用to_char()将NUMBER转换为字符串: select to_char(AW_PROCESSSTATUS ) as PROCESSSTATUS from A
- DOpus 10.5 使用帮助
在线手册 http://www.dearopus.com/ http://resource.dopus.com/ http://www.gpsoft.com.au/help/opus10/ 应急截图编 ...
- MySQL数据库设置远程访问权限方法小结
http://www.jb51.net/article/42441.htm MySQL基础知识第一期,如何远程访问MySQL数据库设置权限方法总结,讨论访问单个数据库,全部数据库,指定用户访问,设置访 ...
- maven中的snapshot来源与注意事项
maven中的snapshot来源与注意事项 (2012-04-23 15:37:48) 转载▼ 标签: 杂谈 分类: java maven的依赖管理是基于版本管理的,在maven2之后,把版本管理细 ...
- 轻松python文本专题-字符与字符值转换
场景: 将字符转换成ascii或者unicode编码 在转换过程中,注意使用ord和chr方法 >>> print(ord('a')) 97 >>> print(c ...
- JQuery 之 重置表单的方法
由于JQuery中,提交表单是如下方式: $('#formId').submit() 想当然的认为,重置表单,应该如下: $('#formId').reset(); 但是,这样表单无法重置! 经查阅资 ...
- Android 如何预置APK M
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Hotmail Smtp邮箱发送的端口
1.最近有项目需求做监控报警. 2.使用Smtp发邮件时,网上找了一大堆,Smtp服务是:smtp.live.com 端口是:25或587,试了好多次都不行.原来端口是465. 3.发送时,我启用 ...