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元数据的更多相关文章

  1. SQLite学习笔记(十)&&加密

    随着移动互联网的发展,手机使用越来越广泛,sqlite作为手机端存储的一种解决方案,使用也非常普遍.但是sqlite本身安全特性却比较弱,比如不支持用户权限,只要能获取到数据库文件就能进行访问:另外也 ...

  2. 由一个bug引发的SQLite缓存一致性探索

    问题 我们在生产环境中使用SQLite时中发现建表报“table xxx already exists”错误,但DB文件中并没有该表.后面才发现这个是SQLite在实现过程中的一个bug,而这个bug ...

  3. SQLite剖析之存储模型

    前言 SQLite作为嵌入式数据库,通常针对的应用的数据量相对于DBMS的数据量小.所以它的存储模型设计得非常简单,总的来说,SQLite把一个数据文件分成若干大小相等的页面,然后以B树的形式来组织这 ...

  4. Sqlite使用

    安装命令行工具从http://www.sqlite.org/download.html下载Precompiled Binaries for Windows下的sqlite-tools-win32-x8 ...

  5. Android中SQLite数据库小计

    2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...

  6. SQLite学习笔记(八)&&sqlite实现架构

    该系列的前面一些文章我重点讲了sqlite的核心功能,比如封锁机制,共享缓存,以及事务管理等.但对于sqlite的整体没有作一个全面的介绍,本文将从实现的层面,整体介绍sqlite的框架.各个核心模块 ...

  7. SQLite学习笔记(七)&&事务处理

    说到事务一定会提到ACID,所谓事务的原子性,一致性,隔离性和持久性.对于一个数据库而言,通常通过并发控制和故障恢复手段来保证事务在正常和异常情况下的ACID特性.sqlite也不例外,虽然简单,依然 ...

  8. SQLite XXTea加密学习

    这几天优化数据库读写,移植了xxtea加密到最新的数据库sqlite 3.12.2里,一些好文章放在这里.移植后,数据库读写性能异常优秀! 这几天又发现,数据库还是发生了无法写入情况,数据库崩溃掉了. ...

  9. Sqlite学习笔记(一)&&编译安装

    Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...

随机推荐

  1. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  2. CSS 中的字体兼容写法:用CSS为英文和中文字体分别设置不同的字体

    font-family的调用方法: font-family:Arial,'Times New Roman','Microsoft YaHei',SimHei; font:bold 12px/.75em ...

  3. python用post访问restful服务接口

    具体代码如下: import requests import json data={"]} url="http://XXXXX" data_json = json.dum ...

  4. Redis2.2.2源码学习——Server&Client链接的建立以及相关Event

    Redis中Server和User建立链接(图中的client是服务器端用于描述与客户端的链接相关的信息) Redis Server&Client链接的建立时相关Event的建立(图中的cli ...

  5. VS2013开发asmx接口根据ID查询对象

    代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst ...

  6. hadoop无法启动

    dataNode 无法启动是配置过程中最常见的问题,主要原因是多次format namenode 造成namenode 和datanode的clusterID不一致.建议查看datanode上面的lo ...

  7. Flask的集中控制

    想通过一个统一的机制,同时允许一些公共的逻辑 {% if args["NoUser"] %} 无用户! {% else %} <!DOCTYPE html PUBLIC &q ...

  8. Kafka单机环境的部署

    前面说过Kafka集群环境的部署,现在主要说一下在本地测试中Kafka单机环境的部署,和前面一样首先保证zookeeper服务的正常运行,然后解压并释放kafka安装包,并放到指定位置: tar -x ...

  9. JAVA eclipse 安装lombok

    1.下载lombok http://projectlombok.org/download.html 2.点击安装: 如果eclipse没有安装到默认目录,那么需要点击Specify选择eclipse的 ...

  10. tpcc-mysql 系列一:安装使用

    1:安装epel包: rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm 2: yum i ...