---恢復內容開始---
iOS有四種數據持久化的方式
1.屬性列表(plist文件)
2.對象歸檔(NSKeyedArchiver , NSKeyedUnarchiver)
//3.偏好設置(NSUserDefault)
4.SQLite 數據庫
5.CoreData
持久化方式的比較:
1.屬性列表、對象歸檔適合小數據量存儲和查詢操作
2.SQLite CoreData 適合大數據量的存儲和查詢操作
一、SQLite的使用
1.簡要說明: SQlite 是一個開源的、內嵌式的關系型數據庫。它是最初發布于2000年,在便攜性、易用性、緊湊型、有效性和可靠性方面有很大的突破;
2.SQLite數據庫結構簡單 ,適用于嵌入式 小型應用
二、SQL語句
數據定義語句(DDL :Data Definition Language)
? 其語句包括動詞Creat(創建表)Drop (刪除表)
數據操作語言(DML:Data Manipulation language)
其語句包括 Insert(插入行)、update(修改行)、delete (刪除)
數據查詢語句 (DQL : Data Query language)
其語句包括 select 用于查詢數據
詳細說明:
表的創建:?
creat table 表名 (字段名1 字段類型1,字段名2 字段類型2....);
creat table if not exists 表名 (字段名1 字段類型1,字段名2 字段類型2.......);
?實例: creat table t_student (id integer, name text,age integer);
刪表:
drop table 表名;
例: drop table t_person
SQLite 將數據的存儲劃分為以下幾種存儲類型:
1.NULL :表示該值為NULL值
2.INTEGER:無符號
?3.REAL :浮點值
4.TEXT :文本字符串
5.BOOL :二進制數據
簡單約束:
建表的時候可以給特定的字段設置一些約束條件 :
1. ?用not null 指定字段的值不能為空
2.用unique 指定字段的值必須唯一
3.用default 指定字段的默認值
實例: creat table t_student(id integer,name text not null unique,age integer not null ?default 1)
?表示: name 字段的值不能為空 ?,并且唯一
age 字段:的值為null ,并且默認值是1;
? ? DML 語句
插入數據(insert ?into)
?1.語法: insert into 表名 (字段一,字段二,。。。。。)values(值一,值二,。。。。。。)
2.舉例: insert into t_tudent(name,age)values(“peter”,“20”);
3.注意:數據庫的字符串的內容應該用單引號或是雙引號
更新數據(update)
1.語法: update 表名 set 字段1 = 字段1 的值 ,字段2 = 字段2的值;
2.舉例: update t_student set name = “peter”,age = 12;
3.注意:這里會將t_student中的所有記錄的名字全部改成peter ,年齡全部改成12;
刪除數據(delete)
1.語法 :delete from 表名
2.舉例: delete from t_student?
3.注意:這里會將t_student表中的記錄都刪掉
? ? ? ?條件語句
如果只想更新或者刪除某些固定的記錄,那就必須在DML語句后面加上一些條件限制
條件語句的格式如下:
1.where 字段 = ?某個值 and 字段 >某個值 //and 相當于&&
2.where 字段 = 某個值 or 字段 = 某個值 //or 相當于 ||
條件舉例:
1.將年齡大于10并且姓名不等于jack的記錄年齡都改為5;
update t_student age = 5 where age >10 and name != "jack";
2.刪除年齡小于等于 10 或年齡大于30 的記錄
delete from t_student where age <=10 or age>=30;
DQL語句 (查詢語句)
1.查詢格式:
select 字段一,字段二,from 表名;
select name,age,from t_student;
2.如果想查詢所有字段可以用:
select *from 表名;
select *from t_student;
3.也可以添加設置條件語句
select * from t_student where age>20;
4.計算記錄的數量 可以用count(字段)或者count(*)
select count(*)from t _student;
select count (age)from t_student where height <1.80;
5.排序語法:
1. 查詢出來的結果用order by 進行排序
select *from t_student order by 字段;
例:select *from t_student order by age;
2. ?默認情況下是按照升序進行排序的 (由小到大)
實例; select *from t_student order by age desc;//降序、
? select *from t_student order by age asc;//升序(默認的)
限制查詢數量:
select *from 表名 limit 數值1,數值2;
select *from t_student limit 4,8;
以上語法; 跳過前面的四條語句,然后取出8條記錄
主鍵約束: (primary key)
保證每條記錄的唯一性:
主鍵是唯一的標識某一條記錄的,可以是一個字段或是多個字段,比如t_student 可以增加一個id字段來作為主鍵,相當于人的身份證;
注意: 主鍵的設計原則;
1.主鍵應當是對用戶沒有用意義的
2.永遠不能更新主鍵;
3.主鍵不能包含動態變化的數據
4.主鍵應該有計算機自動生成
?