IOS SQLLite操作(一)

iOS应用数据存取的常用方式

•XML属性列表 —— PList

•NSKeyedArchiver 归档

•Preference(偏好设置)

•SQLite3

•Core Data

DDL语句

•创表

CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2, …);

CREATE TABLE if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, …);

create table t_person (id integer, name text, age inetger);

•删表

drop table 表名;

drop table t_person;

字段类型

•SQLite将数据值的存储划分为以下几种存储类型:

•NULL: 表示该值为NULL值

•INTEGER: 无符号整型值

•REAL: 浮点值

•TEXT: 文本字符串

•BLOB: 二进制数据(比如文件)

•实际上SQLite是无类型的,建表时声明或不声明类型都可以,也就意味着创表语句可以这么写:

create table t_student(name, age);

•注意:为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型

DML语句

•插入数据(insert)

insert into 表名(字段1, 字段2, …) values(字段1的值, 字段2的值, …);

insert into t_person(name, age) values(‘mj’, 10);

•注意:数据库中的字符串内容应该用单引号’括住

•更新数据(update)

update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值, … ;

update t_person set name = ‘jack’, age = 20;

•注意:这里会将t_person表中所有记录的name都改为jack,age都改为20

•删除数据(delete)

delete from 表名;

delete from t_person;

•注意:这里会将t_person表中所有记录都删掉

条件语句  

•如果只想更新或者删除某些固定的记录,那就必须在DML语句后加上一些条件

•条件语句的格式如下:

where 字段 = 某个值 and 字段 > 某个值;  // and相当于 &&

where 字段 = 某个值 or 字段 = 某个值;   // or相当于 ||

•实例

•将年龄大于10并且姓名不等于jack的记录年龄都改为5

update t_person set age = 5 where age > 10 and name != ‘jack’;

•删除年龄小于等于10或者年龄大于30的记录

delete from t_person where age <= 10 or age > 30;

DQL语句

•DQL语句就是查询语句,格式如下:

select 字段1, 字段2, … from 表名;

select name, age from t_peron;

•如果想查询所有的字段可以用:

select * from 表名;

select * from t_person;

•也可以添加条件语句

select * from t_person where age > 10;

•计算记录的数量可以用count(字段)或者count(*)

select count(*) from t_person;

select count(age) from t_person where height < 1.66;

排序

•查询出来的结果可以用order by进行排序

select * from t_person order by 字段;

select * from t_person order by age;

•默认是按照升序排序(由小到大),也可以变为降序(由大到小)

select * from t_person order by age desc; // 降序

select * from t_person order by age asc;  // 升序(默认)

•也可以用多个字段进行排序

select * from t_person order by age asc,height desc;

先按照年龄排序(升序),年龄相等就按照身高排序(降序)

限制查询数量

select * from 表名 limit 数值1, 数值2;

select * from t_person limit 4, 8;

•上面的语句,可以这么理解:

•跳过最前面4条语句,然后取8条记录

•limit常用来做分页查询,比如每页固定显示6条数据,那么每一页应该这样取数据:

第1页:limit 0, 6

第2页:limit 6, 6

第3页:limit 12, 6

第n页:limit 6*(n-1), 6

select * from t_person limit 7;

•表示取最前面的7条记录

简单约束

•建表的时候可以给特定的字段 设置 一些约束条件

1:用not null指定字段的值不能为null

2:用unique指定字段的值必须唯一

3:用default指定字段的默认值

CREATE TABLE t_student (id integer, name text NOT NULL UNIQUE, age integer NOT NULL DEFAULT 1);

1:name字段不能为NULL,并且唯一

2:age字段不能为NULL,并且默认为1

主键约束(PK)

•当t_person中有些记录的name属性和age属性都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据

•良好的数据库编程规范应该是要保证每条记录的唯一性,为此,增加了主键约束

•主键是用来唯一地标识某一条记录的,可以是一个字段或多个字段

