SQLite的一点学习心得,SQLite学习心得
1.主键的设计原则: (1)主键应当对用户是没有意义的 (2)永远不要更新主键 (3)主键不应包含动态变化的数据 (4)主键应当由计算机自动生成2. 创建表 CREATETABLE if not exists userList
(username text NOT NULL UNIQUE,
password text NOT NULL,
age text DEFAULT 18,
id integer NOT NULL PRIMARY KEY UNIQUE, sex boolean) 删除表 droptable userList
3.绑定数据要放在准备执行语句前才能使用 否则会出错 sqlite3_prepare_v2(_sqlite, [statement UTF8String], -1, &stmt, NULL);
4.SQL表连接查询(inner join(内连接)、full join、left join、right join) http://www.cnblogs.com/still-windows7/archive/2012/10/22/2734613.html
5.SQLite 优化方法 建表优化 查询性能优化等 http://www.cnblogs.com/devinzhang/archive/2012/01/16/2323949.html
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.查询两个表的时候 可以使用自己的表点出属性 也可以重命名后点出属性 selectt_movie.id,t_movie.name,t_movie.dir_idfrom 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中写入,如果有就会接着向再上一层的父级查找
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。