SQLite 学习

Posted 寂智

tags:

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

SQLite 学习

一. 简介

  1. 零配置,无需安装或管理;

  2. 无服务器,不需要单独的服务器进程或操作系统;

  3. 数据库是存储在一个单一的跨平台的磁盘文件;

  4. 事务是完全兼容ACID的,允许从多个进程或者线程安全访问;

二.数据类型

  1. NULL

  2. INTEGER,值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,6或8个字节;

  3. TEXT,所有值都是浮点数值,被存储为8字节的IEEE浮点数;

  4. TEXT,值为文本字符串,使用数据库编码存储,如UTF-8、UTF-16BE或UTF-16-LE;

  5. BLOB(binary large object 二进制大对象),值是数据的二进制对象,如何输入就如何存储,不改变格式;

  6. 没有单独的boolean数据类型(通过整数0或1表示),没有单独的日期数据类型;

三. 类型或列亲和性(type or column affinity)

  • sqlite 不强制数据类型的约束,任何类型都可以插入任何列。

  • sqlite 使用声明的列类型来指示你所期望的格式,如果向整型列中插入字符串,sqlite 会试图将该字符串转换成一个整数,如果可以转换,它将插入该整数,否则将插入字符串;

  • 优点,1.提升和其他DBMS的兼容性,让用户像用一般的DBMS一样使用它,提高了容错能力。2.sqlite支持的数据类型只有五种,如果能支持的类型太多,系统会很庞大,但sqlite实际上任何类型都支持,这就是亲和性的巧妙之处;

  • 缺点,不一致的数据存在,运算和比较会很混乱,sqlite自定了一套规则解决;

类型 解释
TEXT 数值型数据在被插入之前,需要先被转换为文本格式,之后再插入到目标字段中
NUMERIC NULL或BLOB类型的数据不转换,浮点型的试图转换成INTEGER,文本视图转换为INTEGER或REAL(转不了存 TEXT)
INTEGER 规则等同于NUMERIC,唯一差别是在执行CAST表达式时
REAL 规则基本等同于NUMERIC,唯一的差别是不会将"30000.0"这样的文本数据转换为INTEGER存储方式
NONE 不做任何的转换,直接以该数据所属的数据类型进行存储

四. 常用命令

  1. .help

  2. .databases = show databases;

  3. .tables = show tables;

  4. .schema tablename = desc tablename

  5. sqlite3 testDB.db

  6. sqlite3 testDB.db .dump > testDB.sql

  7. ATTACH DATABASE ‘testDB.db’ as ‘TEST’;

  8. DETACH DATABASE ‘Alias-Name’;

  9. 创建表

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL);

10.其他和mysql基本一致


以上是关于SQLite 学习的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段

SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML

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

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

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

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