系統(tǒng)原生
主鍵能保證當(dāng)前數(shù)據(jù)的唯一性
-
創(chuàng)建表設(shè)置主鍵 : (DDL語句)
- CREATE TABLE IF NOT EXISTS T_Person(
id integer PRIMARY KEY AUTOINCREMENT這是為主鍵并自增長
,
name text,
age integer
);
- CREATE TABLE IF NOT EXISTS T_Person(
-
刪除表 刪除指定表明的表,判斷是否存在(存在在刪除)
- DROP TABLE IF EXISTS T_Person;
插入數(shù)據(jù) (DML語句)
insert into T_Person
(name,age)
VALUES
('張三',18);更新數(shù)據(jù) (這樣更新的話會更新表里的全部條數(shù)的值)
update T_Person SET name = '期望';
- 刪除表 (沒有告訴他需要刪除那一條記錄逊朽,會刪除所有數(shù)據(jù))
- DELETE FROM T_Person
- 判斷語句
- where 相當(dāng)于OC中的if
- 更新指定的數(shù)據(jù) (更新表里面年齡等于50的數(shù)據(jù))
- UPDATE T_Person SET name = '任務(wù)' WHERE age = 50;
查詢語句 (DQL語句) (* 代表查詢所有數(shù)據(jù)) 默認查詢所有數(shù)據(jù) 使用WHERE可以進行判斷
select * from T_Person
起別名
name as screenName 給name起別名
如果查詢多張表的時候表明可以使用
逗號
分割給表起別名可以使用點語法確定屬性
統(tǒng)計
SELECT COUNT(字段名) FROM T_Person
排序
ORDER BY 默認是升序
ASC 升序
DESC 降序
SELECT * FROM T_Person ORDER BY age ASC
分頁查詢
SELECT * FROM T_Person limit 5*(n-1),5
簡單的約束
NOT NULL 設(shè)置約束 不能等于空
UNIQUE 規(guī)定當(dāng)前字段必須保持唯一
DEFAULT 指定一個默認的值
FMDB的使用
- FMDatabase 單條線程時候使用
- FMDatabaseQueue 多條線程搶奪同一資源時候使用
- FMResultSet 查詢的時候使用
- 創(chuàng)建數(shù)據(jù)庫
_db = [FMDatabase databaseWithPath:filePath];
- 創(chuàng)建表
-
[_db executeUpdate:@"create table if not exists t_person(id integer primary key,name text not null,age integer)"]
返回一個BOOL值 - 插入數(shù)據(jù)
-
[_db executeUpdateWithFormat:@"insert into t_person(name,age) values('%@',%@)", person.name, person.age]
可以拼接參數(shù) -
[_db executeUpdate:]
不可以拼接參數(shù) - 查找數(shù)據(jù)
-
FMResultSet *result = [_db executeQuery:@"select name,age from t_person"];
返回一個結(jié)果 -
[result next]
判斷條件,知道沒有數(shù)控返回NO -
[result stringForColumn:@"name"];
字符串使用 -
[result intForColumn:@"age"];
int類型使用 - 模糊查找
不能使用系統(tǒng)提供的拼接方法會出現(xiàn)問題,要自己調(diào)用字符串方法
注意如果要獲取字符串類型的話一定不要忘記加*' '*
[_db executeQuery:[NSString stringWithFormat:@"select name,age from t_person where name like '%%%@%%'", str]];
- SQLite如果使用多線程同時保存數(shù)據(jù)的時候,會出現(xiàn)崩潰,或是只能存一條.
- 使用FMDB的FMDatebaseQueue類創(chuàng)建一個全局的單例來保證線程安全