SQLite数据库介绍
1、数据持久化
· 数据持久化是通过文件将数据存储在磁盘上
· iOS下主要有四种数据持久化方式:
(1) 属性列表 (2) 对象归档 (3)SQLite数据库 (4)CoreData
2、数据库的相关概念
a) 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库;数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
b) SQLite是一款轻型的数据库,是一种关系型数据库管理系统,它的设计目的是嵌入式 设备中使用
c) SQLite占用资源非常低,适合移动设备中使用,而且是开源免费的
3、SQL语句
· 数据定义语言(DDL:Data Definition Language)
· 其语句包括动词CREATE和DROP
· 创建表、删除表
· 数据操作语言(DML:Data Manipulation Language)
· 其语句包括INSERT,UPDATE和DELETE,它们分别用于添加,修改和删除表中的行
· 数据查询语言(DQL:Data Query Language)
· 其语句包括SELECT,用于查询数据
1. DDL语句
// 创建一个数据表并打开
CREATE TABLE 表名(字段名1 字段类型1,字段名2 字段类型2);
// 如果数据表已存在就直接打开
CREATE TABLE if not exists 表名(字段名1 字段类型1,字段名2 字段类型2);
//代码示例
create table myTable(id integer, name text, age inetger);
// 删除数据表
drop table 表名;
2. DML语句
// 插入数据
insert into 表名(字段1,字段2) values(字段1的值,字段2的值);
如:insert into myTable(name, age) values(‘tom’, 10);
注意:数据库中的字符串内容应该用单引号''括住
// 更新数据
update 表名 set 字段1 = 字段1的值,字段2 = 字段2的值;
如:update myTable set name = ‘tom’, age = 20;
注意:这里会将myTable表中所有记录的name都改为tom,age都改为20
// 删除数据
delete from 表名;
如:delete from myTable;
注意:这里会将myTable表中所有记录都删掉
3. 条件DML语句
where 字段 = 某个值 or 字段 = 某个值;
4. DQL语句
1、查询格式:
select 字段1,字段2,...from 表名
select name, age from myTable;
2、查询所有的字段
select * from 表名;
select * from myTable;
3、添加条件语句
select * from myTable where age > 10;
4、计算记录的数量可以用count或者count(*)
select count(*) from myTable;
select count(age) from myTable where height < 1.60
5、查询排序
a) 查询出来的结果可以用order by进行排序
select * from myTable order by 字段;
如:select * from myTable order by age;
b) 默认是按照升序排列,也可以变为降序排列
如:select * from myTable order by age desc;
1、数据持久化
· 数据持久化是通过文件将数据存储在磁盘上
· iOS下主要有四种数据持久化方式:
(1) 属性列表 (2) 对象归档 (3)SQLite数据库 (4)CoreData
2、数据库的相关概念
a) 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库;数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
b) SQLite是一款轻型的数据库,是一种关系型数据库管理系统,它的设计目的是嵌入式 设备中使用
c) SQLite占用资源非常低,适合移动设备中使用,而且是开源免费的
3、SQL语句
· 数据定义语言(DDL:Data Definition Language)
· 其语句包括动词CREATE和DROP
· 创建表、删除表
· 数据操作语言(DML:Data Manipulation Language)
· 其语句包括INSERT,UPDATE和DELETE,它们分别用于添加,修改和删除表中的行
· 数据查询语言(DQL:Data Query Language)
· 其语句包括SELECT,用于查询数据
1. DDL语句
// 创建一个数据表并打开
CREATE TABLE 表名(字段名1 字段类型1,字段名2 字段类型2);
// 如果数据表已存在就直接打开
CREATE TABLE if not exists 表名(字段名1 字段类型1,字段名2 字段类型2);
//代码示例
create table myTable(id integer, name text, age inetger);
// 删除数据表
drop table 表名;
2. DML语句
// 插入数据
insert into 表名(字段1,字段2) values(字段1的值,字段2的值);
如:insert into myTable(name, age) values(‘tom’, 10);
注意:数据库中的字符串内容应该用单引号''括住
// 更新数据
update 表名 set 字段1 = 字段1的值,字段2 = 字段2的值;
如:update myTable set name = ‘tom’, age = 20;
注意:这里会将myTable表中所有记录的name都改为tom,age都改为20
// 删除数据
delete from 表名;
如:delete from myTable;
注意:这里会将myTable表中所有记录都删掉
3. 条件DML语句
如果只想更新或者删除某些固定的记录,那就必须在DML语句后加上一些条件
条件语句的格式如下:
where 字段 = 某个值 and 字段 > 某个值;where 字段 = 某个值 or 字段 = 某个值;
4. DQL语句
1、查询格式:
select 字段1,字段2,...from 表名
select name, age from myTable;
2、查询所有的字段
select * from 表名;
select * from myTable;
3、添加条件语句
select * from myTable where age > 10;
4、计算记录的数量可以用count或者count(*)
select count(*) from myTable;
select count(age) from myTable where height < 1.60
5、查询排序
a) 查询出来的结果可以用order by进行排序
select * from myTable order by 字段;
如:select * from myTable order by age;
b) 默认是按照升序排列,也可以变为降序排列
如:select * from myTable order by age desc;
select * from myTable order by age asc;
在xcode中使用数据库时需要引入:libsqlite3.0
-(void)createDataBase{
// 数据库的句柄对象
sqlite3 *sqlite = nil;
// 数据库文件路径
NSString *dbPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/myDataBase.db"];
int result = sqlite3_open([dbPath UTF8String], &sqlite);
// 判断是否打开了数据库
if (result != SQLITE_OK) {
NSLog(@"打开数据库失败");
}
// 创建一个数据表
NSString *createTable = @"CREATE TABLE myTable (id integer PRIMARY KEY,name text NOT NULL,sex text DEFAULT female,height float,eatMeat boolean)";
char *error = NULL;
// 定义执行结果
int excResult = sqlite3_exec(sqlite, [createTable UTF8String], NULL, NULL, &error);
// 判断创建语句是否执行
if (excResult !=SQLITE_OK) {
// 打印提示语句
NSLog(@"执行创建数据表的语句失败");
return;
}
//4 关闭数据库
sqlite3_close(sqlite);
}