AYE89

coding & learning

导航

SQLite3数据库

Posted on 2017-09-20 17:27  AYE89  阅读(369)  评论(0编辑  收藏  举报

#SQLite可视化管理工具(SQLite Expert Pro)

SQLite特点:

1. 遵守ACID(原子性、一致性、隔离性和持久性)的关系型数据库管理系统;
2. 不是一个C/S结构的数据库引擎,而是被集成在用户程序中;不是一个应用程序与之通信的进程;
3. 是一种嵌入式数据库,它的数据库就是一个文件。
4. Android、iOS等移动操作系统中的数据库实现就使用的SQLite3;它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口;
5. 比目前流行的大多数数据库对数据的操作要快;
6. SQLite3支持数据库大小至2TB,包含在一个C程序库中大小250KB;

7. 零装配,无需安装和配置;

 

基本结构:

简单来说两部分——前端解析系统--后端引擎

SQLite的表和索引用B/B+树来组织

SQL语句

1. 创建表

create table 表名 (字段1  数据类型约束1,  ...  , 字段n  数据类型约束n )

create table students ( id integer primary key autoincrement,
name vachar(20) check (length(name) > 3),
tel_no vachar(11) not null,
cls_id integer not noll,
unique (name, tel_no),
FOREIGN KEY(cls_id) REFERENCES classes(id)
);

SQLite数据类型

声明类型 亲缘类型 应用规则
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8
INTEGER 1
CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
TEXT 2
BLOB NONE 3
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
REAL 4
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
NUMERIC 5

主键约束:

SQLite表中含有一个内置主键row_id

外键约束:

外键能够确保表中的关键值必须从另一个表中引用,且该数据必须在另一个表中存在,否则会操作失败或引发其他的连锁反应。 

 

2. 插入数据

insert into 表名 (字段列表) values (与字段列表中对应的字段值)

举例,

insert into classes values(1, 'software', 2010);

批量插入

insert into stu select * from students;

 

3. select语句——使用数据库

3部分组成:基本操作,附加操作,扩展操作

select [distinct] columns from tables

    where predictate

    group by columes

    having predicate

    order by columns

    limit count, offset;

 

4. update语句——更新表中数据

update table set update_list where predicate;

 

5. delete语句——删除数据

delete from table where predicate

 

6. 修改表

alter table tableName { rename to newName | add column 新的字段}

 

SQLite API

基本操作:增、删、查、改

insert,delete, query, update

 

Cursor

当执行查询语句时,返回的数据类型为Curor。它是一个提供了随机读写访问数据库查询结果集的接口,Cursor并不是线程安全的,因此,当在多线程中访问Cursor对象时要手动进行同步,避免出现线程安全问题。

Cursor中定义了一个光标位置,该光标默认指向第一个数据。

用户可以通过moveToNext函数不断地移动光标获取下一个函数,不断地重复这个过程就可以获取到所有数据。