0426 FMDB && SQLite詳細(xì)小結(jié)



創(chuàng)建數(shù)據(jù)庫(kù)

// 第一種方法: 簡(jiǎn)單設(shè)置路徑

FMDatabase*db = [FMDatabasedatabaseWithPath:@"/tmp/timeRecord.db"];

//

第二種方法 指定路徑

//paths:ios下Document路徑,Document為ios中可讀寫的文件夾

NSArray*paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*documentDirectory = [pathsobjectAtIndex:0];

//_dbPath:數(shù)據(jù)庫(kù)路徑,在Document中。

_dbPath= [documentDirectorystringByAppendingPathComponent:@"timeRecord.db"];//這里寫的是文件名,如果沒(méi)有會(huì)自動(dòng)創(chuàng)建,別寫成第一種方法的路徑名稱了。

FMDatabase*db = [FMDatabasedatabaseWithPath:_dbPath];

數(shù)據(jù)庫(kù)db操作的兩種方式

查詢數(shù)據(jù)的方法

[db

executeQuery:@"SELECT

number,time FROM time_record"];

除查詢數(shù)據(jù)以外的其它操作

[dbexecuteUpdate:@"INSERT

INTO time_record(number,time) VALUES (?,?)",_timeModel.number,_timeModel.time];

SQLite語(yǔ)句

創(chuàng)表存儲(chǔ)的四種格式

integer : 整型值

real : 浮點(diǎn)值

text :

文本字符串

blob :

二進(jìn)制數(shù)據(jù)(比如文件)

創(chuàng)表的語(yǔ)句

[db executeUpdate:@"CREATE

TABLE IF NOT EXISTS time_record(rowid interger PRIMARY KEY,number text NOT NULL,time text NOT NULL)"];

刪表的語(yǔ)句

DROP TABLE IF EXISTS time_record

插入數(shù)據(jù)的語(yǔ)句

[dbexecuteUpdate:@"INSERT

INTO time_record(number,time) VALUES (?,?)",_timeModel.number,_timeModel.time];

更新數(shù)據(jù)的語(yǔ)句

UPDATE t_student SET name = ‘jack’, age = 20 WHERE age < 30 ; //會(huì)將所有小于30歲的記錄的名字都改成jack

刪除數(shù)據(jù)的語(yǔ)句

DELETE FROM t_student WHERE age > 30;//如果沒(méi)有后面的限制條件,會(huì)將整張表刪除。

查詢數(shù)據(jù)的語(yǔ)句

FMResultSet *rs = [db executeQuery:@"SELECT

number,time FROM time_record"];

select * from 表名;//查詢所有的字段

條件語(yǔ)句常見的格式

where字段=某個(gè)值;//不能用兩個(gè)=

where字段is某個(gè)值;//is相當(dāng)于=

where字段!=某個(gè)值;

where字段isnot某個(gè)值;//isnot相當(dāng)于!=

where字段>某個(gè)值;

where字段1=某個(gè)值and字段2>某個(gè)值;//and相當(dāng)于C語(yǔ)言中的&&

where字段1=某個(gè)值or字段2=某個(gè)值;//or相當(dāng)于C語(yǔ)言中的

||

FMResultSet *rs = [db executeQuery:@"SELECT

number,time FROM time_record"];

[dbbeginTransaction];

[dbcommit];

[dbclose];

[_tableViewreloadData];//如果是_tableView需要刷新一下,這句不能漏

起別名的格式(字段和表都可以起別名)

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

select

name myname, age myage from t_student ;

給name起個(gè)叫做myname的別名,給age起個(gè)叫做myage的別名

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

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

select s.name,

s.age from t_student s ;

給t_student表起個(gè)別名叫做s,利用s來(lái)引用表中的字段

計(jì)算記錄的數(shù)量

select count (字段) from 表名 ;

select count (age)

from t_student ;

selectcount(*)from表名;

select count ( * ) from

t_student where

score >= 60;

對(duì)查詢出來(lái)的結(jié)果用ORDER BY進(jìn)行排序

select * from

t_student order by 字段 ;

select*fromt_studentorder byage;

select*fromt_studentorder byageasc;//升序(默認(rèn))

也可以用多個(gè)字段進(jìn)行排序

select * from

t_student order by age asc, height

desc ;//先按照年齡排序(升序),年齡相等就按照身高排序(降序)

使用limit可以精確地控制查詢結(jié)果的數(shù)量,比如每次只查詢10條數(shù)據(jù),用于翻頁(yè)

select * from 表名 limit 數(shù)值1, 數(shù)值2 ;

select * from

t_student limit 4,

8 ;//可以理解為:跳過(guò)最前面4條語(yǔ)句,然后取8條記錄

limit常用來(lái)做分頁(yè)查詢,比如每頁(yè)固定顯示5條數(shù)據(jù),那么應(yīng)該這樣取數(shù)據(jù)

第1頁(yè):limit 0, 5

第2頁(yè):limit 5, 5

第3頁(yè):limit 10, 5

第n頁(yè):limit 5*(n-1), 5

select*fromt_studentlimit7;

相當(dāng)于select*fromt_studentlimit0, 7;

創(chuàng)表簡(jiǎn)單的約束

not null :規(guī)定字段的值不能為null

unique:規(guī)定字段的值必須唯一

default:指定字段的默認(rèn)值

示例

create table t_student

(id integer PRIMARY KEY

AUTOINCREMENT, name text not null unique,

age integer not null default 1) ;

name字段不能為null,并且唯一

age字段不能為null,并且默認(rèn)為1

主鍵字段默認(rèn)就包含了not null 和 unique 兩個(gè)約束

如果想要讓主鍵自動(dòng)增長(zhǎng)(必須是integer類型),應(yīng)該增加autoincrement

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 50個(gè)常用的sql語(yǔ)句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,334評(píng)論 0 7
  • 什么是SQLite?數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的步驟 ●SQLite是一款輕型的嵌入式數(shù)據(jù)庫(kù),它占用資源非常的低,在嵌入式設(shè)備...
    飛行的貓閱讀 2,602評(píng)論 1 7
  • SQLite基礎(chǔ) 1.簡(jiǎn)介 iOS數(shù)據(jù)數(shù)據(jù)存儲(chǔ)的方式Plist(NSArray\NSDictionary)Pref...
    小盒盒閱讀 798評(píng)論 1 11
  • iOS中的數(shù)據(jù)存儲(chǔ)方式 Plist(NSArray\NSDictionary) Preference(偏好設(shè)置\N...
    JonesCxy閱讀 784評(píng)論 0 3
  • 什么是SQL數(shù)據(jù)庫(kù): SQL是Structured Query Language(結(jié)構(gòu)化查詢語(yǔ)言)的縮寫。SQL是...
    西貝巴巴閱讀 1,996評(píng)論 0 10

友情鏈接更多精彩內(nèi)容