•比如t_person可以增加一个id字段作为主键,相当于人的身份证

•主键的设计原则:

1:主键应当是对用户没有意义的

2:永远也不要更新主键

3:主键不应包含动态变化的数据

4:主键应当由计算机自动生成

•在创表的时候用primary key声明一个主键

CREATE TABLE t_student (id integer PRIMARY KEY,name text,age integer);

•只要声明为primary key,就说明是一个主键字段,主键字段默认就包含了not null 和 unique 两个约束

•如果想要让主键自动增长(integer类型),应该增加autoincrement

CREATE TABLE t_student (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer);

外键约束(FK)

•外键约束可以用来建立表与表之间的联系

•新建一个外键

CREATE TABLE t_student (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer,book_id integer REFERENCES t_book(id));

t_student表中有一个外键book_id引用着t_book的主键id

时间: 2024-11-05 18:38:07

IOS SQLLite操作(一)的相关文章

IOS SQLLite操作(二)

•SQLite3是一款开源的嵌入式关系型数据库,可移植性好.易使用.内存开销小 •SQLite3是无类型的,意味着可以保存任何类型的数据到任意表的任意字段中.比如下列的创表语句是合法的: CREATE TABLE t_person(name, age); •为了保证可读性,建议还是把字段类型加上: CREATE TABLE t_person(name text, age integer); •SQLite3常用的5种数据类型:text.integer.float.boolean.blob •在i

iOS 数据库操作(使用FMDB)

iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包.

iOS——文件操作NSFileManager (创建、删除,复制,粘贴)

iOS——文件操作NSFileManager (创建.删除,复制,粘贴) iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.               上面的完整路径为:用户->资源库->Applicat

iOS数据库操作之coredata详细操作步骤

CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong iOS应用数据存取的常用方式 ? XML属性列表 -- PList? NSKeyedArchiver 归档 ?Preference(偏好设置) ? SQLite3? Core DataCore Data简介 ? Core Data 是iOS SDK 里的一个很强大的

iOS文件操作一览

1.常见的NSFileManager文件方法 2.常见的NSFileManager目录方法 3.常用的路径工具方法 4.常用的路径工具函数 5.NSProcessInfo类方法 6.常用的NSFileHandle方法 [附]iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立.封闭.安全的空间,叫做沙盒.它一般存放着程序包文件(可执行文件).图片.音频.视频.plist文件.sqlite数据库以及其他文件. 每个应用程序都有自己的独立的存储空间(沙盒) 一般来说应用程序之

iOS手势操作,拖动,轻击,捏合,旋转,长按,自定义(http://www.cnblogs.com/huangjianwu/p/4675648.html)

1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作. UIPanGestureRecognizer(拖动) UIPinchGestureRecognizer(捏合) UIRotationGestureRecognizer(旋转) UITapGestureRecognizer(点按) UILo

IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)

IOS对文件操作包含文件的创建,读写,移动,删除等操作. 1.文件的创建: //设定文本框存储文件的位置 NSString *strFilePath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; //指定存储文件的文件名 NSString *fileName=[strFilePath stringByAppendingPathComponent:@

ios多线程操作(一)—— 多线程基础与原理

一.进程 进程是指在系统中正在运行的一个应用程序,每个进程之间都是独立的,每个进程都运行在其专用且受保护的内存空间内 二.线程 一个进程要想执行任务就必须要有线程,每一个进程至少都要有一条线程. 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行. 线程又分为主线程和子线程: 主线程:一个ios程序运行后,默认会开启一条线程,称为"主线程"或"UI线程",ios上任何UI的操作都在主线程上执行 子线程:除主线程外进程中得其他线程,程序中一般都将耗时的操作添加

iOS数据库操作(使用FMDB)

iOS学习笔记(十六)——数据库操作(使用FMDB) 分类: iOS开发 2013-07-15 23:19 8655人阅读 评论(5) 收藏 举报 目录(?)[+] iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一