SQlite資料庫相關語法知識

2022-08-05 03:51:15 字數 3141 閱讀 4628

sql語句的特點:不區分大小寫(比如資料庫認為user和user是一樣的)

每條語句都必須以分號 ; 結尾

sql中的常用關鍵字有:select、insert、update、delete、from、create、where、desc、order、by、group、table、  

alter、view、index等等

資料庫中不可以使用關鍵字來命名表、字段

•1、sqlite3是一款開源的嵌入式關係型資料庫,可移植性好、易使用、記憶體開銷比較小

sqlite3是無型別的,意味著你可以儲存任何型別的資料到任意表的任意欄位中

2、 sqlite3常用的5種資料型別:text(文字)、integer(整型)、real(浮點值)、blob(二進位制)

3、 在ios中使用sqlite3,首先要新增庫檔案libsqlite3.dylib和匯入主標頭檔案

4、 建立或開啟資料庫

// path為:~/documents/person.db

sqlite3 *db;

int  result = sqlite3_open([path utf8string], &db);

**解析:sqlite3_open()將根據檔案路徑開啟資料庫,如果不存在,則會建立乙個新的資料庫。如果result等於常量sqlite_ok,則表示成功開啟資料庫。資料庫檔案的路徑必須以c字串(而非nsstring)傳入

關閉資料庫:sqlite3_close(db);

5、執行創表語句

char *errormsg;  // 用來儲存錯誤資訊 

char *sql = "create table if not exists t_person(id integer primary key autoincrement, name text, age integer);";

int result = sqlite3_exec(db, sql, null, null, &errormsg);

**解析:sqlite3_exec()可以執行任何sql語句,比如創表、更新、插入和刪除操作。但是一般不用它執行查詢語句,因為它不會返回查詢到的資料

sqlite3_exec()還可以執行的語句:

①開啟事務:begin transaction;

②回滾事務:rollback;

③提交事務:commit;

6、基本操作

①建立表:

(1) table if not exists 表名 (欄位名1 字段型別1, 欄位名2 字段型別2, …) ;

(2)create table 表名 (欄位名1 字段型別1, 欄位名2 字段型別2, …) ;

特別說明:(1)就算宣告為integer型別,還是能儲存字串文字(主鍵除外)

(2)建表時宣告啥型別或者不宣告型別都可以,也就意味著創表語句可 以這麼寫:create table t_student(name, age);(為了保持良好的程式設計規範、方便程式設計師之間的交流,編寫建表語句的時候最好加上每個欄位的具體型別)

②刪除表:

(1)drop table 表名 ;

(2)drop table if exists 表名 ;

③插入資料:

insert into 表名 (欄位1, 欄位2, …) values (欄位1的值, 欄位2的值, …) ;

注意:資料庫中的字串內容應該用單引號 』 括住

④更新資料:

update 表名 set 欄位1 = 欄位1的值, 欄位2 = 欄位2的值, … ;

⑤刪除資料:

delete from 表名 ;

⑥條件語句的常見格式:

where 字段 = 某個值 ;   // 不能用兩個 =

where 字段 is 某個值 ;   // is 相當於 =

where 字段 != 某個值 ;

where 字段 is not 某個值 ;   // is not 相當於 !=

where 字段 > 某個值 ;

where 欄位1 = 某個值 and 欄位2 > 某個值 ;  // and相當於c語言中的 &&

where 欄位1 = 某個值 or 欄位2 = 某個值 ;  //  or 相當於c語言中的 ||

⑦查詢語句:

select 欄位1, 欄位2, … from 表名 ;

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

⑧起別名:格式(欄位和表都可以起別名)

select 欄位1 別名 , 欄位2 別名 , … from 表名 別名 ;

select 欄位1 別名, 欄位2 as 別名, … from 表名 as 別名 ;

select 別名.欄位1, 別名.欄位2, … from 表名 別名 ;

⑨計算記錄的數量:格式

select count (字段) from 表名 ;

select count ( * ) from 表名 ;

⑩排序:

查詢出來的結果可以用order by進行排序

select * from t_student order by 字段 ;

select * from t_student order by age ;

預設是按照公升序排序(由小到大),也可以變為降序(由大到小)

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

select * from t_student order by age asc ;   // 公升序(預設)

也可以用多個字段進行排序

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

先按照年齡排序(公升序),年齡相等就按

7、limit:使用limit可以精確地控制查詢結果的數量,比如每次只查詢10條資料

格式:select * from 表名 limit 數值1, 數值2 ;

示例:select * from t_student limit 4, 8 ;(可以理解為:跳過最前面4條語句,然後取8條記錄)

8、建表的約束:

建表時可以給特定的字段設定一些約束條件,常見的約束有

not null :規定欄位的值不能為null

unique :規定欄位的值必須唯一

default :指定欄位的預設值(建議:盡量給字段設定嚴格的約束,以保證資料的規範性)

資料庫相關知識

1儲存過程和函式的區別 儲存過程是使用者定義的一系列sql語句的集合,涉及特定表或其它物件的任務,使用者可以呼叫儲存過程,而函式通常是資料庫已定義的方法,它接收引數並返回某種型別的值並且不涉及特定使用者表。1.事務是什麼?事務是作為乙個邏輯單元執行的一系列操作,乙個邏輯工作單元必須有四個屬性,稱為 ...

資料庫相關知識

innodb和myisam資料庫引擎的區別 對比項innodb myisam事務 外來鍵 索引聚集索引,使用b tree作為索引結構,資料檔案是和 主鍵 索引綁在一起,5.7以前的innodb不支援全文索引支援全文索引,在涉及全文索引領域的查詢效率上myisam速度更快高 主鍵必須有主鍵 使用者沒有...

SQLite3資料庫操作語法

sql的指令格式 所以的sql指令都是以分號 結尾的。如果遇到兩個減號 則代表註解,sqlite3會略過去。建立資料表 假設我們要建乙個名叫film的資料表,只要鍵入以下指令就可以了 create table film title,length,year,starring 這樣我們就建立了乙個名叫f...