数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数据库可以分为2大种类:关系型数据库(主流)和对象型数据库。数据库的特征是以一定方式存储在一起、能为多个用户分享,具有尽可能少的冗余代码,与程序彼此独立的数据集。
数据库的存储结构和excel很像,以表(table)为单位,一般步骤是:
(1)新建一张表(table)
(2)添加多个字段(column, 列, 属性)
(3)添加多行记录(row, 每行存放多个字段对应的值)
不区分大小写,每条语句都必须以分号 ‘; ’结尾。
常用的关键字有:select、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等等。数据库中不可以使用关键字来命名表、字段。
字段的约束条件包括:
not null —–非空
unique ——唯一
primary key ——主键
foreign key ———外键
check ———条件检查,确保一列中所有的值满足一定条件
default ——默认
autoincrement — 自增型变量,该字段数据如果为整型可以自动加1
SQLite
手机上常用的数据库是SQLite,SQLite是一个轻量级关系数据库,也是一款轻型的嵌入式数据库,最初的设计目标就是用于嵌入式系统,它占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就够了。它的处理速度比MySQL、PostgreSQL这两款著名的数据库都还快。
表面上SQLite将数据分为以下几种类型:integer : 整数、real : 实数(浮点数)、text : 文本字符串、blob : 二进制数据,比如文件,图片之类的。实际上SQLite是无类型的,可以保存任何类型的数据,对于SQLite来说对字段不指定类型是完全有效的。即不管你在创表时指定的字段类型是什么,存储时依然可以存储任意类型的数据。而且在创表时也可以不指定字段类型。SQLite之所以设置类型就是为了良好的编程规范和方便开发人员交流,所以平时在使用时最好设置正确的字段类型!如主键设置成integer等。
一些需要的关注点是,数据表中每一条记录都有一个主键,这就像我们的身份证号码等,反过来说每一个主键对应着一条数据记录,所以,主键必须是唯一的。其次,一般情况主键同时也是一个索引,所以通过主键查找记录速度比较快。第三,在关系类型库中,一个表的主键可以作为另外一个表的外键,这样,这两个表之间就通过这个键建立了关系。最后,主键一般是整数或者字符串,只要保证唯一就行。在SQLite中,主键如果是整型类型,该列的值可以自动增长。
使用
在一般开发过程中,使用的都是第三方开源库 FMDB,封装了基本的c语言方法,使得我们在使用时更加容易理解,提高开发效率。FMDB有三个主要的类:FMDatabase,一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句。FMResultSet,使用FMDatabase执行查询后的结果集。FMDatabaseQueue,用于在多线程中执行多个查询或更新,它是线程安全的。
后期会单独分析下FMDB的源码,这里就不再做过多的讲解了。