1.主键的设计原则:
(1)主键应当对用户是没有意义的
(2)永远不要更新主键
(3)主键不应包含动态变化的数据
(4)主键应当由计算机自动生成
2.
创建表
CREATE
TABLE
if
not
exists
userList
(username text NOT NULL UNIQUE ,
password text NOT NULL ,
age text DEFAULT 18,
id integer NOT NULL PRIMARY KEY UNIQUE ,
(username text NOT NULL UNIQUE ,
password text NOT NULL ,
age text DEFAULT 18,
id integer NOT NULL PRIMARY KEY UNIQUE ,
sex boolean)
删除表
drop
table
userList
3.绑定数据要放在准备执行语句前才能使用 否则会出错
sqlite3_prepare_v2
(
_sqlite
, [statement
UTF8String
], -
1
, &stmt,
NULL
);
4.SQL表连接查询
(inner join(内连接)、full join、left join、right join)
5.SQLite 优化方法 建表优化 查询性能优化等
6.数据持久化方法 四种方式
小批量数据:
1.plist文件 属性列表(数组或者字典中只有装NSString NSData NSNumber NSDictionary NSArray才能写文件)
2.创建的各种对象 对象归档(
使用NSKeyedArichiver进行归档、NSKeyedUnarchiver进行接档)
http://www.cnblogs.com/ios8/p/ios-archive.html
大批量数据:
1.SQLite数据库 每个属性名(字段) 每条数据(记录)
2.CoreData 不是数据库 会以数据库和xml的方式存储
7.SQLite 中如果是很多条数据 可以多线程进行分页查询 提高效率
第1页: limit 0,6
第2页: limit 6,6
...
第n页 limit 6*(n-1),6
8.当主键为两个字段时 系统就不会默认自己加1了
9.查询两个表的时候 可以使用自己的表点出属性 也可以重命名后点出属性
select
t_movie.id,t_movie.name,t_movie.dir_id
from
t_movie
join
t_director b
on
t_movie.dir_id = b.id
where
t_movie.name = 'you';
10.用代码直接操作数据库时应当注意 原本的字符串是有’单引号’的
11.防止数据库注入(将输入的值输成sql语句修改我的数据库)的安全问题处理办法 进行预编译 将sql语句提前编译成二进制
12.sqlite的model 的生成方法 可以直接找到这个文件
13.CoreData多线程安全的原理
通过 setParentContext 方法,可以设置另外一个 NSManagedObjectContext 为自己的父级,这个时候子级可以访问父级下所有的对象,而且子级 NSManagedObjectContext 的内容变化后,如果执行save方法,会自动的 merge 到父级 NSManagedObjectContext 中,也就是子级save后,变动会同步到父级 NSManagedObjectContext。当然这个时候父级也必须再save一次,如果父级没有父级了,那么就会直接向NSPersistentStoreCoordinator中写入,如果有就会接着向再上一层的父级查找
本文分享了SQLite数据库的学习心得,包括主键设计原则、创建与删除表、数据绑定、表连接查询、优化方法、数据持久化方式以及多线程查询和安全问题处理。还提到了防止SQL注入的方法和CoreData的多线程安全原理。

849

被折叠的 条评论
为什么被折叠?



