sqlite
轻量级嵌入式数据库(使用在移动设备等嵌入式设备,不适用在PC端)占用内存少(可能只有几百k),处理速度快(比主流Mysql等数据库还快)
虽然sqlite integer整形 real浮点型 text文本字符串 blob二进制数据,这些存储方式, 实际上sqlite是无类型的,就算是integer类型,还能存储字符串文本,但是 主键 除外
关于Sqlite shell命令
#### .TABLES 如果不指定表名, 则表示列出当前数据库里所有的表名, 如果指定了表名(可以使用通配符),则是列出当前数据库与指定的在模式匹配的表名。
#### .schema 如果指定了表名,则可以列出创建此表的SQL语句, 如果不指定表名, 则会列出当前数据库所有表的表结构(以SQL语句形式列出)
#### .read 后面跟文件名, 意思是读取文件里的SQL语句, 并执行。
关于SQL
sql结构化查询语言 对关系型数据库进行 定义 和 操作 的语言
不区分大小写
C(create table) R(read table)U(update table)D(delete table)
CRUD 增删改查
创建一张表:表名为Person
create table if not exists Person (id_P int ,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(50));
向表Person插入一条数据
insert into Person values (100,'Gates','Bill','xuanwumen 10','beijing');
insert into Person values (200,'Carter','Thomas','changanstreet','beijing');
从表Person中查询数据
select * from Person; //从表Peson里查询所有字段的所有数据
select LastName ,FirstName from Person ; //从表Peron里查义字段为LastName, FirsName的所有记录的数据。
select * from Person where LastName = 'Gates'; //根据指定的条件,从表Person里查询相对应的数据,where后面跟的就是条件。
从表Person中删除行数据
delete from Person where LastName='san'; //指的是将表Peson里LastName等san的这一行数据删除。
delete from Person //删表Person中的所有数据
delete * from Person //在标准SQL语句也表示删除表Person的所有数据。 但是在**sqlite**里不能使用这个种语方法。
删除表格
drop if exists table Person;//功能是删除整张表格
更新(更改)表Peson里的数据
update Person set Lastname='qingyun' where FirstName='Bill';//更新表Person FirstName='Bill' 这条数据的LastName为新值'qingyun'
update Person set LastName='henan' , FirstName='zhengzhou' where id_P = 200; //按照条件,id_P=200,修改这条数据的两个字段值,FirstName改为zhengzhou,LastName 改为'henan'
在SQLite数据库里, 更新表结构
alter table Person add Age int; //更新Person表结构, 功能是添加新的一列
注意的是:标准SQL里可以使用alert关键字来达到删除一列, 修改列名和列类型的功能。但是在SQLite环境里, 是不支持。
## DDL data definition Language数据定义语言
命令 描述
create 创建一个张新的表, 一个新的视图或者数据库里的其它对象
alter 修改数据库中的某个已有的数据库对象, 比如:可以修改一个表的结构
drop 删除整个表,删险视图,或者删除数据库中的其它数据库对象
## DML data manipulation language 数据操作语言
命令 描述
insert 创建或者说是插入一条新的记录
update 修改表中的记录
delete 删除表中的记录
## DQL data query language 数据查询语言
命令 描术
select 从一个表或者是多个表中检索某些记录。
//计算记录的数量
select count(*\字段) from 表名 where 条件 order by (地段名)desc(降序)\asc(升序)
//精确地控制查询的数量
select * from 表名 limit 数值A,数值B
跳过前面的A条数据,取出后面的B条数据 常用来进行分页查找 加入每页显示的数据是count条 则第N页查询时 是 select * from 表名 limit count*(N-1),count
##在iOS平台上使用数据库
使用一系列的数据接口
1 sqlite3 *pdb;数据库句柄,跟文件操作的FILE类似,对后续的数据库的操作,都会使用这个句柄
2 sqlite3_stmt *stmt;用于保存编译好的SQL语句
3 sqlite3_open();打开数据库
4 sqlite3_close();关闭数据库
5 sqlite3_exec();执行非查询类的SQL语句
6 sqlite3_prepare();
7 sqlite3_finalize(sqlite3_stmt *pSmt);